00:08:53  <piscisaureus>Can we make a public roadmap?
00:09:09  <piscisaureus>I think we're at the stage that we can actually do that
00:09:57  <piscisaureus>I mean, 0.8:
00:09:57  <piscisaureus>- get rid of waf
00:09:57  <piscisaureus>- story for building extensions
00:09:57  <piscisaureus>- domains
00:10:47  <piscisaureus>- stabilize 0.6 (:
00:13:01  * mralephquit (Quit: Leaving.)
00:13:25  <ryah>- isolates
00:13:44  <piscisaureus>isolates scare me
00:13:55  <piscisaureus>what about long stack traces?
00:14:09  * felixgequit (Quit: felixge)
00:14:15  <piscisaureus>isolates require some serious libuv engineering
00:14:30  <piscisaureus>if we want to get it out by january we should start planning this week
00:15:05  * felixgejoined
00:15:06  * felixgequit (Changing host)
00:15:06  * felixgejoined
00:15:37  <igorzi>how about slab allocator?
00:15:51  <piscisaureus>yeah
00:15:55  <piscisaureus>good one
00:16:07  * felixgequit (Client Quit)
00:16:08  <piscisaureus>which does not need to be on the public roadmap btw
00:18:30  <ryah>isolates is definitely on the roadmap :)
00:18:57  <piscisaureus>not on my roadmap :))
00:19:06  <ryah>that's fine
00:19:20  <piscisaureus>Just kidding btw
00:19:27  <piscisaureus>we should collaborate on this one as well
00:29:35  <ryah>-waf -isolates
00:29:45  <ryah>- building extensions with gyp
00:30:05  <ryah>- slab alloc
00:30:23  <ryah>i'd like someone else to play with the domains branch..
00:30:26  <piscisaureus>I am working on it
00:30:30  <piscisaureus>I'll do that
00:30:37  <piscisaureus>I also want to get fs.watch right
00:30:43  <ryah>oh yeah
00:30:59  <piscisaureus>a lot of my sweat went into that the last couple of days without a satisfying result so far
00:31:22  <ryah>i want to hammer down a lot of bugs that got reported this week
00:31:27  <piscisaureus>Yeah
00:31:48  <piscisaureus>not part of a roadmap, but obviously it needs to be done
00:32:06  <piscisaureus>Let me do this, get some project manangement practice :-)
00:33:34  <ryah>be my guest. i would like to start using the milestones more strictly
00:36:26  <igorzi>piscisaureus: https://gist.github.com/1346659
00:36:41  <igorzi>ryah: ^--- can you pls try this on unix? it should be passing
00:37:02  * javrubenjoined
00:37:07  <igorzi>(this is the test that results in ECONNABORTED on windows)
00:37:15  <ryah>igorzi: one sec
00:39:37  <piscisaureus>igorzi: ok, let me try to get what's happening :-)
00:39:45  <piscisaureus>tcp control flow always makes my head hurt
00:45:18  <ryah>igorzi: failing
00:45:35  <ryah>`tcp_write_to_half_open_connection` failed: exit code 6
00:45:36  <ryah>Output from process `tcp_write_to_half_open_connection`:
00:45:36  <ryah>Assertion failed: (!(handle->flags & UV_CLOSED)), function uv__finish_close, file src/unix/core.c, line 217.
00:45:52  <ryah>igorzi: let me try to debug...
00:52:18  <igorzi>ryah: i'm closing the tcp_client twice.. that's probably why you're getting that
00:52:23  <igorzi>fixing..
00:53:26  <ryah>igorzi: oh, right
00:54:12  <igorzi>ryah: can you try removing uv_close from write_cb?
00:54:20  * javrubenpart
00:54:55  <ryah>piscisaureus: if you can get test/simple/test-domains3.js to work
00:55:07  <ryah>piscisaureus: i think we should add it to the roadmap
00:55:11  <piscisaureus>ryah: yeah
00:55:43  <ryah>we might want to start over though (but keep the tests)
00:55:48  <ryah>you might think of a better way to do it
00:55:56  <ryah>i just need another set of eyes on it
00:56:02  <igorzi>ryah: here's a new patch https://gist.github.com/1346703 (without the extra close)
00:56:38  <piscisaureus>ryah: yeah, I will work on domains
00:56:50  <ryah>piscisaureus++
00:57:13  <ryah>igorzi: works!
00:57:30  <ryah>for the roadmap, i think we should separate out pure libuv tasks
00:57:35  <ryah>one item i'd like
00:57:42  <igorzi>ryah: cool, thx
00:57:44  <ryah>- share ref code between unix and windows
00:59:11  <ryah>^-- i think this feature vector is suffiently orthogonal to force a good simplification of libuv entry points
00:59:32  <igorzi>piscisaureus: lmk what you think of that patch.. gtg now
00:59:40  <piscisaureus>k
00:59:51  <ryah>(continuing with the feature space as a vector space metaphor)
01:00:08  <piscisaureus>a hilbert space manifold
01:00:24  <piscisaureus>^-- I have no bloody idea what that means, but it sounds awesome
01:00:39  <ryah>that would require having a concept of distance
01:00:51  <piscisaureus>distance == effort
01:00:55  <piscisaureus>in the metaphor
01:00:57  <ryah>hm
01:01:03  <piscisaureus>or time maybe
01:01:39  <ryah>it also needs to be locally euclidean..
01:02:34  <ryah>*shrug*
01:02:47  <piscisaureus>ryah: really, I have no clue what that means
01:03:09  <piscisaureus>Since I didn't study math at Brown university
01:03:24  <piscisaureus>And I definitely was not the best of my year
01:04:38  * rmustaccjoined
01:15:29  <isaacs>ryah: we should get Stream API sanity on the roadmap
01:15:41  * isaacsvolunteers
01:20:35  <piscisaureus>ryah: https://gist.github.com/1346745
01:24:12  <piscisaureus>isaacs: what do you mean by stream sanity?
01:24:41  <isaacs>piscisaureus: our stream api is a bit messy
01:24:56  <isaacs>it's too hard for people to implement streams that interoperate well with node-core streams.
01:25:13  <piscisaureus>okay so what does that entail?
01:25:20  <piscisaureus>remove pause/resume
01:25:29  <isaacs>oh, god, no.
01:25:46  <piscisaureus>I mean, the events not the methods
01:25:54  <isaacs>pause/resume need to be there, but probably iron out Stream.pipe some, figure out a consistent naming scheme for end/endSoon/close/destroy/destroySoon
01:26:11  <piscisaureus>do we have endSoon now even
01:26:13  <isaacs>use pipe() in more places where we're halfway-piping stuff by hand
01:26:16  <isaacs>nono, i don't think so
01:26:17  <piscisaureus>yeah
01:26:29  <piscisaureus>But I agree
01:26:38  <piscisaureus>close is an abstraction leak
01:26:38  <isaacs>make sure "end" is always eventually emitted no matter what on every stream everywhere.
01:27:14  <piscisaureus>Okay, well I can put it on the roadmap :-)
01:27:31  <isaacs>i told ryan i was going to do it a few weeks ago, whn i thought it would take just a few days.
01:27:35  <isaacs>it'll take more than a few days.
01:28:55  <isaacs>it should be much easier for users to implemetn custom streams and filters and stuff, which are .pipe()able
01:31:35  <piscisaureus>Updated the gist
01:31:54  <piscisaureus>Re-reading... too much words
01:32:34  <piscisaureus>I wonder what ever happened to long stack traces
01:32:37  <piscisaureus>are we never going to do it?
01:45:03  <piscisaureus>ryah: hey, yt/
01:45:32  <piscisaureus>ryah: does igorzi's test pass on linux?
01:51:06  <ryah>piscisaureus: yes
01:51:16  <piscisaureus>hmm
01:51:17  <piscisaureus>ok
01:51:21  <ryah>piscisaureus: solaris backend for fs.watch is done
01:51:24  * dapquit (Quit: Leaving.)
01:51:29  <piscisaureus>then igorzi's patch must go in
01:51:32  <piscisaureus>oh, it landed?
01:51:35  <ryah>piscisaureus: yes
01:52:06  <ryah>the slab allocator needs to be discussed
01:52:13  <ryah>we probably need to move memory management into libuv
01:52:27  <ryah>or change to realloc
01:52:40  <ryah>i think this roadmap looks fairly reasonable
01:52:52  <ryah>but we need to get v0.6.1 out and then have a long discussion about it
01:54:21  <piscisaureus>ryah: have a long discussion about the roadmap, or the slab allocator?
01:55:00  <piscisaureus>ryah: I think if we're always punting on a roadmap until after the next release, there will never be one
01:55:01  <piscisaureus>:-)
01:56:06  <piscisaureus>But we don't need to publish it right now, I can just send it to all core members and ask for input
01:56:16  * ericktquit (Quit: erickt)
01:57:39  <piscisaureus>ryah: -^
01:58:04  <piscisaureus>no mutiny just jet
02:02:41  <ryah>indeed
02:03:53  <piscisaureus>ryah: so, do I send it to core?
02:03:54  <ryah>we should also discuss moving to time-based release
02:04:07  <ryah>piscisaureus: yes
02:04:10  <piscisaureus>okay
02:04:21  <piscisaureus>Time-based release could be good
02:04:30  <piscisaureus>But yes let's discuss
02:04:40  <piscisaureus>We have this issue with changing apis
02:04:49  <igorzi>piscisaureus: you ok with ECONNABORTED patch?
02:04:56  <piscisaureus>igorzi: yes
02:05:29  <piscisaureus>although it hurts, i agree this is the only right thing to do
02:08:22  <CIA-95>libuv: Igor Zinkovsky master * rf1859eb / (4 files in 3 dirs): windows: convert WSAECONNABORTED to EOF - http://git.io/dBcE8w
02:16:09  * brsonquit (Quit: leaving)
02:30:39  <igorzi>ryah piscisaureus: also, we'd want to move platform*.cc stuff into libuv eventually, right?
02:30:54  <piscisaureus>yes
02:31:04  <piscisaureus>there's not much left anyway, is there?
02:31:48  <igorzi>nope, not much
02:33:09  <piscisaureus>added
02:56:43  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
03:16:10  * AvianFluquit (Quit: Leaving)
03:19:43  * isaacsquit (Quit: isaacs)
03:20:48  * isaacsjoined
03:20:48  * isaacsquit (Client Quit)
04:24:18  * ericktjoined
05:40:37  * felixgejoined
05:40:37  * felixgequit (Changing host)
05:40:37  * felixgejoined
05:46:09  * felixgequit (Quit: http://www.debuggable.com/)
05:47:59  * ericktquit (Quit: erickt)
06:39:14  * bnoordhuis_joined
06:39:44  <bnoordhuis_>buenas noches, americanos
06:40:09  <bnoordhuis_>(for the others, i'm addressing the californians in their native tongue)
07:30:11  <CIA-95>node: Ben Noordhuis master * r105d178 / lib/cluster.js : cluster: fix call to undefined function - http://git.io/3qE76A
07:40:37  * isaacsjoined
08:32:32  * kuebkjoined
09:05:17  * mralephjoined
09:35:27  * mralephquit (Quit: Leaving.)
09:56:25  * mralephjoined
09:58:35  * felixgejoined
09:58:35  * felixgequit (Changing host)
09:58:35  * felixgejoined
09:58:40  * felixgequit (Client Quit)
10:22:54  * mralephquit (Ping timeout: 240 seconds)
11:13:04  <bnoordhuis_>piscisaureus_: ping
11:22:54  * Marakquit (Ping timeout: 240 seconds)
11:23:00  * indutnyquit (Ping timeout: 256 seconds)
11:49:07  <CIA-95>node: Ben Noordhuis master * r04958e8 / (lib/fs.js test/simple/test-fs-mkdir.js):
11:49:08  <CIA-95>node: fs: make mkdir() call callback if mode is omitted
11:49:08  <CIA-95>node: Fixes #2043. - http://git.io/4tHxuQ
11:54:23  * piscisaureusjoined
11:58:11  <piscisaureus>buenas tardes, bnoordhuis_
11:58:38  <bnoordhuis_>piscisaureus_: buenas noches!
11:59:05  <piscisaureus>bnoordhuis: buenos días
11:59:14  <bnoordhuis_>piscisaureus: https://github.com/joyent/node/pull/2045 <- does that happen for you?
11:59:18  * bnoordhuis_changed nick to bnoordhuis
11:59:23  * indutnyjoined
11:59:26  * isaacsquit (Quit: isaacs)
11:59:36  <piscisaureus>I think fs.realpath needs a windows implementation
11:59:53  <piscisaureus>the current implementation has only a stub that does not resolve symlinks
12:00:03  <bnoordhuis>i'm willing to believe you
12:00:19  <bnoordhuis>but is it broken like that guy describes it?
12:00:27  <bnoordhuis>seems like it, reading the code
12:01:08  <piscisaureus>bnoordhuis: yes, it's broken
12:01:23  <bnoordhuis>okay, i'll land his patch
12:01:40  <piscisaureus>oh there's a test even ♥♥
12:04:52  <CIA-95>node: Benjamin Pasero master * rb1bb17f / lib/fs.js : fs: fix fs.realpath on windows to return on error - http://git.io/T0Pmpg
12:04:52  <CIA-95>node: Ben Noordhuis master * r6f96e78 / test/simple/test-fs-realpath.js :
12:04:52  <CIA-95>node: test: fs.realpath() should not call its callback twice
12:04:52  <CIA-95>node: Test case for #2045. - http://git.io/axsC9A
12:46:11  <piscisaureus>bnoordhuis: https://github.com/joyent/node/issues/2037 doesn't crash for me :-/
12:48:28  <piscisaureus>bnoordhuis: I think it must be an uv_tp_queue_work bug
12:50:57  <bnoordhuis>piscisaureus: what example are you trying?
12:51:04  <bnoordhuis>the infinite loop always crashes eventually
12:51:13  <bnoordhuis>that 10 iterations example doesn't
12:51:34  <bnoordhuis>but it will for say 250K iterations
12:51:34  <piscisaureus>bnoordhuis: the second example
12:51:50  <piscisaureus>bnoordhuis: but I run it for 10000 iteration
12:52:06  <bnoordhuis>try 250K, it crashes for me once every three or four runs
12:52:19  <piscisaureus>yes, for me too
12:52:21  <piscisaureus>okay
12:53:53  <piscisaureus>HASH_BLOCK_DATA_ORDER (c,data,n); <-- c == NULL
12:54:51  <piscisaureus>bnoordhuis: I think it's stack overflow
12:55:14  <piscisaureus>hmm maybe not
12:55:19  <bnoordhuis>i don't see how it can
12:55:31  <piscisaureus>stack corruption more likely
12:55:34  <bnoordhuis>but there's probably something overrunning or overflowing
12:55:37  <bnoordhuis>yeah, exactly :)
12:55:57  <bnoordhuis>haven't digged in yet, just confirmed the issue
12:56:23  <bnoordhuis>okay, lunch
13:04:47  <piscisaureus>for me _locktable overflows
13:05:22  <piscisaureus>bnoordhuis: it looks like an openssl bug
13:14:09  <piscisaureus>now let's write a chrome exploit and get the bounty :-0
13:15:17  <piscisaureus>hmm
13:57:03  <bnoordhuis>hrm, that crypto test fails to fail for me now...
13:58:12  <bnoordhuis>ah, and now it fails again - good
14:43:41  <bnoordhuis>piscisaureus: ping
14:43:57  <piscisaureus>bnoordhuis: pong
14:44:09  <bnoordhuis>piscisaureus: you can reproduce #2037 right?
14:44:19  <piscisaureus>bnoordhuis: yep
14:44:27  <piscisaureus>bnoordhuis: but I can't figure out what's happening
14:44:28  <bnoordhuis>what compiler did you compile node with?
14:44:34  <piscisaureus>msvc
14:44:40  <bnoordhuis>err, that can't be it then
15:00:53  <bnoordhuis>piscisaureus: you know, i think i found it
15:00:57  <bnoordhuis>or at least found something
15:01:03  <piscisaureus>bnoordhuis: ah
15:01:07  <piscisaureus>bnoordhuis: tell me
15:01:18  <piscisaureus>bnoordhuis: ik tast nog steeds in 't duister
15:01:39  <bnoordhuis>piscisaureus: there's something clobbering registers
15:01:53  <bnoordhuis>could be openssl, could be something else
15:01:57  <piscisaureus>bnoordhuis: voor mij lijkt het erop dat een random address wordt gecalled vanaf SHA1_Update())
15:02:29  <bnoordhuis>piscisaureus: https://gist.github.com/1d4c6db2fc1dec4e257a <- apply this patch
15:02:40  <bnoordhuis>run it until it crashes, then inspect the core dump
15:02:47  <piscisaureus>ff checken what it does
15:03:06  <piscisaureus>core dump
15:03:07  <piscisaureus>?
15:03:08  <piscisaureus>eh
15:03:31  <bnoordhuis>x.req_ is set to req but if you inspect their respective values at crash time, they're different
15:03:39  <bnoordhuis>req points to something completely out of bounds
15:03:52  <piscisaureus>hmm
15:04:44  <CIA-95>node: Scott Anderson master * r0d19d82 / doc/api/all.markdown : Cluster documentation added. - http://git.io/Sq8pNQ
15:04:49  <bnoordhuis>i don't think it's something in RandomBytesWork<RAND_bytes>
15:05:10  <bnoordhuis>the disasm listing looks pretty innocuous
15:12:11  <piscisaureus>bnoordhuis: it's really weird
15:12:25  <bnoordhuis>i think i'll go compile a debug build of openssl
15:12:32  <piscisaureus>it really calls to some random address from SHA1_Update
15:12:47  <piscisaureus>bnoordhuis: is there a compile-time switch for that?
15:15:01  <bnoordhuis>piscisaureus: ./config && make CFLAGS="-I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -g -O0"
15:15:06  <bnoordhuis>easy, right? :)
15:15:14  <bnoordhuis>oh, remove the -O3
15:15:18  <piscisaureus>bnoordhuis: i need to do it with gyp :-)
15:16:36  <piscisaureus>bnoordhuis: ah, I already was running a debug build :-)
15:20:08  <bnoordhuis>god, the openssl source always makes my eyeballs bleed...
15:24:11  <indutny>bnoordhuis: haha
15:24:20  <indutny>they should pay for reading code
15:37:38  <bnoordhuis>it's like they do it on purpose so that no one else can comprehend let alone maintain it
15:37:55  <bnoordhuis>piscisaureus: do you think it's an openssl bug? i kind of do
15:38:06  <piscisaureus>bnoordhuis: I do too
15:38:20  <piscisaureus>so let's write the exploit
15:38:25  <bnoordhuis>yeehaw!
15:39:52  <piscisaureus>bnoordhuis: is it also reproducible when we call randomBytes in a nextTick loop?
15:40:11  <bnoordhuis>don't know, i'll write some test c code
15:43:01  <piscisaureus>It's terrible
15:43:13  <piscisaureus>openssl is completely unhackable
15:45:38  * daurnimatorpart
15:55:13  <bnoordhuis>piscisaureus: https://gist.github.com/4d05695c07ee4b73a1a8
15:55:28  <bnoordhuis>crashes within seconds
15:55:34  <bnoordhuis>so yeah, openssl bug
15:55:47  <piscisaureus>bnoordhuis: so, is openssl supposed to be threadsafe?
15:56:08  <bnoordhuis>piscisaureus: i think so, yes
15:56:48  <bnoordhuis>hrm, maybe i should set lock callbacks
16:00:48  <piscisaureus>bnoordhuis: what are those?
16:01:03  <bnoordhuis>piscisaureus: http://www.openssl.org/docs/crypto/threads.html
16:01:46  <bnoordhuis>which we apparently don't set in node_crypto.cc...
16:01:52  <bnoordhuis>ffs
16:01:57  <piscisaureus>ghe
16:02:01  <piscisaureus>bnoordhuis: that explains a lot
16:02:17  <piscisaureus>windows will slack a little before it creates extra thread pool threads
16:02:32  <piscisaureus>bnoordhuis: so only when the number of workers goes up the crash can happen
16:02:50  <piscisaureus>bnoordhuis: I wonder if this could be a source of other random crashes as well
16:03:14  <bnoordhuis>are there other functions that call into openssl from within the thread pool?
16:03:46  <bnoordhuis>piscisaureus: another thing, does msvc have __thread?
16:03:59  <bnoordhuis>i.e. -> static __thread int x;
16:04:28  <piscisaureus>bnoordhuis: __declspec(thread)
16:05:06  <bnoordhuis>piscisaureus: thanks - i should #ifdef _MSVC, i think?
16:07:18  <piscisaureus>yes
16:41:15  * kuebkpart
16:44:21  * dapjoined
16:53:31  * brsonjoined
16:58:56  <bnoordhuis>piscisaureus: https://github.com/bnoordhuis/node/commit/f71333d <- can you test that on windows?
16:59:58  * brsonquit (Ping timeout: 245 seconds)
17:22:19  <piscisaureus>bnoordhuis: yep, works & fixes the bug
17:22:25  <ryah>morning
17:22:41  <piscisaureus>ryah: morning
17:23:02  <piscisaureus>ryah: you guys went back to normal time last weekend right?
17:23:25  <ryah>piscisaureus: yeah
17:26:56  * brsonjoined
17:29:35  <ryah>what are we doing about --vars ?
17:51:17  <ryah>piscisaureus: where's the roadmap gist?
17:51:37  <piscisaureus>ryah: https://gist.github.com/1346745
17:51:49  <piscisaureus>ryah: I emailed it, too
17:52:14  <ryah>piscisaureus: can we order these in order of priority
17:52:29  <ryah>eg "src/platform-*.cc" should be #1
17:52:35  <piscisaureus>sure
17:52:43  <ryah>i dont think "- Stability and performance improvements. (all)
17:52:46  <ryah>needs to be on there
17:53:15  <piscisaureus>get rid of waf should be 2 :-)
17:53:18  <ryah>yes
17:53:44  <piscisaureus>updated
17:54:20  <indutny>:)
17:54:25  <indutny>nice plans
17:54:33  * pieternjoined
17:54:55  <ryah>piscisaureus: have you rebased domins? if so you should push it
17:55:29  <piscisaureus>bnoordhuis: are you landing f71333d?
17:55:46  <indutny>do you guys have any work for me? :)
17:55:53  <indutny>or should I finish platform stuff first?
17:55:55  * isaacsjoined
17:56:16  <piscisaureus>You can always do my job if you want to :-)
17:56:19  <ryah>indutny: we need to hammer down these tests
17:56:46  <ryah>indutny: if you can fix them (esp windows) that would be helpful
17:56:56  <indutny>piscisaureus: :)
17:56:59  <indutny>ryah: ok
17:57:07  <ryah>we're going into maintanence state for the next two weeks or so
18:00:45  <CIA-95>node: Ryan Dahl master * r0ba8f05 / (4 files in 2 dirs): Upgrade V8 to - http://git.io/O85doA
18:02:39  <ryah>http://gigaom.com/2011/11/08/the-data-center-gets-its-first-100-gbps-optical-chip <--- :P~~
18:03:38  <ryah>nerd boner
18:05:05  <piscisaureus>oh no ryah get it down again
18:05:11  <piscisaureus>it's eclipsing the sun
18:29:47  * mikealjoined
18:31:13  * ericktjoined
18:45:20  * piscisaureus_quit (*.net *.split)
18:46:17  * piscisaureus_joined
18:46:24  * DrPizzaquit (Excess Flood)
18:46:27  * DrPizza_joined
18:46:38  * DrPizza_quit (Excess Flood)
18:47:15  * DrPizzajoined
18:48:39  * mikealquit (Read error: Connection reset by peer)
18:49:02  * mikealjoined
18:54:41  <piscisaureus>ryah: igorzi: are we having a call?
18:55:51  <ryah>yes
18:57:26  <ryah>bnoordhuis: what about --vars ?
18:57:34  <ryah>bnoordhuis: why do people need them?
19:01:39  <bnoordhuis>call now?
19:01:53  <bnoordhuis>ryah: probably not
19:02:31  <ryah>yes
19:02:42  <bnoordhuis>piscisaureus: yes
19:05:15  <CIA-95>node: Ben Noordhuis master * r97cada0 / src/node_crypto.cc : crypto: make module thread-safe - http://git.io/VLXaow
19:06:07  <piscisaureus>bnoordhuis: call!
19:06:38  <bnoordhuis>i think my landline isn't working, i'll try my cell phone
19:08:59  <ryah>bnoordhuis: skype?
19:09:34  <ryah>it seems the line is dead?
19:09:52  <ryah>meh
19:10:00  <piscisaureus>for me too
19:10:03  <piscisaureus>it's really crappy
19:10:08  <piscisaureus>can we get everyone on skype?
19:10:23  <piscisaureus>I can't hear you guys?
19:10:40  <piscisaureus>I am disconnecting
19:10:49  <piscisaureus>It would be good to use skype if it doesn't crash :-)
19:11:42  <ryah>telecommunications is hard
19:11:46  <bnoordhuis>piscisaureus: igorzi is setting up the call
19:12:33  <piscisaureus>kewl
19:13:06  <bnoordhuis>heh, i think his client crashed
19:14:15  <piscisaureus>bnoordhuis: pick up!
19:14:35  <bnoordhuis>piscisaureus: no one's calling me
19:24:35  * AvianFlujoined
19:39:47  <bnoordhuis>piscisaureus: where/when did you try that node_crypto patch?
19:39:53  <bnoordhuis>i think i broke the windows build
19:40:03  <piscisaureus>bnoordhuis: it worked for me
19:40:13  <bnoordhuis>piscisaureus: on msvc?
19:40:16  <piscisaureus>I tried around 6pm
19:40:17  <piscisaureus>yeah
19:41:06  <bnoordhuis>piscisaureus: let me commit what i think it should've been
19:42:18  <bnoordhuis>piscisaureus: https://github.com/bnoordhuis/node/commit/0b8d759
19:42:52  * mikealquit (Quit: Leaving.)
19:47:03  <piscisaureus>bnoordhuis: hmm
19:47:16  * indexzerojoined
19:47:19  <piscisaureus>maybe don't use mutex
19:47:41  <piscisaureus>bnoordhuis mutexes are heavy - use critical sections
19:48:37  <bnoordhuis>piscisaureus: feel free to improve on it :)
19:49:35  <bnoordhuis>piscisaureus: what about 0b8d759?
19:50:40  <piscisaureus>bnoordhuis: what's the question?
19:51:16  <bnoordhuis>piscisaureus: can you review it? i'm pretty sure i messed up the windows implementation
19:51:30  <piscisaureus>bnoordhuis: I can't really test it right now, I'm in the middle of `git rebase --onto master domains`
19:51:37  <piscisaureus>bnoordhuis: but it looks okay
19:51:44  <piscisaureus>minus the mutex :-)
19:51:51  <bnoordhuis>okay, i'm going to squash and force-push this one
19:51:52  <piscisaureus>but we can change that later if you want
19:52:04  <bnoordhuis>yeah, i'll work on that tomorrow
19:52:37  <CIA-95>node: Ryan Dahl master * r409915e / (8 files in 5 dirs):
19:52:37  <CIA-95>node: Upgrade libuv to f1859eb
19:52:37  <CIA-95>node: Fixes #2040
19:52:37  <CIA-95>node: Fixes https://github.com/joyent/node/commit/0e8a55d2a22b88dc3b9b0165f344602b0fa8c977#commitcomment-69710 - http://git.io/bmj0Eg
19:52:47  <bnoordhuis>damnit
19:57:12  <CIA-95>node: Ben Noordhuis master * refb833f / src/node_crypto.cc : crypto: use the right mutex - http://git.io/AVQhHw
20:00:03  <ryah>marc lehmann is pretty annoying sometimes
20:00:14  <ryah>"You are reinventing processes - I can only suggest that this is the wrong
20:00:14  <ryah>design, it's slow.
20:00:14  <ryah>The reason it is slow is that it has to emulate the MMU in software"
20:00:18  * ryahrolls his eyes
20:00:32  <piscisaureus>link?
20:01:53  <ryah>http://lists.schmorp.de/pipermail/libev/2011q4/001585.html
20:07:53  * igorziquit (Ping timeout: 265 seconds)
20:10:18  * igorzijoined
20:13:02  <ryah>piscisaureus: do you like the domains?
20:29:36  <piscisaureus>ryah: I do like the concept
20:29:46  <piscisaureus>ryah: but I am playing with the api a bit
20:40:37  <piscisaureus>who is this paddy byers btw?
21:00:41  <ryah>piscisaureus: i dont know
21:02:44  <ryah>https://groups.google.com/d/msg/socket_io/GalMWh1y6pU/Egzu5hTRUMEJ
21:02:51  <ryah>^-- memory leak in node v0.6 ?
21:04:21  <indutny>fck, everything, but not memory leak, please
21:04:32  <indutny>leaks in js is a pain in the ass
21:04:41  <indutny>really
21:04:54  * bnoordhuisquit (Ping timeout: 240 seconds)
21:06:52  <piscisaureus>fuck
21:06:56  <piscisaureus>also
21:07:15  <piscisaureus>There was an internal error in Node's debugger. Please report this bug.
21:07:16  <piscisaureus>undefined is not a function
21:07:16  <piscisaureus>TypeError: undefined is not a function
21:07:16  <piscisaureus> at Interface.controlEval (_debugger.js:930:5)
21:07:16  <piscisaureus> at REPLServer.eval (native)
21:07:16  <piscisaureus> at Interface.<anonymous> (repl.js:187:12)
21:15:29  <piscisaureus>ryah: https://github.com/joyent/node/blob/domains/test/simple/test-domains.js#L57
21:15:29  <piscisaureus>^-- why do you expect the timer to be called?
21:15:29  <piscisaureus>https://github.com/joyent/node/blob/domains/test/simple/test-domains.js#L40
21:15:29  <piscisaureus>^-- if I throw from there, would that have the same result?
21:15:56  <indutny>isaacs: yt?
21:16:21  <indutny>piscisaureus: ??
21:16:28  <indutny>piscisaureus: can you post more info?
21:18:25  <piscisaureus>indutny: http://piscisaureus.no.de/log/2011-09-05 @ 20:18:03
21:19:42  <indutny>piscisaureus: ??
21:19:45  <indutny>:D
21:19:51  <indutny>too many data
21:20:34  <piscisaureus>omains provide a lightweight isolation mechanism for all i/o
21:20:34  <piscisaureus> related to a particular network connection (e.g. an incoming http request).
21:20:34  <piscisaureus> If an unhandled error is encountered, all i/o local to that particular
21:20:34  <piscisaureus> domain is canceled and all handles are cleaned up. An experimental
21:20:35  <piscisaureus> implementation can be found at
21:20:35  <piscisaureus> https://github.com/joyent/node/commits/domains. (Bert, Ryan)
21:21:21  * piscisaureuslikes copy pasting answers and should probably work at a call centre
21:24:15  <indutny>piscisaureus: em
21:24:23  <indutny>I was asking about debugger
21:24:24  <indutny>:D
21:24:25  <indutny>lol
21:24:29  <indutny>you posted some error
21:24:33  <piscisaureus>oh
21:24:37  <indutny>sorry
21:24:40  <piscisaureus>that's what just happened
21:24:47  <piscisaureus>but it happened only once
21:24:55  <indutny>but what was you doing?
21:25:02  <indutny>isaacs: http://search.npmjs.org/#/ometajs
21:25:10  <indutny>isaacs: I can't unpublish 2.1.1
21:25:14  <piscisaureus>node debug bla.js
21:25:15  <piscisaureus>n
21:25:15  <piscisaureus>n
21:25:21  <indutny>piscisaureus: cool :D
21:25:22  <indutny>ok
21:25:43  <piscisaureus>indutny: if it happens again I will track it down
21:26:18  <indutny>thanks
21:26:54  <piscisaureus>indutny: no - thanks :-)
21:37:08  <ryah>so
21:37:27  <ryah>what about combining TCPWrap, PipeWrap, TTYWrap into one StreamWrap ?
21:38:06  <CIA-95>node: Ryan Dahl master * r2d13cdf / lib/readline.js : Fixes #2052. Readline get win cols correctly - http://git.io/Eg-30A
21:43:59  <piscisaureus>ryah: sure, good idea
21:44:05  <piscisaureus>but will it make it into 0.8
21:44:10  <piscisaureus>seems unrealistic
21:58:52  <igorzi>could someone try to run this: https://gist.github.com/1349383 on unix?
21:59:26  <igorzi>just want to confirm that "child.stdout.pipe(process.stdout);" will destroy stdio stream when child process exits
21:59:40  <igorzi>does this seem like the right fix? https://gist.github.com/1349391
21:59:49  <igorzi>ryah piscisaureus: --^
22:07:12  <piscisaureus>igorzi: why does destroy need to be overridden?
22:08:04  <igorzi>piscisaureus: i think stream.pipe destroys the target stream when the source stream is closed
22:08:25  <igorzi>piscisaureus: we can't allow the target stream to be destroyed if it's one of stdio streams, right?
22:08:36  <piscisaureus>igorzi: well, people do it sometimes
22:08:47  <piscisaureus>it doesn't make much sense for stdout though
22:08:56  <piscisaureus>but I want ryah's opinion
22:09:06  <igorzi>when would you want to destroy any of stdio streams?
22:10:33  <piscisaureus>igorzi: ehm, *shrug*
22:10:53  <piscisaureus>maybe they want to redirect stdout to a log file and then close the console stream
22:11:23  <piscisaureus>or they're spawned to do some data processing, and stdout is closed to flag the parent process that EOF has been reached
22:11:23  <igorzi>hmm
22:12:47  <igorzi>hmm, maybe it's a bug for stream.pipe to destroy the target stream?
22:12:59  <piscisaureus>yeah
22:13:16  * indexzeroquit (Quit: indexzero)
22:13:35  <ryah>one sec.. nodejs.org is on fire
22:13:35  <piscisaureus>isaacs, ryah, felixge, mikeal are the experts on this topc
22:14:24  <piscisaureus>joyent didn't pay the electricity bill? :-p
22:14:32  <piscisaureus>but srsly, nodejs.org wfm
22:14:37  <isaacs>yeah, the src.emit("close") -> dest.destroy() is deeply flawed.
22:14:45  <isaacs>ryah: looks fine from here: http://nodejs.org/
22:14:50  <isaacs>ryah: or you mean something is up on the server?
22:15:35  <piscisaureus>oh shit he discovered the c&c server i put there
22:38:28  <isaacs>did anything happen recently in the crypto module?
22:38:37  <isaacs>(recently = between 0.5.10 and 0.6.0)
22:38:53  <isaacs>i'm seeing some crazy memory usage in windows when computing the shasum of a file
22:40:24  <piscisaureus>isaacs: can you check how much threads it creates
22:40:27  <piscisaureus>there could be an issue with that
22:44:10  <isaacs>piscisaureus: actually, seems like this is a problem in 0.5.10, as well
22:44:44  <piscisaureus>isaacs: shasum computation runs on the thread pool right?
22:46:32  <isaacs>yeah
22:46:41  <isaacs>i'm not 100% sure that this isn't a problem in my code just yet...
22:46:45  <isaacs>bisecting
22:46:59  <isaacs>i thought that the diff was 0.5.10 to 0.6, but i'm able to reproduce it in 0.5.10 with installing stylus
22:48:03  <piscisaureus>isaacs: there *could* be an issue with how the thread pool is managed on windows, I've seen issues where a lot of worker threads were created but never cleaned up
22:48:25  <isaacs>i see
22:48:41  <isaacs>i'm also seeing the occasional "just exit with zero and no 'exit' event" issue
22:53:26  <piscisaureus>hmm
22:53:29  <piscisaureus>test case would help
22:54:10  <isaacs>yeah
22:54:20  <isaacs>so far as i can find, the only test case is "npm install stylus"
22:54:25  <isaacs>that fails consistently
22:54:26  <isaacs>and oddly
22:55:02  <isaacs>and i'm way off, it's not a crypto thing. if anything, it's a child_process thing
22:55:19  <isaacs>what's really weird is that it seems to choke at the exact same spot in the tarball every time.
22:55:43  <isaacs>starts chewing up a gig of memory, then crashes
23:01:27  <ryah>igorzi:
23:01:27  <ryah>% ./node gistfile1.js
23:01:28  <ryah>process.stdout._handle is: [object TTY]
23:01:28  <ryah>foo
23:01:28  <ryah>child exited
23:01:30  <ryah>process.stdout._handle is: null
23:12:43  <ryah>igorzi: can you review these patches: https://gist.github.com/28507b5ce35fcc9372dc
23:22:40  * mikealjoined
23:26:13  * indexzerojoined
23:30:54  <ryah>isaacs: do you have a test case?
23:31:19  <isaacs>i've narrowed it down to just "don't write lots of stuff to a child process in one go"
23:33:50  <ryah>isaacs: please get a small example that we can try
23:33:55  <isaacs>stylus is a cute language and all, but i don't thinkit's worth a 504-file package just to get around writing css.
23:34:12  <piscisaureus>isaacs: are you sure that the child process can actually handle all the data you send it?
23:34:20  <isaacs>no, i'm not.
23:34:30  <ryah>what's the child process anyway?
23:34:33  <isaacs>it's bsdtar. it can handle it on bsd, but i don't know about this thing.
23:34:41  <isaacs>it's like, this hybrid windows bsdtar port thing.
23:34:59  <ryah>isaacs: does write ever return false?
23:36:22  <isaacs>yeah, i'm handling that
23:37:55  <isaacs>god, this code is terrible. using system command line utilities is always so painful. it's like a splinter under the skin that grows a cystic sack around it.
23:39:33  <piscisaureus>[22:15] <piscisaureus> ryah: https://github.com/joyent/node/blob/domains/test/simple/test-domains.js#L57
23:39:33  <piscisaureus>[22:15] <piscisaureus> ^-- why do you expect the timer to be called?
23:39:33  <piscisaureus>[22:15] <piscisaureus> https://github.com/joyent/node/blob/domains/test/simple/test-domains.js#L40
23:39:33  <piscisaureus>[22:15] <piscisaureus> ^-- if I throw from there, would that have the same result?
23:39:33  <piscisaureus>[22:15] <indutny> isaacs: yt?
23:39:51  <isaacs>hi
23:39:54  <isaacs>i'm here
23:40:08  <ryah>sorry, i missed that
23:40:48  <ryah>piscisaureus: yes, if you throw from there it has the same result
23:40:55  <ryah>piscisaureus: the callbacks aren't made
23:41:03  <ryah>piscisaureus: the timer callback isn't made
23:41:33  <piscisaureus>hmm
23:41:35  <piscisaureus>right
23:42:04  <piscisaureus>I've rebased it, now the timer is called and throwing from the connect callback doesn't kill the domain
23:42:13  <piscisaureus>so these are bugs :-)
23:42:17  <ryah>yes
23:42:36  <isaacs>aha! ok, so, apparently this is just a result of the fact that you can quite easily crash node by using a lot of memory and doing a lot of fs ops, so when i traverse thorugh stylus's library-of-congress-esque package tree, it's eventually failing.
23:43:15  <piscisaureus>isaacs: yes, memory overflow == certain death :-)
23:43:34  <ryah>but why is it using a lot of memory?
23:43:36  * mralephjoined
23:43:42  <isaacs>the odd thing is that it's just 500 strings or so, not even very big ones, and it's climbing up well over 1GB
23:45:07  <isaacs>oh, i guess it's doing an lstat on each file, as well, and just going as fast as possible.
23:45:24  <isaacs>on unix, the EMFILE makes it back off, but i guess on windows it's just blasting past that point?
23:45:29  <isaacs>trying to do them all at once
23:45:55  <piscisaureus>you should be able to do 500 lstats with no pain
23:46:05  <piscisaureus>but yeah, windows has no ulimit
23:46:28  <ryah>isaacs: it sounds like a bug in node
23:46:34  <isaacs>it does.
23:48:28  <ryah>please see if you can extract a smaller test case
23:49:04  <ryah>would be good to have for our pummel