00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:04:03  * loladiroquit (Quit: loladiro)
00:07:40  * mikealquit (Quit: Leaving.)
00:26:02  * mikealjoined
00:32:27  * mikealquit (Quit: Leaving.)
00:39:31  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
00:57:09  * ArmyOfBrucequit (Excess Flood)
00:57:40  * ArmyOfBrucejoined
00:59:28  * ArmyOfBrucequit (Excess Flood)
00:59:59  * ArmyOfBrucejoined
01:24:03  * ArmyOfBrucequit (Excess Flood)
01:24:33  * ArmyOfBrucejoined
01:26:51  * loladirojoined
01:32:33  * EhevuTovquit (Quit: This computer has gone to sleep)
01:33:26  * EhevuTovjoined
01:38:29  * EhevuTovquit (Ping timeout: 248 seconds)
01:40:20  * abraxasjoined
01:40:47  * AvianFluchanged nick to SushianFlu
01:46:22  * mjr_joined
01:59:33  * loladiroquit (Read error: Connection reset by peer)
01:59:52  * loladirojoined
02:01:48  * dapquit (Quit: Leaving.)
02:02:55  * benoitcquit (Excess Flood)
02:09:28  * benoitcjoined
02:20:18  * SushianFluchanged nick to AvianFlu
02:42:16  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
03:07:48  * benoitcquit (Excess Flood)
03:16:28  * benoitcjoined
03:40:32  * loladiroquit (Quit: loladiro)
03:50:52  * loladirojoined
03:52:35  * brsonquit (Ping timeout: 252 seconds)
04:08:10  * benoitcquit (Excess Flood)
04:09:28  * benoitcjoined
04:26:04  * piscisaureus_joined
04:35:49  * bnoordhuisjoined
04:38:01  <bnoordhuis>morning
04:38:09  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
05:08:32  * benoitcquit (Excess Flood)
05:08:46  * jmar777joined
05:16:00  * benoitcjoined
05:17:06  * jmar777quit (Remote host closed the connection)
05:19:11  * jmar777joined
05:24:27  * jmar777quit (Remote host closed the connection)
05:37:28  * bradleymeckjoined
05:37:55  * bradleymeckquit (Client Quit)
06:05:14  * EhevuTovjoined
06:08:54  * benoitcquit (Excess Flood)
06:14:00  * benoitcjoined
06:32:30  * benoitcquit (Excess Flood)
06:36:31  * benoitcjoined
06:42:02  * kristatejoined
06:58:58  * felixgejoined
06:58:58  * felixgequit (Changing host)
06:58:58  * felixgejoined
07:12:44  <indutny>bnoordhuis: morning
07:14:46  * warzquit
07:33:47  * rendarjoined
08:00:35  * mikealjoined
08:13:24  <bnoordhuis>indutny: morning fedor
08:14:18  <indutny>bnoordhuis: so about select() stuff
08:14:33  <bnoordhuis>indutny: what about it?
08:14:37  <indutny>err
08:14:38  <indutny>https://github.com/joyent/libuv/pull/622
08:14:40  <indutny>the same :)
08:15:13  <bnoordhuis>want me to review it again?
08:15:55  <indutny>yes
08:16:08  <indutny>I'm especially worried about returning EAGAIN
08:16:16  <indutny>so please take a look at code
08:16:28  <indutny>and let me know what you think about returning EAGAIN in such cases
08:21:43  <bnoordhuis>indutny: i mentioned that yesterday, didn't i?
08:21:54  <bnoordhuis>as in, why mask the actual error with EAGAIN?
08:24:21  <bnoordhuis>indutny: btw, https://github.com/joyent/node/issues/4386
08:24:23  <indutny>well
08:24:32  <indutny>what do you think it should be instead?
08:24:37  <indutny>ok
08:24:39  <bnoordhuis>indutny: the actual error
08:24:43  <indutny>how to get it?
08:24:58  <bnoordhuis>indutny: return uv__set_sys_error(loop, errno)
08:25:13  <indutny>why do you think errno contains anything useful?
08:25:49  <bnoordhuis>indutny: what makes you think it doesn't?
08:26:08  <indutny>well, uv_async_init does some stuff that probably doesn't
08:26:10  <indutny>let me check
08:26:27  <bnoordhuis>indutny: let's make sure we're on the same page here
08:26:32  <indutny>ah
08:26:34  <indutny>it doesn't
08:26:35  <indutny>ok
08:26:43  <bnoordhuis>this is about the error path in uv__stream_init where kqueue() fails due to EMFILE or what have you
08:27:02  <indutny>no
08:27:03  <indutny>not about this
08:27:22  <bnoordhuis>okay, what then?
08:27:52  <indutny>there're a lot of other initialization in that method
08:28:03  <indutny>like initializing semaphore, mutex, async handle
08:28:18  <indutny>and if one fails - whole method will fail
08:28:54  <indutny>ok, anyway
08:28:57  <indutny>I've updated patch
08:29:00  <indutny>please check it
08:29:05  <indutny>bnoordhuis: ^
08:29:11  <indutny>while I'll read yours
08:29:12  <indutny>;)
08:31:19  * mjr_quit (Quit: mjr_)
08:31:38  <indutny>bnoordhuis: commented https://github.com/joyent/node/pull/4386
08:38:32  <bnoordhuis>indutny: i'm off to do the groceries, back in an hour or so
08:38:34  * EhevuTovquit (Quit: This computer has gone to sleep)
08:38:36  <indutny>ok
08:38:37  <bnoordhuis>provided i don't get snowed in
08:38:41  <indutny>haha
08:38:44  <indutny>is it snowy in NL?
08:38:46  <bnoordhuis>yep
08:39:03  <indutny>oh
08:39:08  * EhevuTovjoined
08:39:09  <indutny>it's very snowy in Moscow too
08:39:20  <indutny>I can't even imagine how much snow is in Omsk right now
08:39:23  <bnoordhuis>i don't doubt that for a second :)
08:39:28  <bnoordhuis>why are you in moscow btw?
08:39:29  <indutny>hehe
08:39:38  <indutny>I like working there
08:39:43  <indutny>I mean
08:39:45  <bnoordhuis>ah okay, good reason
08:39:46  <indutny>city is much better
08:39:53  <bnoordhuis>okay, gotta be afk. biab
08:39:56  <indutny>ok
08:40:56  * AvianFluquit (Remote host closed the connection)
08:51:28  * mikealquit (Quit: Leaving.)
08:52:18  * mikealjoined
09:06:01  * EhevuTovquit (Quit: This computer has gone to sleep)
09:13:06  * joshthecoderquit (Quit: Linkinus - http://linkinus.com)
09:17:49  * `3rdEdenjoined
09:35:00  * CoverSlidequit (Read error: Operation timed out)
09:37:02  * loladiropart
09:37:11  * felixgequit (Quit: http://www.debuggable.com/)
09:37:38  <indutny>bnoordhuis: back?
10:13:35  * hzjoined
10:29:02  * kristatequit (Read error: Connection reset by peer)
10:29:25  * kristatejoined
10:49:40  * felixgejoined
10:49:40  * felixgequit (Changing host)
10:49:40  * felixgejoined
11:30:28  <bnoordhuis>indutny: back
11:30:52  <bnoordhuis>that trip to the supermarket took slightly longer than anticipated :)
11:32:22  <indutny>:)
11:32:24  <indutny>ok
11:32:27  <indutny>I've just came here too
11:32:28  <indutny>brb
11:37:12  <indutny>back
11:37:13  <indutny>bnoordhuis: so
11:37:19  <indutny>bnoordhuis: does it looks good to you now?
11:37:53  <indutny>oh
11:37:54  <indutny>I see now
11:39:31  <bnoordhuis>i don't feel strongly about it
11:39:38  <bnoordhuis>but like i said, it's a pretty common pattern in libuv
11:40:00  <bnoordhuis>and i don't like seeing casts all over the place, it distracts from the actual logic
11:40:09  <indutny>ok
11:40:43  <indutny>bnoordhuis: ah so this mmap() stuff is just to not use brk
11:40:46  <indutny>bnoordhuis: ok, lgtm then
11:40:48  <bnoordhuis>cool
11:41:06  <bnoordhuis>i'll let bertje check it as well, in case i break windows
11:41:28  <indutny>oh
11:41:35  <indutny>is windows POSIX too?
11:41:36  <indutny>:D
11:41:48  <bnoordhuis>au contraire
11:41:56  <bnoordhuis>i'll let him check if it doesn't break the windows build
11:42:58  <bnoordhuis>so all this snow is great
11:43:03  <bnoordhuis>if it were actually freezing
11:43:13  <bnoordhuis>but it's a few degrees above zero so it's all turning into slush :/
11:43:23  <indutny>heh
11:43:29  <indutny>the same was in moscow a couple of days ago
11:43:34  <indutny>it was all in water
11:43:42  <indutny>and snow
11:43:43  <indutny>mixed
11:43:48  <bnoordhuis>yeah. muck
11:43:55  <mmalecki>bnoordhuis: so hey, do the channels freeze in the winter?
11:44:06  <bnoordhuis>mmalecki: yes. people skate on them
11:44:08  <mmalecki>I actually want to get my skates
11:44:12  <mmalecki>WIN.
11:44:18  <bnoordhuis>yes, it's fun
11:46:09  <mmalecki>actually, I'll have to buy them there
11:46:20  <mmalecki>I don't really want to pack them into my bag
11:47:38  <bnoordhuis>they're not that expensive here
11:47:43  <bnoordhuis>you can probably even hire them
11:48:08  <bnoordhuis>hmm. native linux aio works with pipes, files but not ttys
11:48:58  <bnoordhuis>oh well, it's still an improvement over 2.6 kernels
11:57:49  <indutny>huh?
11:58:00  <indutny>ttys a fucked
11:58:12  <indutny>and noone loves them
11:58:21  <indutny>bnoordhuis: so should I translate tcp.c to use that #define?
11:58:23  <indutny>bnoordhuis: uv__stream_fd
11:58:50  <bnoordhuis>indutny: yes, for the sake of consistency
11:58:54  <indutny>ok
11:59:00  <indutny>what about assignments to io_watcher.fd ?
11:59:13  <indutny>I currently left them untouched
12:02:52  <indutny>bnoordhuis: I feel like I want to rewrite openssl
12:03:03  <indutny>bnoordhuis: but then I feel like noone will use it in next few years of hard work
12:03:12  <indutny>bnoordhuis: because it just won't be mature enough
12:03:25  <bnoordhuis>indutny: you're also not the first to do it, cf. gnutls, polarssl, etc.
12:03:33  <indutny>bnoordhuis: yeah, yeah
12:03:41  <indutny>bnoordhuis: actually, the only feature I really need is isolates
12:04:06  <indutny>bnoordhuis: their fine grained locking is such a mess
12:04:27  <indutny>and generates a lot of CPU noise
12:04:39  <indutny>actually, I think node can be slow because of this too
12:04:56  <indutny>setting memory barriers on almost every ssl call is definitely bad idea
12:05:04  <indutny>it just kills pipelining
12:05:08  <indutny>bnoordhuis: what do you think?
12:05:32  <bnoordhuis>indutny: what i always say when you bring up performance issues
12:05:36  <bnoordhuis>have you profiled it? :)
12:05:43  <indutny>well yes
12:05:47  <indutny>it's slower than nginx and stud
12:05:49  <indutny>:)
12:06:09  <indutny>even moving everything blocking to threads doesn't help much
12:06:12  <bnoordhuis>but do pthreads functions actually show up?
12:06:18  <indutny>yes
12:06:20  <indutny>not much
12:06:21  <indutny>but yes
12:06:22  <indutny>also
12:06:29  <indutny>how will you profile pipelining?
12:06:44  <indutny>i.e. memory barriers doesn't take time by themselfes
12:06:50  <bnoordhuis>you mean cpu pipelining?
12:06:54  <indutny>yes
12:06:58  <bnoordhuis>perf
12:07:08  <bnoordhuis>provided your machine has the hardware counters for it
12:07:18  <indutny>ah
12:07:20  <indutny>it can do it?
12:07:22  <indutny>oh...
12:07:22  <bnoordhuis>yes
12:07:32  <indutny>not sure if virtualbox provides such apis
12:07:35  <indutny>but I could try
12:08:27  <bnoordhuis>you're still running linux in a vm?
12:08:35  <indutny>yes
12:08:45  <indutny>and I don't have free box for it
12:08:49  <indutny>well, I'll have one soon
12:08:52  <indutny>but it's arm box
12:09:02  <indutny>pretty sure it won't be that useful for profiling
12:09:07  <bnoordhuis>probably not
12:09:22  <bnoordhuis>i don't know if arm cpus have hardware performance counters like that
12:09:27  <indutny>well
12:09:30  <indutny>even if they have
12:09:36  <indutny>profiling on slow cpu is kind of retarded
12:09:45  <bnoordhuis>hm, i don't know
12:11:13  <bnoordhuis>developers usually have machines that are a lot beefier than what most users have
12:11:38  <bnoordhuis>so you think 'hey, my shiny new app runs pretty well'
12:11:50  <bnoordhuis>but it's a dog on the machines of your users
12:14:10  <indutny>yeah
12:14:11  <indutny>ok
12:14:12  <indutny>so
12:14:13  <indutny>I did perf
12:14:41  <indutny>82% of time was spent in [kernel.kallsyms]
12:14:57  <indutny>shit came real :)
12:15:04  <indutny>I think I need to test it for more time
12:15:45  <indutny>it's routine for extracting debug symbols, right?
12:22:19  <indutny>oh
12:22:21  <indutny>it's /proc/sys/kernel/kptr_restrict
12:22:25  <indutny>disabled it
12:24:48  <indutny>bnoordhuis: yt?
12:24:52  <bnoordhuis>indutny: ih
12:24:57  <indutny>24.24% node [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore ◆
12:24:58  <indutny> 22.42% node [kernel.kallsyms] [k] finish_task_switch ▒
12:24:58  <indutny> 13.35% node [kernel.kallsyms] [k] read_tsc
12:25:11  <indutny>so I suppose it's pretty important to fix it
12:25:13  <indutny>:)
12:25:16  <indutny>by adding isolates
12:25:56  <bnoordhuis>indutny: use -i, that'll profile the process itself as well, not just the kernel
12:26:05  <indutny>when recording?
12:26:06  <bnoordhuis>you're using `perf record`, right?
12:26:08  <indutny>yes
12:26:23  <bnoordhuis>good. yes, add -i
12:26:24  <indutny>started siege
12:26:28  <indutny>lets wait
12:26:43  <bnoordhuis>oh, and make sure it's compiled with -g
12:27:49  <indutny>oh
12:27:53  <indutny>well, I see other stuff there
12:27:55  <indutny>so I suppose yes
12:28:05  <indutny>it's just top ones
12:28:22  <indutny>47.53% node [kernel.kallsyms] [k] read_tsc ◆
12:28:22  <indutny> 23.75% node [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore ▒
12:28:22  <indutny> 11.31% node [kernel.kallsyms] [k] finish_task_switch ▒
12:28:22  <indutny> 3.35% node node [.] uv__async_io ▒
12:28:22  <indutny> 2.52% node perf-9164.map [.] 0xa6112ae1
12:28:30  <indutny>it's a little bit different now
12:28:49  <indutny>gettimeofday()?
12:28:58  <indutny>is it the only thing that's using read_tsc
12:29:07  <bnoordhuis>hm, we don't use that on linux
12:29:11  <indutny>ok
12:29:15  <indutny>so probably it's some VM stuff
12:29:22  <indutny>btw, this call might be really slow on VM
12:29:26  <bnoordhuis>libuv calls clock_gettime(CLOCK_MONOTONIC) and that reads from the vdso
12:29:30  <indutny>but I don't know for sure
12:29:32  <bnoordhuis>yeah, that's probably it
12:29:51  <indutny>also
12:29:54  <indutny>it's 1 CPU VM
12:29:57  <indutny>and 2 threads
12:30:03  <indutny>I probably need to add one more CPU to it
12:30:04  <bnoordhuis>though... rdtsc is not a privileged instruction
12:30:16  <bnoordhuis>i.e. the host doesn't have to emulate it
12:30:36  <indutny>ah
12:31:17  <bnoordhuis>oh wait, not privileged is correct
12:31:22  <bnoordhuis>i.e. you can run it from ring 3
12:31:30  <bnoordhuis>but you _can_ virtualize it on intel cpus
12:31:33  <bnoordhuis>probably on amd cpus as well
12:32:49  <indutny>indeed
12:34:30  <indutny>ok, added one more CPU
12:34:35  <indutny>and running perf again
12:37:40  <bnoordhuis>aio in linux 3.7 is *much* improved
12:37:47  <bnoordhuis>maybe something for node 0.12
12:38:33  <bnoordhuis>it kind of sucks that /dev files don't work
12:38:44  <bnoordhuis>but i can work around that
12:38:51  <indutny> 41.18% node [kernel.kallsyms] [k] acpi_pm_read ◆
12:38:51  <indutny> 10.01% node [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore ▒
12:38:51  <indutny> 8.46% node [kernel.kallsyms] [k] __do_softirq ▒
12:38:51  <indutny> 8.15% node perf-2514.map [.] 0x89f26360 ▒
12:38:51  <indutny> 5.57% node [kernel.kallsyms] [k] hrtimer_peek_ahead_timers ▒
12:38:51  <indutny> 1.80% node node [.] uv__async_io ▒
12:38:51  <indutny> 1.67% node libc-2.15.so [.] __memcpy_ssse3_rep ▒
12:38:52  <indutny> 1.47% node node [.] node::StreamWrap::WriteBuffer(v8::Arguments const&)
12:39:06  <indutny>acpi thing scaries me :)
12:39:19  <indutny>I'm starting to think that perf doesn't really work well in VM
12:39:27  <indutny>so
12:39:33  <indutny>a lot of time spent in uv__async_io
12:39:35  <indutny>which I tried to fix
12:39:43  <indutny>but you guys reverted it :(
12:39:51  <bnoordhuis>it's kind of surprising
12:39:56  <bnoordhuis>it never shows up here
12:40:06  <bnoordhuis>i wonder if it's an artifact of running in a vm
12:41:49  <bnoordhuis>grr, /proc and /sys files don't work either
12:41:58  <bnoordhuis>seems like that something that should be pretty trivial to fix though
12:56:25  <indutny>indeed it seems to be
12:56:33  <indutny>bnoordhuis: can you prof tlsnappy on your box?
12:56:55  <bnoordhuis>indutny: sure, in a sec
12:57:07  <indutny>just clone, npm install, and node example/server.js
12:57:12  <indutny>and it'll start https server on 44300
13:08:59  * roxlu_quit (Quit: leaving)
13:11:31  <bnoordhuis>indutny: what should i test it with? i mean ab settings
13:11:46  <indutny>well
13:11:49  <indutny>better use siege
13:12:01  <indutny>-c 100 -r 10000
13:12:04  <indutny>and of course -b
13:12:08  <indutny>for ab
13:12:17  <indutny>just -c 100 -n 100000
13:12:30  <indutny>and https://localhost:44300/
13:12:38  <indutny>or /big
13:12:57  <bnoordhuis>-k?
13:14:37  <indutny>not necessary
13:14:51  <indutny>it's slower even without it
13:15:11  <bnoordhuis>[ perf record: Captured and wrote 630.525 MB perf.data (~27548037 samples) ]
13:15:11  <bnoordhuis>Warning:
13:15:11  <bnoordhuis>Processed 27461700 events and lost 6 chunks!
13:15:18  <indutny>wow
13:15:19  <bnoordhuis>as a fyi
13:15:21  <indutny>a lot of data
13:15:23  <bnoordhuis>that's with -c 1000
13:15:33  <bnoordhuis>err, perf record -i -c 1000
13:15:39  <indutny>ok
13:15:48  <indutny>and what report tells you?
13:16:29  <bnoordhuis> 20.77% node perf-3923.map [.] 0x000025cf83c2aec8 ◆
13:16:33  <bnoordhuis> 4.19% node node [.] uv__async_io ▒
13:16:37  <bnoordhuis> 3.63% node node [.] v8::internal::JSObject::LocalLookupRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*) ▒
13:16:41  <bnoordhuis> 2.70% node libpthread-2.15.so [.] pthread_getspecific ▒
13:16:45  <bnoordhuis> 2.67% node libc-2.15.so [.] _int_malloc ▒
13:16:46  <indutny>what's first?
13:16:50  <indutny>v8 stuff?
13:16:56  <bnoordhuis>no, that's perf itself
13:16:59  <indutny>oh
13:17:03  <bnoordhuis>maybe i should raise -c a little :)
13:17:03  <indutny>odd stats
13:17:18  <indutny>it should definitely contain some BN_* stuff
13:17:44  <bnoordhuis>that's with out/Release/node, it probably doesn't have debug symbols
13:17:53  <indutny>hm...
13:17:55  <indutny>probably
13:17:58  <bnoordhuis>though it's not stripped
13:18:29  <bnoordhuis>with -c 10000:
13:18:30  <bnoordhuis> 19.89% node perf-4018.map [.] 0x0000032ea8223d61
13:18:31  <bnoordhuis> 7.22% node node [.] uv__async_io
13:18:31  <bnoordhuis> 2.32% node node [.] v8::internal::JSObject::LocalLookupRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
13:18:34  <bnoordhuis> 2.06% node libpthread-2.15.so [.] pthread_getspecific
13:18:36  <bnoordhuis> 1.40% node node [.] v8::internal::JSObject::SetPropertyForResult(v8::internal::LookupResult*, v8::internal::String*, v8::internal::Object*, PropertyAttributes, v8::intern
13:18:40  <bnoordhuis> 0.96% node libc-2.15.so [.] _int_malloc
13:19:35  <indutny>still odd
13:19:45  <indutny>a question
13:19:52  <bnoordhuis>let's try one more run, this time with -a -s -i
13:19:53  <indutny>is it profiling only one thread?
13:20:03  <indutny>because it seems like it does so
13:20:11  <indutny>a lot of uv__async_io
13:20:16  <indutny>and not that much openssl stuff
13:20:27  <bnoordhuis> 9.97% node node [.] bn_mul_add_words
13:20:28  <bnoordhuis> 5.74% ab libcrypto.so.1.0.0 [.] 0x00000000000dd1f5
13:20:28  <bnoordhuis> 5.49% node node [.] BN_from_montgomery_word
13:20:30  <bnoordhuis> 5.18% node node [.] bn_sqr_comba8
13:20:33  <bnoordhuis> 3.88% node node [.] sha1_block_data_order
13:20:36  <bnoordhuis> 3.69% node node [.] OPENSSL_cleanse
13:20:38  <bnoordhuis> 3.15% node perf-4064.map [.] 0x00000d3efa74c0d4
13:20:41  <bnoordhuis>that's with -a for all cpus
13:20:41  <indutny>oh
13:20:44  <indutny>that's much better!
13:20:47  <bnoordhuis>and -s for per-thread stats
13:21:08  <bnoordhuis>fscking OPENSSL_cleanse
13:21:12  <bnoordhuis>i hates it
13:22:28  <indutny>haha
13:22:29  <indutny>yes
13:22:35  <indutny>it's really fucking shit
13:22:36  <indutny>but
13:22:40  <indutny>what's really interesting
13:22:53  <indutny>is why nginx and anything else is much faster when using the same junk
13:24:01  <indutny>bnoordhuis: btw, I've updated select() patch
13:24:23  <bnoordhuis>is nginx using the same ciphers?
13:24:43  <bnoordhuis>if nginx uses rc4 or des, it's small wonder it's faster
13:25:29  <indutny>yes
13:25:34  <indutny>absolutely the same
13:25:51  <indutny>and even the same headers
13:27:51  <bnoordhuis>indutny: are the tls frames identical?
13:27:54  <bnoordhuis>or at least similar
13:28:00  <indutny>I haven't checked it
13:28:03  <indutny>honestly
13:28:18  <indutny>but it may matter though...
13:28:21  <indutny>well
13:28:24  <bnoordhuis>i'd take a bottom-up approach here
13:28:30  <bnoordhuis>start at the lowest levels and work up from there
13:28:43  <indutny>hm...
13:28:51  <indutny>sounds like a plan
13:29:17  <bnoordhuis>also, maybe trace nginx and tlsnappy with callgrind and compare the results
13:31:22  <indutny>this is the next step
13:31:46  <indutny>actually
13:31:55  <indutny>what do you think about balancing workload between threads?
13:32:23  <indutny>why can't it outperform single threaded process? :)
13:32:33  <bnoordhuis>i think that balancing the workload between threads is, in general, a good idea
13:32:43  <bnoordhuis>are you asking that question in a particular context?
13:32:48  <indutny>well
13:42:28  <bnoordhuis>indutny: uv__stream_io(stream->loop, NULL, UV__POLLERR) <- that'll trigger a segfault
13:42:49  <bnoordhuis>i assume it's safe to use &w->io_watcher there?
13:43:04  <bnoordhuis>err, &stream->io_watcher
13:44:02  <bnoordhuis>i guess i might as well remove it, uv__stream_io only deals with POLLOUT and POLLIN
13:47:50  * jmar777joined
14:19:25  <bnoordhuis>indutny: i think there are still at least two bugs in your select() patch
14:21:43  <bnoordhuis>but i think i fixed them
14:24:05  <bnoordhuis>down to one failing test
14:24:06  <bnoordhuis>Assertion failed: (r == 1), function uv__stream_osx_interrupt_select, file ../../src/unix/stream.c, line 212.
14:24:15  <bnoordhuis>and it's failing with errno=ENOTCONN
14:26:10  <bnoordhuis>now that i'm looking at it, you're creating a regular unix socket but it's not listening and not connected
14:26:18  <bnoordhuis>i guess that should be socketpair()...
14:27:01  * felixgequit (Remote host closed the connection)
14:27:15  * felixgejoined
14:27:15  * felixgequit (Changing host)
14:27:15  * felixgejoined
14:32:55  <bnoordhuis>indutny: https://github.com/bnoordhuis/libuv/compare/issue622 <- please review
14:37:53  * piscisaureus_joined
14:41:42  <bnoordhuis>mogge bertje, lekker geslapen?
14:54:35  * kristatequit (Ping timeout: 240 seconds)
14:55:46  * piscisaureus_quit (Ping timeout: 244 seconds)
15:04:33  * tommybergeronjoined
15:05:06  * piscisaureus_joined
15:05:07  * kristatejoined
15:05:13  <piscisaureus_>hey bnoordhuis
15:05:15  <piscisaureus_>not feeling like it today?
15:06:13  <bnoordhuis>piscisaureus_: depends on what you mean by 'it'
15:06:22  <piscisaureus_>bnoordhuis: taking the train and all that
15:06:34  <bnoordhuis>oh that. no, i anticipated chaos and delays
15:06:48  <piscisaureus_>ha, right
15:10:04  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
15:12:50  * piscisaureus_joined
15:15:12  * mjr_joined
15:18:47  * jmar777quit (Read error: Connection reset by peer)
15:19:13  * jmar777joined
15:29:35  * indutny_ajoined
15:29:50  <indutny_a>Hey Ben
15:30:24  <indutny_a>So can you try kevent on /dev/tty?
15:30:46  <indutny_a>bnoordhuis:^
15:31:12  <bnoordhuis>indutny_a: come again?
15:33:03  <indutny_a>Huh?
15:33:16  <indutny_a>I'm in car atm
15:33:20  <indutny_a>sorry
15:34:50  <bnoordhuis>you young 'uns. in my time we read a book when we were in a car
15:34:54  <bnoordhuis>not while driving, mind you
15:35:25  <mmalecki>bnoordhuis: yeah, it's hard to read a book being drunk
15:36:01  <bnoordhuis>no, it's because we were too busy texting
15:36:11  <mmalecki>ah, right
15:43:10  * CoverSlidejoined
15:43:47  * hzquit (Disconnected by services)
15:43:51  * hzjoined
15:45:08  * hzquit (Read error: Connection reset by peer)
15:45:24  * hzjoined
15:52:53  * felixgequit (Quit: felixge)
15:56:06  <indutny_a>So about return value
15:56:38  <indutny_a>bnoordhuis:it returns 0 on success
15:56:48  <indutny_a>-1 if probe failed bnoordhuis
15:57:11  <indutny_a>and errno in case of failed initialization
15:57:14  <bnoordhuis>indutny_a: yes, only you had a bad check further down
15:57:25  <indutny_a>Ah, ok
15:57:27  <bnoordhuis>something like if (r > 0) return r
15:57:36  <indutny_a>are you sure?
15:57:55  <bnoordhuis>yes
15:58:02  <bnoordhuis>can you review my fixups?
15:58:28  <bnoordhuis>https://github.com/bnoordhuis/libuv/commit/209c966 <- that
15:58:45  <bnoordhuis>piscisaureus_: is there a company meeting today?
16:05:19  <indutny_a>It should return r
16:05:47  <indutny_a>-1 means that kqueue works with fd
16:06:11  <indutny_a>0 means that select thread has started
16:08:44  <indutny_a>So
16:09:22  <indutny_a>bnoordhuis:you are creating soxketpair, but closing only one fd
16:10:12  <bnoordhuis>indutny_a: okay, so that means there are a couple of bad code paths because return uv__sys_set_error() returns -1
16:10:31  <indutny_a>Ash
16:10:33  <indutny_a>ok
16:10:47  <bnoordhuis>indutny_a: btw, what do you mean 'closing only one fd'?
16:10:59  <indutny_a>I'll fix it once I'll return
16:11:02  <bnoordhuis>i should probably ask: where am i doing that?
16:11:19  <indutny_a>well, socketpair creates two
16:11:32  <indutny_a>and you are using only one
16:11:46  <indutny_a>and not closing second one
16:11:48  <bnoordhuis>no, i'm not
16:11:57  <bnoordhuis>i'm assigning them to int_fd and fake_fd
16:12:17  <indutny_a>Aaaah
16:12:25  <indutny_a>that's no good
16:12:27  <bnoordhuis>unless you mean code elsewhere closes only one of those?
16:12:48  <indutny_a>fake_fd is used in Io_watcher
16:12:57  <bnoordhuis>yes. that's good, right?
16:13:03  * tommybergeronquit (Ping timeout: 260 seconds)
16:13:06  <indutny_a>Nope
16:13:48  <indutny_a>Ah
16:14:06  <indutny_a>are you writing to fake fd later?
16:14:09  <indutny_a>to interrupt thread
16:15:10  <bnoordhuis>i don't know. you wrote that part :)
16:19:51  <indutny_a>Ok
16:20:05  <indutny_a>I'll review it later
16:25:01  * stagas_joined
16:25:38  * stagas_quit (Read error: Connection reset by peer)
16:26:03  * stagas_joined
16:26:51  * stagasquit (Ping timeout: 250 seconds)
16:26:58  * stagas_changed nick to stagas
16:30:12  * ericktjoined
16:34:09  * peterrsjoined
16:35:50  * mmaleckichanged nick to mmalecki[out]
16:36:44  * hzquit
16:37:33  * piscisaureus_quit (Ping timeout: 244 seconds)
16:38:38  * hzjoined
16:44:01  <indutny>whoa
16:44:05  <indutny>not truly back
16:44:08  <indutny>but....
16:44:21  <indutny>ahha
16:44:24  <indutny>so it wasn't working at all :)
16:44:27  <indutny>interruption stuff
16:44:33  <indutny>to make it work I need to write to fake_fd
16:44:44  <indutny>ok, I'll figure this out
16:44:47  * AvianFlujoined
16:45:42  * mjr_quit (Quit: mjr_)
16:46:03  * mmalecki[out]changed nick to mmalecki
16:47:06  <bnoordhuis>indutny_a: integrate my patch, it's got a couple of style fixes as well
16:47:14  <indutny>yes
16:47:16  <indutny>already did
16:50:07  <indutny>so what can we do about return codes
16:50:13  <indutny>should I pass additional argument?
16:50:51  <indutny>or
16:50:52  <indutny>yes
16:52:50  <indutny>ah
16:52:52  <indutny>you already did tha
16:52:53  <indutny>ok
16:54:36  <indutny>bnoordhuis: done
16:54:42  <indutny>updated my pR
16:56:27  <indutny>ok
16:56:28  <indutny>gtg
16:56:58  * loladirojoined
16:57:56  * dapjoined
17:00:12  * bnoordhuisis off to dinner
17:03:41  * mmaleckichanged nick to mmalecki[out]
17:04:26  * `3rdEdenquit (Remote host closed the connection)
17:11:46  <isaacs>bnoordhuis: yes, close the fd on error
17:11:50  <isaacs>that is a bug
17:13:35  * ericktquit (Quit: erickt)
17:19:14  <isaacs>ircretary: tell piscisaureus https://github.com/isaacs/node/compare/fs-throw-on-null-bytes
17:19:14  <ircretary>isaacs: I'll be sure to tell piscisaureus
17:19:35  <isaacs>ircretary: tell piscisaureus to use irssi so that he isn't disconnected all the time
17:19:36  <ircretary>isaacs: I'll be sure to tell piscisaureus
17:19:41  <isaacs>ircretary: thanks
17:19:41  <ircretary>isaacs: You're welcome :)
17:27:39  * hzquit
17:29:14  * peterrsquit (Ping timeout: 250 seconds)
17:34:00  <isaacs>bnoordhuis: https://github.com/isaacs/node/compare/fs-throw-on-null-bytes <-- your patch, plus the corrupted bleeding-heart liberal version of it
17:38:33  * loladiroquit (Quit: loladiro)
17:39:13  * peterrsjoined
17:41:45  * Guest69575joined
17:42:43  * Guest69575changed nick to CoverSlide|Work
17:52:32  * mikealquit (Quit: Leaving.)
17:52:53  * mikealjoined
18:11:15  * peterrsquit (Ping timeout: 260 seconds)
18:12:14  * loladirojoined
18:12:29  * peterrsjoined
18:12:44  * lohkeyjoined
18:13:19  * loladiroquit (Client Quit)
18:15:56  * TooTallNatejoined
18:18:52  * jmar777quit (Remote host closed the connection)
18:28:22  * `3rdEdenjoined
18:34:06  * indutny_a_bjoined
18:34:25  * indutny_aquit (Ping timeout: 255 seconds)
18:53:31  * warzjoined
18:53:31  * warzquit (Changing host)
18:53:32  * warzjoined
18:59:09  * joshthecoderjoined
19:11:05  * hzjoined
19:15:47  * brsonjoined
19:20:02  * lohkeyquit (Read error: Connection reset by peer)
19:21:01  * lohkeyjoined
19:34:38  * lohkeyquit (Quit: lohkey)
19:34:50  * EhevuTovjoined
19:37:19  * lohkeyjoined
19:48:44  * peterrsquit
19:56:49  * jmar777joined
20:05:36  * TooTallNatequit (*.net *.split)
20:05:36  * stagasquit (*.net *.split)
20:05:36  * mraleph1quit (*.net *.split)
20:05:36  * pquernaquit (*.net *.split)
20:10:57  * TooTallNatejoined
20:10:57  * stagasjoined
20:10:57  * mraleph1joined
20:10:57  * pquernajoined
20:12:44  * felixgejoined
20:13:25  * felixgequit (Client Quit)
20:15:38  * indutny_a_bquit (Read error: Connection reset by peer)
20:30:59  * felixgejoined
20:32:06  * TooTallNatequit (Quit: Computer has gone to sleep.)
20:33:32  * EhevuTov_joined
20:33:48  * EhevuTovquit (Ping timeout: 264 seconds)
20:38:19  * `3rdEdenquit (Remote host closed the connection)
20:39:28  * bnoordhuisquit (Ping timeout: 250 seconds)
20:39:34  * felixgequit (Quit: http://www.debuggable.com/)
20:40:00  * `3rdEdenjoined
20:41:43  * joshthecoderquit (Quit: Leaving...)
20:51:42  * stagasquit (Ping timeout: 255 seconds)
20:53:10  * TooTallNatejoined
21:05:03  * `3rdEdenquit (Remote host closed the connection)
21:06:40  * `3rdEdenjoined
21:11:49  * `3rdEdenquit (Remote host closed the connection)
21:18:17  * EhevuTov_quit (Quit: This computer has gone to sleep)
21:18:45  * EhevuTovjoined
21:19:28  * joshthecoderjoined
21:20:14  * piscisaureus_joined
21:20:26  <piscisaureus_>ircretary: notes
21:22:17  <piscisaureus_>hello
21:23:07  * mikealquit (Quit: Leaving.)
21:24:51  <indutny>ohello
21:37:00  * jmar777quit (Remote host closed the connection)
21:37:32  * EhevuTovquit (Ping timeout: 250 seconds)
21:42:18  * tomshredsjoined
21:43:58  * benoitcquit (Excess Flood)
21:44:19  * EhevuTovjoined
21:51:14  * benoitcjoined
21:52:04  * lohkeyquit (Read error: Connection reset by peer)
21:52:12  * lohkey_joined
21:53:11  * lohkey_changed nick to lohkey
22:14:37  * jmar777joined
22:40:48  * rendarquit
23:01:57  * jmar777quit (Remote host closed the connection)
23:05:24  <isaacs>hola
23:06:19  <TooTallNate>benos dias
23:07:39  <isaacs>como estas, Demasiado Alto?
23:09:12  <isaacs>lol, that translates literally as "too high"
23:09:20  <isaacs>but i guess you do live in marin county, so...
23:09:22  <isaacs>;P
23:16:26  <TooTallNate>isaacs: oh sí sí
23:16:43  <TooTallNate>alto is tall though, right
23:17:04  <TooTallNate>looks like they're the same
23:17:27  <TooTallNate>i definitely remember learning "el hombre es muy alto" in spanish class though
23:18:02  * EhevuTov_joined
23:20:25  * EhevuTovquit (Ping timeout: 260 seconds)
23:21:26  * EhevuTov_quit (Client Quit)
23:22:22  <isaacs>TooTallNate: yeah, they said that about me in spanish class, too. but i'm not that tall.
23:22:37  <isaacs>two toms and a cymbal walk into a bar...
23:23:35  <isaacs>piscisaureus_: review? https://github.com/isaacs/node/compare/fs-throw-on-null-bytes
23:38:51  * hzquit
23:50:22  <piscisaureus_>isaacs: generally lgtm, but I think there's two potential issues with this:
23:51:02  <piscisaureus_>* if someone supplies an empty filename, it'd never make the callback
23:51:35  <piscisaureus_>* the Error object has not e.code set, so it may be a problem for some servers (this is very debatable)
23:52:49  <piscisaureus_>isaacs: the first one is a real problem