00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:00:16  <isaacs>bnoordhuis: i mean, that's why i put that stupid hack in there in the first place.
00:00:33  <isaacs>bnoordhuis: but if we can move the heuristic to libuv, and not have it in node, that'd make me a bit happier :)
00:01:31  <isaacs>sweep the problem under the deps/uv/ rug
00:04:30  <bnoordhuis>isaacs: no, i removed that
00:05:06  <isaacs>bnoordhuis: but i mean, writev approach is good for big messages, bad for small ones
00:05:29  <bnoordhuis>unfortunately, yes
00:06:50  <isaacs>bnoordhuis: i seem to recall ryah doing something similar once upon a time, before there was a libuv
00:07:09  <bnoordhuis>yes. that was a long time ago
00:07:09  * dominictarrquit (Quit: dominictarr)
00:07:17  <isaacs>bnoordhuis: and basically coming to the same conclusion, that writev was not a savings.
00:07:20  <bnoordhuis>also didn't work out but he had a different approach iirc
00:07:23  <isaacs>yeah
00:07:26  * benoitcquit (Excess Flood)
00:07:35  <isaacs>he had this JS-level linked-list thingie that it'd walk over.
00:07:50  <isaacs>and pull the data out of the strings from v8, rather than convert to buffers.
00:08:29  <bnoordhuis>the thing is, there is room for optimization - but only if you're willing to trade latency for throughput
00:09:01  <bnoordhuis>which most web 3.2 people with their interactive game web chat cam rooms probably don't want
00:12:30  <trevnorris>bnoordhuis: sorry. someone stopped by my desk.....
00:13:02  <bnoordhuis>oh, no worries
00:13:17  <trevnorris>have an idea, but you can tell me if it's possible.
00:14:05  <trevnorris>sort of a linked list w/ a heap. where if the message is < N then it's written to the heap. and if it's larger it's left out.
00:14:06  * benoitcjoined
00:14:17  <bnoordhuis>and then?
00:14:31  <tjfontaine>https://dl.dropbox.com/u/35720/jenkins-no-cla.png https://dl.dropbox.com/u/35720/jenkins-cla.png
00:14:46  * c4milojoined
00:15:06  <isaacs>tjfontaine: neat.
00:15:20  <tjfontaine>indutny has apparently signed twice
00:15:21  <bnoordhuis>hah, that's awesome
00:16:33  <trevnorris>bnoordhuis: so w/o cork is slow for small buffers. w/ cork it's slow for large buffers?
00:16:58  <bnoordhuis>pretty much yes
00:17:04  * bradleymeckjoined
00:17:09  <trevnorris>and it's slow for large buffers because of the copy?
00:17:13  <bnoordhuis>or rather the other way around
00:17:23  <bnoordhuis>corking slows down small buffers, speeds up large buffers
00:17:55  <trevnorris>erm. and why does it slow down small buffers?
00:18:32  <bnoordhuis>because each call to req.connection.write() traverses up to libuv and back
00:18:40  <bnoordhuis>and mallocs some memory in the process
00:19:25  <bnoordhuis>the call stack is something i could flatten or batch up
00:19:37  <bnoordhuis>but the malloc thing is more complicatd
00:19:56  * dominictarrjoined
00:21:07  <bnoordhuis>well, i'm going to sleep on it
00:21:10  <tjfontaine>bnoordhuis: could always blockheap/slab the uv structures
00:21:10  <trevnorris>so when data is sent to uv_write, does it need to copy that. or can it just use the same mem pointer
00:21:57  <tjfontaine>or is that already happening, I forget, anyway
00:22:36  <bnoordhuis>ask me all about it tomorrow. i'm off to bed
00:22:40  <bnoordhuis>have a good night, guys
00:22:44  <tjfontaine>sleep well
00:24:06  <trevnorris>tjfontaine: so if i understand, data passed to uv_write needs to be copied, correct?
00:24:21  * loladirojoined
00:24:31  * dominictarrquit (Ping timeout: 264 seconds)
00:26:19  <trevnorris>eh. i'll leave this to the professionals.
00:26:27  * trevnorrisdives back into buffers
00:27:05  * bnoordhuisquit (Ping timeout: 245 seconds)
00:27:40  * kazuponjoined
00:30:53  * trevnorrisquit (Quit: Leaving)
00:31:26  * kazupon_joined
00:31:34  * kazuponquit (Read error: Connection reset by peer)
00:40:20  * c4miloquit (Remote host closed the connection)
00:56:44  * kevireillyquit (Read error: Connection reset by peer)
00:56:52  * kevireillyyjoined
01:01:24  * c4milojoined
01:03:50  <MI6>joyent/node: Gil Pedersen v0.10 * c3aae9c : stream: Fix stall in Transform under very specific conditions The stall - http://git.io/yvyGsA
01:06:40  * eris0xffjoined
01:06:46  <eris0xff>hi
01:07:59  * dapquit (Quit: Leaving.)
01:09:20  * c4miloquit (Remote host closed the connection)
01:17:46  * defunctzombie_zzchanged nick to defunctzombie
01:19:57  * AvianFluquit (Remote host closed the connection)
01:25:14  * loladiroquit (Quit: loladiro)
01:27:22  * qmx|awaychanged nick to qmx
01:27:23  * wolfeidauquit (Read error: Connection reset by peer)
01:27:45  * wolfeidaujoined
01:29:35  * kazupon_quit (Remote host closed the connection)
01:31:34  * dpemmonsjoined
01:36:45  * kevireillyyquit (Read error: Connection reset by peer)
01:36:46  * kevireillyjoined
01:38:45  * c4milojoined
01:40:50  * c4miloquit (Remote host closed the connection)
01:42:10  * ericktjoined
01:42:38  * ericktquit (Client Quit)
01:42:59  * mikealquit (Quit: Leaving.)
01:43:59  * bradleymeckquit (Quit: bradleymeck)
01:45:23  * abraxasjoined
01:47:18  * bradleymeckjoined
01:48:26  * sblomquit (Ping timeout: 246 seconds)
02:01:09  <bradleymeck>when is it safe to free a uv_async_t?
02:02:39  * ericktjoined
02:19:55  <bradleymeck>guess only after the entire loop is done… hmmm
02:32:48  * loladirojoined
02:34:07  * bradleymeckquit (Quit: bradleymeck)
02:42:58  * c4milojoined
02:47:17  * indexzerojoined
02:48:09  * c4miloquit (Remote host closed the connection)
02:49:16  * kazuponjoined
03:22:02  * hzquit
03:30:29  * qmxchanged nick to qmx|away
03:32:45  * c4milojoined
03:48:11  * c4miloquit (Remote host closed the connection)
03:51:57  * loladiroquit (Quit: loladiro)
03:54:46  * kazuponquit (Read error: Connection reset by peer)
04:10:30  * bradleymeckjoined
04:17:39  * indexzeroquit (Quit: indexzero)
04:18:05  <MI6>nodejs-v0.10: #53 UNSTABLE linux-x64 (1/564) osx-x64 (2/564) windows-x64 (4/564) osx-ia32 (2/564) smartos-ia32 (1/564) windows-ia32 (5/564) http://jenkins.nodejs.org/job/nodejs-v0.10/53/
04:18:10  * indexzerojoined
04:20:01  * indexzeroquit (Client Quit)
04:22:43  * defunctzombiechanged nick to defunctzombie_zz
04:26:18  * ericktquit (Quit: erickt)
04:33:39  <bradleymeck>does queueing uv_async_t leak memory if i dont free it during the cb somehow??
05:58:29  * mikealjoined
06:00:38  * trevnorrisjoined
06:04:20  <bradleymeck>indutny: uvcat is finally memory stable, learned to seriously dislike dynamically allocating uv_async_t in the process though
06:04:43  <bradleymeck>release tomorrowish?
06:07:32  * kazuponjoined
06:57:54  * dominictarrjoined
07:10:01  <bradleymeck>kinda funny that after 3 hours im seeing i leaked 8 bytes of memory
07:22:15  * rendarjoined
07:24:03  * `3rdEdenjoined
07:26:22  * benoitcquit (Excess Flood)
07:31:35  * benoitcjoined
07:34:02  * kazuponquit (Remote host closed the connection)
07:40:36  * `3rdEden_joined
07:40:43  * `3rdEdenchanged nick to `3E
07:41:02  * `3rdEden_changed nick to `3rdEden
07:55:30  * `3Equit (Remote host closed the connection)
07:55:51  * kazuponjoined
08:03:57  * benoitcquit (Excess Flood)
08:08:36  * benoitcjoined
08:09:46  * benoitcquit (Excess Flood)
08:17:29  * defunctzombie_zzchanged nick to defunctzombie
08:19:37  * benoitcjoined
08:28:55  * defunctzombiechanged nick to defunctzombie_zz
08:39:06  <bradleymeck>indutny: freeing in cb gave segfault
08:39:14  <indutny>interesting
08:39:16  <indutny>in close cb?
08:40:34  <bradleymeck>ah, brain dead, was doing in the async_cb after the close, but close_cb could be firing after
08:42:36  <trevnorris>indutny: having a brain fart. don't get how to use the syntax of the following:
08:42:37  <trevnorris>template <class S> explicit V8_INLINE(Persistent(Handle<S> that)) : Handle<T>(*that) { }
08:44:09  <indutny>укь
08:44:16  <indutny>erm
08:44:26  <indutny>its just construction of peristent handle from handle :)
08:44:35  <indutny>Peristent<Value> p(handle);
08:44:55  <bradleymeck>well well
08:46:55  <trevnorris>ah, duh.
08:55:28  * bradleymeckquit (Quit: bradleymeck)
08:57:55  * dominictarrquit (Read error: Connection reset by peer)
08:58:22  * dominictarrjoined
09:05:21  <trevnorris>ok. almost have the new buffers working.
09:05:56  <cjd>cool, how'd you end up doing it?
09:06:33  <trevnorris>thought lots of pain.
09:06:42  <trevnorris>and by working, i mean building.
09:07:41  <trevnorris>since SlowBuffers don't exist anymore needed to re implement several things.
09:08:42  <cjd>hmm
09:08:58  <cjd>still using the allocation method you had yesterday?
09:09:11  <cjd>(allocate lots of small buffers instead of a slab)
09:10:01  * stagasjoined
09:10:04  <cjd>it occurs to me that if you could reach in to the v8 heap, small allocations would be a huge win since they would go in eden and they would be cleaned up quickly
09:10:47  <trevnorris>indutny already did some looking into that type of thing. if he can't do it i definitely cant (or at least not anytime soon)
09:11:20  * cjdmight write an evil patch just to benchmark it
09:12:00  <cjd>troll you guys by distributing a patch which "makes node.js networking 50% faster but maintainers won't accept it" :D
09:12:43  <trevnorris>ugh. of course node_crypto has to use that crazy ass Buffer::Replace to hot swap the external memory.
09:17:48  * dominictarrquit (Quit: dominictarr)
09:21:09  <trevnorris>indutny: how important is the whole HeapProfiler bit in node_buffer?
09:21:11  * loladirojoined
09:53:17  * stagas_joined
09:55:31  * stagasquit (Ping timeout: 260 seconds)
09:55:42  * stagas_changed nick to stagas
09:55:49  * loladiroquit (Quit: loladiro)
10:01:11  * stagas_joined
10:01:24  * stagasquit (Ping timeout: 256 seconds)
10:01:27  * stagas_changed nick to stagas
10:03:52  * benoitcquit (Excess Flood)
10:09:08  * benoitcjoined
10:12:06  * trevnorrisquit (Quit: Leaving)
10:13:14  * dominictarrjoined
10:15:49  * Kakerajoined
10:23:59  * dominictarrquit (Quit: dominictarr)
10:26:19  * dominictarrjoined
10:27:53  * abraxasquit (Remote host closed the connection)
10:33:24  * dominictarrquit (Quit: dominictarr)
10:40:51  * kazuponquit (Remote host closed the connection)
10:43:27  * stagas_joined
10:44:16  * stagasquit (Ping timeout: 240 seconds)
10:44:22  * stagas_changed nick to stagas
10:51:32  * wolfeidauquit (Remote host closed the connection)
10:54:40  * bnoordhuisjoined
10:57:32  <indutny>back
10:57:39  <indutny>gosh, this income declaration stuff is so boring
10:57:46  <indutny>hope I'll figure it out by monday
10:58:17  * stagas_joined
11:00:29  * stagasquit (Ping timeout: 255 seconds)
11:00:41  * stagas_changed nick to stagas
11:03:12  * kazuponjoined
11:04:28  * sgallaghjoined
11:11:52  * piscisaureus_joined
11:18:22  * stagas_joined
11:18:41  * benoitcquit (Excess Flood)
11:20:03  * stagasquit (Ping timeout: 252 seconds)
11:20:18  * stagas_changed nick to stagas
11:21:08  * benoitcjoined
11:21:19  <piscisaureus_>olla nodies
11:24:13  * wolfeidaujoined
11:28:17  * stagas_joined
11:30:33  * stagasquit (Ping timeout: 256 seconds)
11:31:07  <indutny>piscisaureus_: how are you doing?
11:31:20  <piscisaureus_>indutny: great. And you?
11:31:30  * stagasjoined
11:32:37  <indutny>fine too
11:33:17  <indutny>brb
11:33:48  * stagas_quit (Ping timeout: 264 seconds)
11:34:11  * stagasquit (Read error: Connection reset by peer)
11:36:18  * stagasjoined
11:44:45  * kazuponquit (Remote host closed the connection)
11:49:32  * benoitcquit (Excess Flood)
11:51:00  * Kakeraquit (Ping timeout: 260 seconds)
11:51:09  * benoitcjoined
11:52:48  * Kakerajoined
11:55:07  * bnoordhuisquit (Ping timeout: 264 seconds)
12:10:30  * kazuponjoined
12:35:09  * piscisaureus_quit (Ping timeout: 256 seconds)
12:42:10  * bnoordhuisjoined
12:56:25  * piscisaureus_joined
12:58:45  * bnoordhuisquit (Ping timeout: 240 seconds)
13:10:15  * hzjoined
13:13:03  * qmx|awaychanged nick to qmx
13:15:39  * stagas_joined
13:17:13  * stagasquit (Ping timeout: 245 seconds)
13:17:19  * stagas_changed nick to stagas
13:23:25  * bnoordhuisjoined
13:23:50  * kazuponquit (Remote host closed the connection)
13:35:31  * c4milojoined
13:37:54  * c4miloquit (Remote host closed the connection)
13:45:32  * c4milojoined
13:54:13  * kazuponjoined
13:57:44  * `3rdEdenchanged nick to `3E|BAI
14:03:06  * kazuponquit (Ping timeout: 264 seconds)
14:31:33  * rendarquit
14:37:33  * kazuponjoined
14:39:54  * `3E|BAIchanged nick to `3rdEden
14:41:39  * mikealquit (Quit: Leaving.)
14:44:16  * indexzerojoined
14:44:34  * rendarjoined
14:53:17  * stagas_joined
14:55:18  * stagasquit (Ping timeout: 264 seconds)
14:55:27  * stagas_changed nick to stagas
14:56:35  * defunctzombie_zzchanged nick to defunctzombie
15:07:54  * stagas_joined
15:09:57  * stagasquit (Ping timeout: 276 seconds)
15:10:03  * stagas_changed nick to stagas
15:10:53  * kazuponquit (Remote host closed the connection)
15:18:14  * kazuponjoined
15:18:19  <isaacs>mornin piscisaureus_
15:18:27  <piscisaureus_>morning isaacs
15:18:30  <piscisaureus_>how are you doing?
15:18:33  <isaacs>good
15:21:19  * loladirojoined
15:24:29  <piscisaureus_>isaacs: anything exciting going on in the valley these days?
15:26:11  * bnoordhuisquit (Ping timeout: 256 seconds)
15:27:00  * dapjoined
15:28:00  <indutny>there's some people going in nearby valley
15:28:03  <indutny>not sure if they're exciting
15:28:08  <indutny>but I can ask them if you want
15:41:36  * kazuponquit (Remote host closed the connection)
15:44:20  * c4miloquit (Remote host closed the connection)
15:45:09  * c4milojoined
15:45:31  <piscisaureus_>There's valleys in russia?
15:51:12  * `3rdEdenquit (Quit: bbl)
15:52:16  <tjfontaine>valleys of ice and snow
15:59:07  * kazuponjoined
15:59:47  <isaacs>piscisaureus_: probably not.
16:00:08  <isaacs>piscisaureus_: but up in oakland and sf, it's always a fun time happy adventure magical suprise parade party
16:00:21  <piscisaureus_>isaacs: nice :)
16:00:24  <isaacs>piscisaureus_: silicon valley is boring town, though
16:05:57  <isaacs>anyone wanna review this? https://github.com/joyent/node/pull/5115
16:08:07  * Ralt_quit (Remote host closed the connection)
16:14:11  * kazuponquit (Remote host closed the connection)
16:14:14  * piscisaureus_changed nick to piscisaureus_mee
16:16:37  * bnoordhuisjoined
16:19:58  * sblomjoined
16:20:22  * benoitcquit (Excess Flood)
16:20:43  * benoitcjoined
16:28:25  <tjfontaine>bnoordhuis: llvm-g++ (4.2) osx-ia32 also generates the wrong NaN value
16:30:10  <tjfontaine>bnoordhuis: so we are shipping a product that for one platform-arch combo is generating different results, regardless of the two compiler options we have :)
16:32:22  <tjfontaine>I'm re-rebuilding to double check that
16:32:44  <tjfontaine>yup, indeed
16:34:59  * indexzeroquit (Quit: indexzero)
16:38:29  * loladiroquit (Quit: loladiro)
16:39:19  * benoitcquit (Excess Flood)
16:41:28  * c4miloquit (Remote host closed the connection)
16:44:23  * loladirojoined
16:44:30  * mikealjoined
16:44:34  * kazuponjoined
16:45:14  * benoitcjoined
16:49:50  * stagas_joined
16:51:13  * stagasquit (Ping timeout: 256 seconds)
16:51:14  * stagas_changed nick to stagas
16:53:03  * kazuponquit (Ping timeout: 258 seconds)
16:53:09  <isaacs>tjfontaine: any idea why http://jenkins.nodejs.org/job/node-pullrequest/DESTCPU=ia32,label=osx/90/tapTestReport/test.tap-27/ is failing?
16:53:17  <isaacs>er, test-child-process-fork-getconnections.js
16:53:19  <isaacs>indutny: ^
16:53:24  <isaacs>seems like it's only in darwin ia32
16:53:26  * loladiroquit (Quit: loladiro)
16:53:34  <tjfontaine>hm
16:58:09  * loladirojoined
17:01:32  * qmxchanged nick to qmx|lunch
17:02:52  <tjfontaine>isaacs: are you getting that to fail reliably?
17:02:58  <isaacs>tjfontaine: nope.
17:03:08  <isaacs>tjfontaine: compiling in ia32 mode now to see if i can get it to
17:03:17  <isaacs>don't really see why that'd be a difference, though
17:04:06  <tjfontaine>ya I have seen it fail other places, like windows
17:07:56  <isaacs>yeah
17:08:14  * c4milojoined
17:10:24  <isaacs>ok, this fails reliably:
17:10:24  <isaacs>for i in `seq 100`; do echo $i; ./node test/simple/test-child-process-fork-getconnections.js || break; done
17:10:33  <isaacs>erm.. just as i said that it passed.
17:10:36  <tjfontaine>heh
17:10:47  <tjfontaine>mine has yet to fail locally
17:11:02  <isaacs>i couldn't get it to fail ever in x64 darwin mode.
17:11:15  <tjfontaine>I'm still in ia32 from my last test
17:11:17  <isaacs>but in ia32 darwin, it's usually failing within 100 runs
17:12:55  <tjfontaine>ah there we go, finally 486
17:13:57  <isaacs>always with the same AssertionError: 1 == 12 on assert.equal(sent, count);
17:14:29  <tjfontaine>oh you must be on v0.10
17:16:30  * piscisaureus_meequit (Quit: ~ Trillian Astra - www.trillian.im ~)
17:17:10  <isaacs>yeah
17:17:24  <isaacs>so, it looks like it's killing the child before all the close messages have been sent
17:17:58  <tjfontaine>I'm up to 600 on v0.10-ia32-osx
17:18:42  <tjfontaine>sigh, 1k runs clean
17:18:58  <isaacs>ok, so, i think i've got an idea of what's happening
17:19:04  <isaacs>but not why it's happening or what SHOULD be happening.
17:19:12  <isaacs>ie, if it's a bug in the code or in the test.
17:19:46  * kazuponjoined
17:21:15  * stagasquit (Ping timeout: 245 seconds)
17:21:18  <isaacs>looks like the server is emitting 'close' before all the sockets are closed by the child.
17:21:54  <tjfontaine>yes, I agree with that assesment
17:22:20  <isaacs>ah!
17:22:20  <isaacs>calling getConnections
17:22:21  <isaacs>getConnections [Error: Slave closed before reply] undefined
17:24:15  * kazuponquit (Ping timeout: 240 seconds)
17:26:13  <isaacs>btw, running `make docclean; make -j4 doc` in another term makes it fail more often
17:26:17  <isaacs>race conditions ftw.
17:26:59  * stagasjoined
17:27:39  <tjfontaine>that probably explains why we see it more on the osx buildslave, since that laptop is in troublesome condition
17:28:26  * loladiroquit (Quit: loladiro)
17:29:08  <isaacs>yep
17:29:18  <isaacs>probably has nothing to do with ia32 at all
17:29:22  <isaacs>just speed issue
17:31:46  * `3Ejoined
17:34:20  <isaacs>WILD! so, sometimes what the child gets is not a net.Socket, but a tcp_wrap.TCP handle!
17:34:26  * benoitcquit (Excess Flood)
17:34:52  <tjfontaine>oh there be dragons
17:37:14  * benoitcjoined
17:39:06  <isaacs>ok... so, apparently, when we do child.send({id:n, cmd:'close'}) a TCP is getting sent as well.
17:39:09  <isaacs>strange..
17:40:13  * bradleymeckjoined
17:42:31  * bnoordhuisquit (Ping timeout: 264 seconds)
17:44:05  * hzquit
17:45:51  * trevnorrisjoined
17:47:20  * benoitcquit (Excess Flood)
17:50:43  <isaacs>ok... so that's odd. if you have an IPC channel, then the last socket you send gets its handle sent for every subsequent send.
17:50:58  <bradleymeck>anyone have a uv-app boilerplate, and an idea why gyp when making new projects is convinced this mac is arch=i386 instead of the proper x86_64
17:52:14  * benoitcjoined
17:57:23  * stagas_joined
17:59:15  <trevnorris>isaacs: do you know what the HeapProfiler code was used for in node_buffer?
17:59:27  <isaacs>trevnorris: no idea
17:59:33  <trevnorris>coolio
17:59:40  <saghul>bradleymeck try this: https://github.com/bnoordhuis/libuv-chat
18:00:02  * stagasquit (Ping timeout: 246 seconds)
18:00:03  * stagas_changed nick to stagas
18:00:32  <trevnorris>isaacs: new buffers are building. now just working out the js changes.
18:01:04  <tjfontaine>trevnorris: btw when you have time, you should tweak lib/assert.js to work with the new Error semantics
18:03:55  <trevnorris>tjfontaine: you mean like the changes I made to lib/fs.js in 0bba590?
18:04:33  <bradleymeck>saghul: thanks much
18:04:47  <trevnorris>tried to include changes to assert.js as well, but was getting difficult to make assumptions about the error string.
18:04:53  <trevnorris>i'll give it a go again
18:06:00  <tjfontaine>trevnorris: would it not work to Error.call(this, this.toString()) instead of doing the captureStackTrace portion?
18:08:24  <isaacs>thisis weird....
18:08:35  <isaacs>in the failing cases with this test, we're getting the same fd sent multiple times into the child.
18:08:43  <isaacs>in the passing cases, it goes 12, 13, 14, ...
18:08:52  <isaacs>in the failures, it's 12, 13, 12, 13, ...
18:09:15  <tjfontaine>well if the slave dies and the next one would get 12
18:09:24  <trevnorris>isaacs: well. since fd's are reused, isn't it possible that the fd is failing then being reused?
18:10:23  <isaacs>yeah
18:10:27  <isaacs>but taht shoudln't be happening
18:10:39  <trevnorris>ah, so that's the strange part. got ya
18:12:00  <isaacs>yeah, by the time we get to the 'close' message, it's already been closed.
18:12:04  <isaacs>*by the other side*
18:12:12  <isaacs>which is *extra* weird.
18:12:57  <trevnorris>tjfontaine: well son of a bitch. just changing line 49 to Error.call() it does work. nice job.
18:14:08  <tjfontaine>trevnorris: groovy
18:14:55  <tjfontaine>bradleymeck: they should scrape github tags
18:15:18  * benoitcquit (Excess Flood)
18:16:43  <bradleymeck>should != do, in reality i want to figure out a sane way to make a /dist/ replica farm
18:16:45  * benoitcjoined
18:17:41  <bradleymeck>on that note, when doing git remote-ls wth is the ^{} by some tags
18:18:45  <tjfontaine>ya, I was also going to suggest a git command
18:30:12  <isaacs>tjfontaine: aha, it looks like we're getting an EOF in the client, and then closing it before the child proc has a chance to.
18:32:09  <tjfontaine>ah, from stdin or ipc?
18:32:22  * piscisaureus_joined
18:33:15  <trevnorris>tjfontaine: ok. so .call shows the assertion message, but doesn't show the stack...
18:33:41  <trevnorris>if i remember the v8 code, it uses the message passed directly, and not .message
18:33:51  <trevnorris>which is why no message is showing up.
18:34:31  <tjfontaine>which is why I suggested the .call(this, this.toString()), does calling captureStackTrace after that help?
18:35:16  <trevnorris>tjfontaine: no. because the message has already been formatted at that point.
18:35:33  <trevnorris> /message/stack
18:35:47  <tjfontaine>ok that's what I thought you meant
18:36:57  <cjd>var err; try { thingThatThrowsError(); } catch(e) { err=e; throw e; } finally { err.stack = err.stack.replace(/oldMsg/, 'newMsg'); }
18:37:04  <cjd>wonder if that would work
18:37:27  <tjfontaine>it does-ish, that's what he does in fs currently
18:37:54  <cjd>hah neat
18:39:36  <piscisaureus_>Maybe, erm, fiddle with v8 a bit?
18:40:19  <trevnorris>piscisaureus_: the change to v8 was intentional. there was a bug open about this, where they solidified it.
18:40:35  <piscisaureus_>trevnorris: which?
18:40:59  <trevnorris>piscisaureus_: we're talking about the Error message right?
18:41:03  <piscisaureus_>yeah
18:41:08  <tjfontaine>capturing stack traces on instantiation, and basically making the delayed .message setting useless :)
18:41:23  <piscisaureus_>you just need to set some hooks to change the message right?
18:41:35  <trevnorris>so v8 used to lazy load the stack. so you could pop in a message after it was instantiated, then the message would be used in the stack string.
18:41:36  * AvianFlujoined
18:41:46  <trevnorris>but now the stack is generated immediately.
18:42:10  <piscisaureus_>So do you actually want to fiddle with the stack trace?
18:42:24  <piscisaureus_>or just with the message that appears "above" the stack trace?
18:42:28  <trevnorris>it's unreliable. i did something similar in lib/fs.js but it is crap.
18:42:36  <cjd>err.stack contains the message which has to be altered IIRC
18:42:48  <trevnorris>look at the first DEBUG in fs.js and you'll see what I mena.
18:42:50  <tjfontaine>piscisaureus_: it would be nice if our assertion messages appeared above the stack
18:42:54  <trevnorris> /mena/mean
18:43:17  <tjfontaine>or at the very least included the message :)
18:44:42  * isaacsyoga class&
18:51:26  <trevnorris>heh, ok. put together one crap solution. i'll pr it and see what you think
18:52:41  * benoitcquit (Excess Flood)
18:56:15  * benoitcjoined
19:13:54  * sblomquit (Ping timeout: 252 seconds)
19:15:56  <trevnorris>tjfontaine: the problem is that the stack is generated before toString is called to format the message.
19:16:03  <trevnorris>tried creating a minimal test case, but that works
19:16:57  * stagas_joined
19:17:40  * benoitcquit (Excess Flood)
19:19:15  * stagasquit (Ping timeout: 240 seconds)
19:19:23  * stagas_changed nick to stagas
19:20:53  * kazuponjoined
19:22:15  * benoitcjoined
19:23:15  * loladirojoined
19:25:58  <trevnorris>and when I run AssertionError manually it displays the message fine. wtf...
19:26:00  * kazuponquit (Ping timeout: 272 seconds)
19:26:53  * qmx|lunchchanged nick to qmx
19:38:21  * bradleymeckquit (Ping timeout: 245 seconds)
19:42:51  <trevnorris>tjfontaine: here ya go: 5123
19:44:15  <tjfontaine>trevnorris: that seems relatively sane to me
19:44:40  <trevnorris>i just hate doing string manipulations that way.
19:44:52  <trevnorris>reminds me of hacking through crap string based html templates
19:45:14  <tjfontaine>indeed
19:46:36  * bradleymeckjoined
19:46:40  * sblomjoined
19:46:52  <bradleymeck>without a recompile*
19:47:42  <tjfontaine>hmm?
19:50:31  <bradleymeck>i guess recompiling is just the way to go to change node_prefix in the config?
19:50:37  <bradleymeck>seems kinda overkill
19:51:05  <tjfontaine>doesn't generally recompile the entire tree, just one or two objects and then relinks
19:51:14  <bradleymeck>yea
19:52:27  <tjfontaine>bradleymeck: http://logs.nodejs.org/libuv/latest#19:46:36.830 there's a bit of context missing, you appeared to join and ask "without a recompile"
19:53:56  <bradleymeck>tjfontaine: interesting, just trying to setup a local install of node when bundling apps, and changing the node_prefix of the executable seems the right thing to do
19:54:02  <bradleymeck>could change it in js i guess?
19:55:37  <tjfontaine>I guess the question is how is it relevant?
19:55:54  <bradleymeck>posterity mostly
19:56:14  <bradleymeck>but i have some code deep in our app manager that checks the node_prefix, i can just rip it out
19:56:49  * piscisaureus_quit (Read error: No route to host)
20:00:24  * sgallaghquit (Remote host closed the connection)
20:00:27  <tjfontaine>isaacs: I'm guessing that the get-connections failure is a similar experience to what's happening for child-process-fork-net2 http://jenkins.nodejs.org/job/node-pullrequest/DESTCPU=ia32,label=osx/99/tapTestReport/test.tap-29/
20:05:14  * bradleymeckquit (Quit: bradleymeck)
20:08:23  * mikealquit (Quit: Leaving.)
20:09:48  * benoitcquit (Excess Flood)
20:10:51  * bnoordhuisjoined
20:12:21  * piscisaureus_joined
20:16:15  * benoitcjoined
20:21:06  * piscisaureus_quit (Ping timeout: 272 seconds)
20:21:30  * kazuponjoined
20:22:39  * indexzerojoined
20:23:05  <MI6>nodejs-master: #110 UNSTABLE windows-ia32 (4/565) osx-ia32 (4/565) windows-x64 (5/565) http://jenkins.nodejs.org/job/nodejs-master/110/
20:26:10  * kazuponquit (Ping timeout: 258 seconds)
20:26:20  <trevnorris>bnoordhuis: you know what the HeapProfiler code in node_buffer is for? no one else does.
20:26:32  <bnoordhuis>trevnorris: i do and it can't go
20:26:55  <bnoordhuis>it makes buffers get accounted for properly in heap snapshots
20:27:05  <trevnorris>bnoordhuis: it'll just get moved. not removed.
20:27:29  <bnoordhuis>okay. what for?
20:28:02  <trevnorris>since buffers aren't allocating their own memory anymore, it'll just get moved to the new thing i'm working on
20:28:03  <tjfontaine>to be beside where he does the [de]allocation in his new model
20:34:02  <trevnorris>wasn't there an agreement that _charsWritten could go?
20:34:05  * c4miloquit (Remote host closed the connection)
20:34:16  <trevnorris>changing that value in js land is enough a performance hit that I care.
20:39:19  * mikealjoined
20:49:56  * mikealquit (Ping timeout: 258 seconds)
21:03:15  <tjfontaine>bnoordhuis: btw I know you guys want to start doing proper uv releases, so the upgrade pattern in https://github.com/joyent/node/pull/5125 is probably wrong
21:14:07  * wolfeidauquit (Remote host closed the connection)
21:15:48  * mikealjoined
21:20:20  * mikealquit (Ping timeout: 252 seconds)
21:22:02  * kazuponjoined
21:26:57  * kazuponquit (Ping timeout: 276 seconds)
21:37:33  * TooTallNatejoined
21:42:27  * stephankquit (Read error: Operation timed out)
21:46:40  <TooTallNate>isaacs: you gotta update node-gyp in npm pretty soon
21:46:47  <TooTallNate>it's at v0.9.x now
21:46:53  <isaacs>TooTallNate: sweet
21:47:15  <isaacs>tjfontaine: yeah, could be related
21:49:02  * stephankjoined
21:49:36  * indexzeroquit (Quit: indexzero)
21:50:06  <tjfontaine>isaacs: the cluster-bind-twice on windows could be as well, failing to write to ipc because it's already been closed, I can see in the second worker that process._errno is EOF
21:51:15  * hzjoined
21:57:24  * benoitcquit (Excess Flood)
22:02:16  * benoitcjoined
22:05:49  * bradleymeckjoined
22:08:48  <trevnorris>bnoordhuis: the HeapProfiler code is what allows me to see buffers with tools like your node-profiler?
22:13:03  <isaacs>ok, the JavaScript here is clearly not in error.
22:13:11  <isaacs>we're getting an EOF out of libuv
22:13:25  <isaacs>bnoordhuis: you around?
22:13:48  <trevnorris>isaacs: how do you reproduce the error?
22:14:06  <isaacs>trevnorris: i run this:
22:14:06  <isaacs>while (make -j4 && for i in `seq 100`; do echo $i; ./node test/simple/test-child-process-fork-getconnections.js || break; done); do echo "still going..."; done
22:14:14  <tjfontaine>heh
22:14:17  <trevnorris>while back i found a thread race condition where one thread would delete the handle before the other.
22:14:42  <trevnorris>that was trying to access it
22:16:15  * mikeal1joined
22:22:08  <trevnorris>isaacs: how long should it take?
22:22:22  * Kakeraquit (Ping timeout: 252 seconds)
22:22:38  * kazuponjoined
22:22:53  <isaacs>trevnorris: usually only a few minutes
22:22:58  <isaacs>trevnorris: one or two passes.
22:23:13  <isaacs>trevnorris: fwiw, i've had greater sucess failing it on ia32 than x64, on darwin
22:23:15  <tjfontaine>though it's easiest to reproduce on osx and windows
22:23:20  <isaacs>yes
22:23:33  <trevnorris>yeah... been running for ~5 mins and nothing
22:23:46  <trevnorris>well, since you posted it
22:25:26  * piscisaureus_joined
22:25:38  <piscisaureus_>what is the preferred way of getting node on a mac?
22:25:48  <piscisaureus_>using the installer? or do most people use other means?
22:26:27  <tjfontaine>installer
22:26:37  <isaacs>piscisaureus_: make install
22:26:43  <trevnorris>isaacs: just out of curiosity, can you tell me if this reproduces it: https://gist.github.com/trevnorris/5225247
22:26:46  <isaacs>piscisaureus_: but most people click the green button
22:26:51  * bradleymeckquit (Quit: bradleymeck)
22:27:26  * kazuponquit (Ping timeout: 252 seconds)
22:28:05  <piscisaureus_>isaacs: I was doing a quick count on downloads. *if* most people use the installer then there are almost 4 times as many windows users than there are mac users
22:28:32  <piscisaureus_>or, windows people are 4x dumber and they download the file 4 times before installing :-p
22:29:01  <tjfontaine>or windows users are more trained to update often
22:29:02  <isaacs>piscisaureus_: or a lot of mac users install from brew or src.
22:29:16  <piscisaureus_>yes, so that's why I was asking how people obtain it
22:29:16  <isaacs>piscisaureus_: how are you counting downloads?
22:29:28  <tjfontaine>I would guess a lot of the motivated people use brew or other terrible solutions
22:29:34  * qmxchanged nick to qmx|away
22:29:39  <tjfontaine>which depresses me
22:29:41  <isaacs>mac developers are usually pretty ok with the command line.
22:29:45  <trevnorris>tjfontaine: have you been able to reproduce the error?
22:29:59  <tjfontaine>piscisaureus_: you should be looking at the clone counts from github :)
22:30:06  <trevnorris>oh, and is this on master or v0.10.x
22:30:06  <tjfontaine>trevnorris: on mac yes
22:30:09  <piscisaureus_>isaacs: https://gist.github.com/piscisaureus/5225260
22:30:10  <tjfontaine>yes
22:30:13  * bradleymeckjoined
22:30:23  <piscisaureus_>isaacs: note that takes years to complete
22:30:24  <trevnorris>tjfontaine: yes? to which, both?
22:30:27  <tjfontaine>trevnorris: yes
22:31:16  <trevnorris>well... don't know if i'll be able to reproduce it. does osx use bash, or something similar?
22:31:27  <cjd>yeah bash
22:31:32  <cjd>and hi
22:31:40  <piscisaureus_>tjfontaine: I though github stopped providing stats?
22:32:30  <tjfontaine>hm perhaps
22:34:33  * sblomquit (Ping timeout: 276 seconds)
22:39:17  <bnoordhuis>guys, i want to show you a (wip) work of art: https://gist.github.com/bnoordhuis/3fafd09f65a789dd98bc
22:39:30  <bnoordhuis>i call it "c89 + atomic_ops = libuv"
22:39:54  <tjfontaine>heh
22:40:43  * bradleymeckquit (Quit: bradleymeck)
22:41:17  <isaacs>trevnorris: osx is unix, man. it's got bash, all the goodies, etc.
22:41:49  <isaacs>bnoordhuis, piscisaureus_: So, afaict, it looks like read() is returning 0 incorrectly in some cases.
22:41:57  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
22:42:05  <bnoordhuis>isaacs: what read()?
22:42:21  <tjfontaine>pipe/ipc I think
22:42:24  <isaacs>bnoordhuis: deps/uv/src/unix/stream.c
22:42:28  <isaacs>bnoordhuis: it's TCP
22:42:45  <piscisaureus_>isaacs: uv_read can return 0 in some cases in which case nothing got read :)
22:42:49  <piscisaureus_>although it should be rare
22:43:01  <trevnorris>ugh. trying with ia32, still running script. still can't reproduce. well, sorry.
22:43:03  <isaacs>tjfontaine: no, the pipe/ipc has some oddball behavior where it always sends the last-sent handle, but that's actually not new, or a bug, perse.
22:43:05  <piscisaureus_>s/return/report
22:43:16  <tjfontaine>isaacs: mk
22:43:27  <isaacs>piscisaureus_: well, uv_read is returnign 0 and also setting the error to EOF
22:43:35  <bnoordhuis>i think i'm missing some context here...
22:43:44  <piscisaureus_>isaacs: euh, that should not happen. EOF should report -1
22:43:57  <isaacs>oh, i mean, yeah
22:44:03  <isaacs>uv_read is returning -1
22:44:10  <isaacs>*read()* is returning 0 bytes read
22:44:31  <isaacs>but the other side has definitely not ever sent a FIN
22:45:10  <bnoordhuis>the syscall read() returns 0? that's a EOF
22:45:31  <isaacs>bnoordhuis: yes... but... that makes no sense here.
22:45:52  <isaacs>that's why test/simple/test-child-process-fork-getconnections.js is failing
22:46:11  <isaacs>the child proc gets an EOF on the socket, and then the JavaScript does the right thing, and dutifully destroys it
22:46:21  <bnoordhuis>what operating systems have you seen that on?
22:46:43  <isaacs>bnoordhuis: os x
22:46:51  <isaacs>bnoordhuis: rarely, though
22:46:58  <bnoordhuis>ah... anything is possible on os x
22:47:01  <tjfontaine>jenkins has seen it on almost all, but most often from osx and windows
22:47:13  <tjfontaine>lemme find an example from linux
22:47:20  <isaacs>bnoordhuis: usually this will fail: for i in `seq 100`; do echo $i; ./node test/simple/test-child-process-fork-getconnections.js || break; done
22:51:01  <bnoordhuis>something completely different: http://en.cppreference.com/w/cpp/atomic/atomic_compare_exchange
22:51:44  <bnoordhuis>atomic_compare_exchange lets you specify different memory models for the success and failure case
22:52:16  <bnoordhuis>does anyone know an example of when you'd want that?
22:54:44  * c4milojoined
22:55:32  <piscisaureus_>does node-gyp set a particular user-agent when it downloads the node.js source tarball?
22:57:43  <isaacs>piscisaureus_: ask TooTallNate
22:57:56  <piscisaureus_>yeah. Will do when he's here :)
22:58:14  <tjfontaine>piscisaureus_: looking through it, no
22:58:23  <tjfontaine>just url and potentially proxy
22:58:56  <tjfontaine>https://github.com/TooTallNate/node-gyp/blob/master/lib/install.js#L119-153
22:59:17  * rendarquit
23:02:37  <cjd>ooo is node-gyp a gyp clone w/o any python dependency?
23:02:47  * wolfeidaujoined
23:02:56  <tjfontaine>no, it's a driver that sets the environment up right more or less
23:03:09  * stagasquit (Ping timeout: 276 seconds)
23:03:21  * `3Equit (Quit: gnite)
23:03:49  <cjd>I have a little dead project to convert maven pom.xml files into js scripts and then write a library which builds java projects with node
23:07:43  <tjfontaine>isaacs, bnoordhuis: ok I take it back, all instances of getconnections failing on !osx were related to other issues
23:08:10  * stagasjoined
23:09:18  <isaacs>ok, so, we're *definitely* never calling shutdown from the other side, and we're *definitely* getting an EOF. wtf, darwin!?
23:10:34  * benoitcquit (Excess Flood)
23:13:09  * indexzerojoined
23:14:07  <isaacs>tjfontaine, bnoordhuis: thoughts about just skipping this test on OS X?
23:14:32  <tjfontaine>I'm +1 at least for the interim
23:15:05  <cjd>} while (ret == EOF && os == DARWIN && ++i < 10); :P
23:15:58  <bnoordhuis>isaacs: i don't know. that's looking the other way when you know something bad is happening
23:16:06  <isaacs>yeah
23:16:08  <isaacs>it sucks.
23:18:07  <cjd>I have a test where I setup a TUN device and then send a packet through it, OSX sets up the tun asynchrnously so binding the UDP socket to the tun's address fails unless I sleep for a second
23:19:17  * benoitcjoined
23:20:11  <isaacs>cjd: i've actually tried the "retry 10 times" approach
23:20:20  <isaacs>cjd: when it's in this state, it's like something is ending the socket that isn't us.
23:20:28  <isaacs>read() returns 0 1000 times in a row if you try it
23:20:34  * loladiroquit (Quit: loladiro)
23:20:36  <cjd>oh interesting
23:20:42  <cjd>even if you sleep?
23:21:02  <isaacs>yeah
23:21:09  <cjd>that's really weird
23:21:16  <tjfontaine>isaacs: have you wireshark'd it?
23:21:27  * wolfeidauquit (Read error: Connection timed out)
23:22:16  * wolfeidaujoined
23:23:11  * kazuponjoined
23:23:50  <isaacs>tjfontaine: seems i don't have wireshark on this machine... rectifying this situation
23:24:08  <tjfontaine>well there's always tcpdump
23:25:05  <piscisaureus_>I have to go. Later.
23:25:06  <piscisaureus_>&
23:25:12  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
23:25:59  <isaacs>TooTallNate: You should publish a node-waf module
23:27:27  <tjfontaine>that just errors and sumbits a bug that the module should update to gyp
23:27:30  * kazuponquit (Ping timeout: 245 seconds)
23:27:31  <tjfontaine>:)
23:27:32  <bnoordhuis>isaacs: it's not tcp simultaneous open, is it?
23:27:49  <bnoordhuis>i don't know if os x actually supports that
23:29:27  <bnoordhuis>google doesn't know either, it seems
23:30:36  * benoitcquit (Excess Flood)
23:30:37  <bnoordhuis>compiling gcc 4.8. exciting!
23:33:43  <trevnorris>fucking heap profiler. the code i need for that larger than my allocator.
23:33:46  <cjd>4.8 has clang style errors w/ macro unrolling
23:33:46  * benoitcjoined
23:34:08  <isaacs>bnoordhuis: simultaneous open?
23:34:14  <isaacs>bnoordhuis: that sounds like a possibility
23:34:30  <isaacs>bnoordhuis: the server is created in the master process, and sends the sockets to a forked child.
23:34:45  <isaacs>bnoordhuis: recvmsg style
23:37:34  <isaacs>i can never figure out tcpdump
23:37:51  <isaacs>how do i tell it to tell me about all packets going over port 12346 to localhost?
23:38:13  <isaacs>sudo tcpdump 'tcp port 12346 and ip host localhost' <-- zero packets captured
23:39:22  * loladirojoined
23:46:14  <isaacs>bnoordhuis: how would i tell if it's doing simultaneous open?
23:46:24  <isaacs>bnoordhuis: at this point, i think the best option is just to say that cluster doesn't work on mac, and that's that.
23:46:41  <isaacs>bnoordhuis: or, actually, cluster would work fine.
23:46:49  <isaacs>but sending a connection to the child proc does not work.
23:46:53  <isaacs>it might just randomly die on you
23:47:23  <bnoordhuis>isaacs: re simultaneous open, when the peer and local address are the same
23:48:09  <isaacs>bnoordhuis: it's a server that sends the socket to a child proc. net.connect(localhost, port) etc.
23:48:34  <isaacs>bnoordhuis: i don't think it's simultaneous open. the client has a different remote port
23:52:51  * wolfeidauquit (Read error: Connection reset by peer)
23:53:52  * wolfeidaujoined
23:55:46  * loladiroquit (Quit: loladiro)