00:02:42  * mcavagequit (Remote host closed the connection)
00:04:35  <isaacs>piscisaureus_: news to me.
00:04:38  <isaacs>piscisaureus_: so, yeah, bug
00:05:02  <isaacs>piscisaureus_: is it because the ipc channel is still open?
00:05:32  <piscisaureus_>isaacs: well, in that case node shouldn't exit, because the ipc channel isn't unref()ed
00:05:39  <piscisaureus_>I think maybeClose() is somehow not called
00:06:41  <isaacs>yeah, that sounds like a reasonable hypothesis
00:06:50  * loladiroquit (Quit: loladiro)
00:09:20  <piscisaureus_>wait, maybe this is windows-specific
00:09:24  <piscisaureus_>let's try linux
00:12:20  <piscisaureus_>nope, on linux too
00:16:36  * loladirojoined
00:20:24  <piscisaureus_>isaacs: it looks like after a child process exits, it's IPC channel is never cleaned up
00:20:39  <isaacs>piscisaureus_: that's a bug
00:20:47  <piscisaureus_>oh my
00:21:02  * mmaleckiquit (Ping timeout: 265 seconds)
00:27:34  * loladiroquit (Quit: loladiro)
00:35:29  * loladirojoined
00:37:00  * loladiroquit (Client Quit)
00:38:49  * bnoordhuisquit (Ping timeout: 244 seconds)
00:39:53  * dshaw_quit (Quit: Leaving.)
00:43:02  <piscisaureus_>isaacs: aha; setupChannel overwrites the handle.onread data callack so data/closes/eofs are never emitted on the socket object
00:45:23  * loladirojoined
00:48:05  * ericktquit (Quit: erickt)
00:56:31  * ericktjoined
00:58:20  * dapquit (Quit: Leaving.)
01:09:21  * ericktquit (Ping timeout: 272 seconds)
01:26:25  <CIA-131>node: Bert Belder reviewme * r191b4d4 / lib/child_process.js : child process: fix processes with IPC channel don't emit 'close' - http://git.io/4SqMAw
01:26:29  <piscisaureus_>^-- isaacs: bnoordhuis: opinions?
01:31:10  * paddybyersquit (Quit: paddybyers)
01:37:14  * ArmyOfBrucequit (Excess Flood)
01:37:40  * ArmyOfBrucejoined
01:39:40  * pooyaquit (Quit: pooya)
01:54:28  * lohkeyquit (Quit: WeeChat 0.3.8)
01:57:26  * TooTallNatequit (Quit: Computer has gone to sleep.)
02:05:00  * ericktjoined
02:32:21  * pooyajoined
02:50:18  * brson_quit (Ping timeout: 256 seconds)
03:17:29  * avalanche123joined
03:38:58  * indexzerojoined
03:39:52  * c4milojoined
04:03:57  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
04:12:08  * dshaw_joined
05:04:31  * ericktquit (Quit: erickt)
05:04:37  * c4miloquit (Remote host closed the connection)
05:22:30  * avalanche123quit (Quit: Computer has gone to sleep.)
05:42:11  * avalanche123joined
05:42:19  * ibobrikjoined
05:52:36  * dshaw_quit (Quit: Leaving.)
05:56:30  * ibobrikquit (Quit: ibobrik)
05:58:18  * loladiroquit (Quit: loladiro)
06:11:50  * avalanche123quit (Quit: Computer has gone to sleep.)
06:23:09  * TheJHjoined
06:27:21  * AvianFluquit (Read error: Connection reset by peer)
06:30:32  * AvianFlujoined
06:33:52  * ibobrikjoined
07:29:00  * `3rdEdenjoined
07:42:33  * paddybyersjoined
07:47:04  * rendarjoined
07:54:36  * joshthecoderquit (Quit: Linkinus - http://linkinus.com)
07:57:31  * indexzeroquit (Quit: indexzero)
08:00:29  * hzjoined
08:32:07  * loladirojoined
08:32:23  * `3rdEdenquit (Quit: Leaving...)
08:32:50  * `3rdEdenjoined
08:35:22  * loladiroquit (Client Quit)
08:44:29  * AvianFluquit (Ping timeout: 244 seconds)
08:50:09  * creationixquit (Read error: Operation timed out)
08:58:12  * mmaleckijoined
09:10:47  * tjfontainequit (Ping timeout: 240 seconds)
09:10:47  * russfrankquit (Ping timeout: 240 seconds)
09:11:23  * russfrankjoined
09:11:33  * tjfontainejoined
09:11:58  * tjfontainechanged nick to Guest96921
09:40:39  <indutny>hoia
09:45:22  * creationixjoined
09:46:29  * AvianFlujoined
09:48:12  * paddybyersquit (Quit: paddybyers)
09:59:19  * mmaleckichanged nick to mmalecki[meeting
10:09:42  * TheJHquit (Ping timeout: 244 seconds)
10:17:24  * rendarquit
10:24:26  * rendarjoined
10:38:04  * mikealjoined
10:48:28  * mmalecki[meetingchanged nick to mmalecki
10:52:31  * mikealquit (Quit: Leaving.)
10:55:06  * mikealjoined
11:03:11  * paddybyersjoined
11:05:49  * abraxasquit (Remote host closed the connection)
11:22:51  * TheJHjoined
11:24:34  * rvaggquit (Ping timeout: 250 seconds)
11:38:26  * `3rdEdenquit (Quit: Leaving...)
11:47:38  * mikealquit (Quit: Leaving.)
11:48:17  * bnoordhuisjoined
11:48:38  * loladirojoined
11:48:40  * `3rdEdenjoined
11:56:32  * pooyaquit (Quit: pooya)
12:05:11  * stagasquit (Quit: ChatZilla 0.9.88-rdmsoft [XULRunner 1.9.0.17/2009122204])
12:08:47  * loladiroquit (Quit: loladiro)
12:28:01  * rvaggjoined
12:35:05  <bnoordhuis>https://github.com/bnoordhuis/node/commit/3c5b8c0 <- review? https: don't clobber user options in .request()
12:36:59  <mmalecki>bnoordhuis: +1
12:38:47  * mmaleckichanged nick to mmalecki[busy]
12:41:19  * loladirojoined
12:42:14  * paddybyersquit (Quit: paddybyers)
12:43:13  <bnoordhuis>hm, it's happening in more than one place
12:47:20  <bnoordhuis>god... http/https is such a godawful mess
12:52:23  * saghulchanged nick to saghul[away]
12:53:08  * piscisaureus_joined
12:53:15  <piscisaureus_>hey bnoordhuis
12:53:19  <piscisaureus_>no 020 today?
12:53:24  <bnoordhuis>ho piscisaureus_
12:53:28  <piscisaureus_>also, https://github.com/joyent/node/issues/3946 <-- what's not clear about that?
12:53:33  <bnoordhuis>no. mees is a little sick
12:54:09  <bnoordhuis>piscisaureus_: oh, i though they never did in cluster workers
12:54:12  <bnoordhuis>*thought
12:54:18  <piscisaureus_>ah
12:54:19  <deoxxa>bnoordhuis: jar jar ben
12:55:20  <bnoordhuis>piscisaureus_: so does your patch work?
12:55:22  <piscisaureus_>that would be "mees a little sick is"
12:55:40  <bnoordhuis>isn't that more yoda's style?
12:55:42  <piscisaureus_>bnoordhuis: yeah, but it's quite an awful hack. also it changes
12:56:05  <piscisaureus_>cp = spawn('node bla.js', ['pipe', 'pipe', 'pipe', 'ipc'])
12:56:05  <piscisaureus_>cp.stdio[3] == the ipc socket
12:56:05  <bnoordhuis>it changes what? everything?
12:56:11  <bnoordhuis>ah
12:56:12  <piscisaureus_>but after my patch it's null
12:56:16  <piscisaureus_>not that it matters
12:56:23  <piscisaureus_>since the socket effectively doesn't work
12:56:35  <piscisaureus_>because setupChannel overwrites the callbacks on the PipeWrap
12:56:45  <piscisaureus_>e.g. it sets onread to it's own little thinbg
12:56:55  <piscisaureus_>so you'd never get 'data', 'end', 'close'
12:57:04  <bnoordhuis>so why does it do that?
12:57:12  <piscisaureus_>ehm
12:57:16  <piscisaureus_>you tell me
12:57:30  <bnoordhuis>i wrote that?
12:57:44  <bnoordhuis>ah no, it was that one guy
12:57:52  <bnoordhuis>what's his name
12:57:56  <piscisaureus_>ehm, I think the guy with the glasses and the beard and the skunky pants did
12:58:54  <piscisaureus_>bnoordhuis: I don't think it matters that much tho, I mean it would allow you to snoop into the wire protocol
12:58:55  <bnoordhuis>isn't it better to, like, _not_ override onread?
12:59:09  <piscisaureus_>well, yeah
12:59:23  <piscisaureus_>but it makes for a lot of work :-)
12:59:38  <bnoordhuis>that's why we have interns
12:59:47  <piscisaureus_>indutny: ^
13:00:09  <piscisaureus_>A correct separation would be to to implement a net.Socket type that supports write2 (with a handle)
13:00:21  <bnoordhuis>yeah, that sounds reasonable
13:01:14  <piscisaureus_>also, i've been complaining about this before
13:01:38  <piscisaureus_>Creating an ipc pipe shouldn't automatically parse these messages
13:01:49  <piscisaureus_>it should just create a socket that supports write2 :-)
13:02:08  <bnoordhuis>i can live with that
13:02:10  <bnoordhuis>now make it so
13:02:13  <piscisaureus_>anyway, we can't do this in node 0.7
13:02:16  <piscisaureus_>*0.8
13:02:28  <piscisaureus_>so that's why we should just land my patch
13:02:32  <piscisaureus_>I will add a test
13:02:38  <bnoordhuis>are people actually complaining about it?
13:02:46  <piscisaureus_>no
13:02:53  <piscisaureus_>yes, I am - as a node user
13:03:02  <bnoordhuis>yes, but you don't count
13:03:12  <piscisaureus_>bnoordhuis: I wrote this mini module for c9 use: https://github.com/piscisaureus/child-process-close
13:03:19  <bnoordhuis>no offense btw :)
13:03:32  <bnoordhuis>yeah, i saw the email
13:03:33  <piscisaureus_>bnoordhuis: so I run the tests... v0.8 doesn't behave like 0.8
13:03:41  <piscisaureus_>only 0.6 does :-)
13:04:15  <bnoordhuis>okay, land the patch if you think it works
13:04:23  <piscisaureus_>I will add a test
13:04:27  <bnoordhuis>good
13:06:32  * abraxasjoined
13:11:09  * abraxasquit (Ping timeout: 260 seconds)
13:11:41  * loladiroquit (Quit: loladiro)
13:16:09  <creationix>hmm, can't seem to build v0.6.21 on linux
13:16:11  <creationix>../src/node_zlib.cc:29:18: fatal error: zlib.h: No such file or directory
13:16:22  <creationix>we don't depend on system zlib do we
13:16:31  <creationix>(my only custom options were a custom prefix and disabling ssl)
13:17:18  <piscisaureus_>creationix: we do on 0.6 I think
13:17:44  <piscisaureus_>creationix: you could try the gyp build :-)
13:17:56  <creationix>oh right, this is 0.6
13:18:03  <piscisaureus_>we have to move over
13:18:16  <creationix>ok, installing zlib1g-dev helped, now I get another error
13:18:26  <creationix>agreed, then I won't need to build 0.6 anymore :)
13:18:30  <piscisaureus_>"hard disk empty" ?
13:19:01  <creationix>/home/tim/nvm/src/node-v0.6.21/out/../src/platform_linux.cc:303: undefined reference to `clock_gettime'
13:19:13  <piscisaureus_>hmmm
13:19:14  <piscisaureus_>that's odd
13:19:24  <creationix>also complaining about dlerror, dlsym, and dlopen, and dlclose
13:19:38  <creationix>this is a fresh ubuntu 12.04 instance with build-essential installed
13:19:39  <piscisaureus_>creationix: is that in the linking phase or the compiling phase?
13:19:49  <creationix>linking
13:19:52  <piscisaureus_>right
13:20:02  <piscisaureus_>it should link with -lrt -lm -ldl
13:20:14  <piscisaureus_>maybe you need to reconfigure
13:20:25  <piscisaureus_>ah
13:20:32  <creationix>ok, did `make clean` and am starting over
13:20:52  <piscisaureus_>creationix: ./configure not complain that "rt" and "dl" were not found?
13:21:01  <piscisaureus_>insert "did"
13:21:18  <creationix>not that I noticed
13:21:24  <creationix>after starting over it worked
13:21:32  <creationix>I guess I need to start clean after installing zlib
13:21:53  <creationix>not sure how that affects the -lrt and -ldl flags though
13:22:02  <piscisaureus_>I have no clue
13:22:27  <creationix>is 0.6.21 not released yet?
13:22:42  <creationix>I get "v0.6.21-pre" for `node -v`
13:22:50  <creationix>I installed from the tarball on nodejs.org
13:23:28  <mmalecki[busy]>creationix: yeah, that's a known problem, it's 0.6.21
13:23:35  <mmalecki[busy]>version didn't get bumped correctly
13:24:00  <creationix>doesn't seem to affect c9.io, yay
13:28:59  * voodootikigodjoined
13:38:19  * loladirojoined
13:38:20  * loladiroquit (Client Quit)
13:49:12  * saghul[away]changed nick to saghul
13:51:07  * loladirojoined
14:02:22  <piscisaureus_>it used to affect c9.io
14:02:35  <piscisaureus_>but the proxies are also running a -pre version so that got fixed quickly
14:03:49  <mmalecki[busy]>piscisaureus_: you guys are still running 0.6 in production?
14:04:00  <piscisaureus_>mmalecki[busy]: you're busy
14:04:11  <piscisaureus_>yes, we are
14:04:20  <mmalecki[busy]>piscisaureus_: I was going on a break anyway ;)
14:04:51  <mmalecki[busy]>anyway, sorry to hear that, 0.8 gave our proxies a real speed up
14:04:55  <piscisaureus_>it would be nice if "make test" could run on multiple cores
14:05:12  <piscisaureus_>mmalecki[busy]: yeah, I'm pushing
14:05:22  <piscisaureus_>first creationix needs to make vfs work with 0.8
14:07:59  <piscisaureus_>mmalecki[busy]: so it made your proxies faster? I heard that voxer had these infamous "mountains of sadness"
14:08:55  * loladiroquit (Quit: loladiro)
14:09:12  <mmalecki[busy]>piscisaureus_: interesing. we went down from ~12 ms of roundtrip to ~8 ms of roundtrip, at average
14:09:28  <piscisaureus_>mmalecki[busy]: well, that's good to know
14:09:37  <piscisaureus_>since we are using your proxy :-)
14:09:43  <mmalecki[busy]>yup :)
14:10:05  <mmalecki[busy]>piscisaureus_: how were they using it?
14:10:16  <mmalecki[busy]>also, node-http-proxy or not?
14:10:20  <piscisaureus_>mmalecki[busy]: oh - I don't think was about the proxy
14:10:28  <piscisaureus_>it was just 0.8 in general
14:10:40  <piscisaureus_>I mean, the proxy is only a small part of our infrastructure
14:10:58  <piscisaureus_>if the IDEs start crashing then having a fast proxy isn't really that important :-)
14:11:08  <mmalecki[busy]>haha, yeah, agreed
14:11:34  <piscisaureus_>why is test-crypto-dh so terribly slow
14:11:48  <piscisaureus_>not to mention test-dh-regr
14:14:48  <piscisaureus_>^-- bnoordhuis: final.
14:14:49  <CIA-131>node: Bert Belder reviewme * rb0d2795 / (3 files in 3 dirs): child process: fix processes with IPC channel don't emit 'close' - http://git.io/wdHMkQ
14:14:59  <piscisaureus_>passes all tests (except 3 known-failures)
14:16:34  * `3rdEdenquit (Read error: Connection reset by peer)
14:18:06  * `3rdEdenjoined
14:21:25  <CIA-131>node: Bert Belder v0.8 * rb0d2795 / (3 files in 3 dirs): child process: fix processes with IPC channel don't emit 'close' - http://git.io/wdHMkQ
14:21:37  * mcavagejoined
14:24:50  * `3rdEdenquit (Read error: Connection reset by peer)
14:25:23  * `3rdEdenjoined
14:33:15  * paddybyersjoined
14:54:17  * indexzerojoined
14:59:26  * sj26quit (Quit: Rainbows!)
15:01:26  * sj26joined
15:22:33  * c4milojoined
15:26:22  * `3rdEdenchanged nick to `3E|Cooking
15:26:45  <CIA-131>libuv: Bert Belder v0.8 * r24c062c / src/win/tcp.c : windows: fix memory corruption when closing shared server sockets - http://git.io/sTd5og
15:27:13  <CIA-131>libuv: Bert Belder master * r24c062c / src/win/tcp.c : windows: fix memory corruption when closing shared server sockets - http://git.io/sTd5og
15:27:14  <CIA-131>libuv: Bert Belder master * r5eb1d19 / src/win/tcp.c : Merge branch 'v0.8' - http://git.io/layeSg
15:29:05  * travis-cijoined
15:29:05  <travis-ci>[travis-ci] joyent/libuv#637 (v0.8 - 24c062c : Bert Belder): The build was fixed.
15:29:05  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/ad7b48aeec39...24c062cc3e70
15:29:05  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2284854
15:29:05  * travis-cipart
15:29:25  * travis-cijoined
15:29:25  <travis-ci>[travis-ci] joyent/libuv#638 (master - 5eb1d19 : Bert Belder): The build passed.
15:29:25  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/a75e10504f4e...5eb1d191cce1
15:29:25  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2284856
15:29:25  * travis-cipart
15:29:41  <CIA-131>node: Bert Belder v0.8 * r9603f08 / (5 files in 3 dirs): uv: upgrade to 24c062c - http://git.io/19DB-A
15:30:39  * `3rdEdenjoined
15:31:29  <CIA-131>node: Bert Belder master * red10340 / (3 files in 3 dirs): uv: upgrade to 5eb1d19 - http://git.io/p8LB7g
15:31:32  * hzquit (Read error: Connection reset by peer)
15:32:03  * hzjoined
15:33:24  <piscisaureus_>installing ubuntu on a chromebook
15:37:40  * tellnesquit (*.net *.split)
15:41:24  * tellnesjoined
15:48:16  * mcavagequit (Remote host closed the connection)
15:48:26  * ericktjoined
15:49:57  * indexzeroquit (Quit: indexzero)
15:59:24  <saghul>piscisaureus_ how does one of those feel?
16:00:18  <piscisaureus_>well
16:00:31  <piscisaureus_>you mean, when using chromeos or when using ubuntu
16:00:36  <piscisaureus_>I have 2 here
16:00:37  <saghul>the device itself
16:00:41  <piscisaureus_>first is a prototype
16:00:42  <piscisaureus_>it sucks
16:00:44  <piscisaureus_>very slow
16:01:03  <piscisaureus_>the other one is actually okay - although a macbook is much nicer
16:01:20  <piscisaureus_>the screen isn't too good and he trackpad is much worse
16:01:30  <saghul>you got the Acer or the Samsung?
16:01:41  <piscisaureus_>this one is the samsung 550
16:01:57  <piscisaureus_>I still would not recommend buying one
16:02:18  <saghul>when they came out, just by looking at the pictures they felt too thick and too plastic-ish
16:02:37  <piscisaureus_>this one is als very plasticky
16:03:09  <piscisaureus_>but srsly if you have been staring at a retina screen all day then this thing gives you eye cancer on the spot
16:03:22  * loladirojoined
16:03:27  <Guest96921>heh
16:03:37  <Guest96921>oh damnit
16:03:43  * Guest96921changed nick to tjfontaine
16:04:08  <piscisaureus_>also, why does ubuntu make all fonts 1000 pt ?
16:04:59  <saghul>good question, we had so much trouble tweaking the UI in our Qt app because Ubuntu adds like 1cm padding everywhere
16:05:13  <saghul>everything feels big there
16:06:07  * hzquit (Read error: Connection reset by peer)
16:06:49  * hzjoined
16:06:56  <piscisaureus_>yeah, super annoying
16:07:44  <piscisaureus_>I wonder if the ubuntu devs just don't realize, or if there's some sort of stockholm syndrome going on
16:13:29  <bnoordhuis>https.globalAgent, my old enemy, we meet again...
16:14:17  <tjfontaine>I know isaacs was threatening http refactor, is that post .10 now?
16:14:33  <bnoordhuis>i don't know
16:14:38  <bnoordhuis>some spring cleanup is in order though
16:14:55  <piscisaureus_>he's right tho
16:15:00  <piscisaureus_>we haven't even started
16:15:13  <bnoordhuis>i'd start by splitting up the server and the client
16:15:30  <piscisaureus_>yes, +1
16:17:36  * dapjoined
16:18:31  <tjfontaine>I thought about tweaking js2c so that way you could drop things into a subdir to split up the code but not adding additional modules
16:18:36  <piscisaureus_>hmmm this model has only 2gb
16:18:55  <piscisaureus_>tjfontaine: the question is, is it worth it :-)
16:19:05  <tjfontaine>yes, indeed that is the question :)
16:19:07  * philips_quit (Excess Flood)
16:19:20  <piscisaureus_>tjfontaine: I would start by just splitting it up into require('_http_server') and '_http_client'
16:19:42  <tjfontaine>nod
16:22:21  * philips_joined
16:24:25  * ibobrikquit (Quit: ibobrik)
16:27:12  * loladiroquit (Quit: loladiro)
16:30:00  * avalanche123joined
16:33:06  * `3E|Cookingquit (Quit: Leaving...)
16:34:08  * pooyajoined
16:36:44  * mcavagejoined
16:41:30  <piscisaureus_>ok, I'm gone
16:41:55  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
16:48:24  <indutny>battle robot activated
16:49:16  <creationix>did we ever plan any libuv changes for the new readable stream API?
16:49:33  <creationix>the current API mirrors the old node stream api
16:49:57  <creationix>read_start, read_stop, on_data, etc..
16:51:10  * dshaw_joined
17:00:03  * avalanche123quit (Quit: Computer has gone to sleep.)
17:04:12  * ibobrikjoined
17:04:38  * TooTallNatejoined
17:19:44  <indutny>mjr_: hey
17:19:50  <indutny>mjr_: have you deployed that patch?
17:29:14  * `3rdEdenquit (Ping timeout: 264 seconds)
17:30:20  * `3rdEdenjoined
17:51:10  * brsonjoined
17:59:29  * dshaw_quit (Quit: Leaving.)
18:07:01  * tomshredsjoined
18:07:18  <mjr_>indutny: we did, but it didn't seem like it was working correctly. More testing ntoday.
18:08:14  <indutny>mjr_: ok
18:09:59  <indutny>sa
18:10:00  <indutny>sad*
18:11:04  * CIA-131quit
18:11:45  * lohkeyjoined
18:12:17  * brsonquit (Quit: leaving)
18:12:37  * brsonjoined
18:13:00  <mjr_>Seemed like maybe the clients weren't trying to resume after all. We'll figure it out.
18:15:49  * joshthecoderjoined
18:17:57  * CIA-122joined
18:25:41  <indutny>mjr_: haha
18:25:44  <indutny>mjr_: that's what I was really afraid of
18:25:54  <indutny>many clients are using tls client-side sessions
18:26:12  <indutny>probably we don't need this patch at all
18:26:13  <indutny>bnoordhuis: sorry
18:26:19  <indutny>still don't know
18:26:36  <indutny>the only good thing about this patch - is that it allows us to parse tls hello
18:26:39  <indutny>before starting connection
18:26:46  <indutny>this means async sni and npn callbacks
18:28:11  * indexzerojoined
18:39:34  * CoverSlidejoined
18:44:18  * indexzero_joined
18:46:21  * indexzeroquit (Ping timeout: 252 seconds)
18:46:22  * indexzero_changed nick to indexzero
18:52:12  * stagasjoined
18:55:48  * CoverSlidequit (Read error: Operation timed out)
18:56:47  * loladirojoined
19:13:07  * dshaw_joined
19:14:24  * mjr_quit (Ping timeout: 245 seconds)
19:16:26  * mjr_joined
19:31:38  * brsonquit (Ping timeout: 264 seconds)
19:38:03  * indexzeroquit (Quit: indexzero)
19:39:34  * dshaw_quit (Quit: Leaving.)
19:39:42  * brsonjoined
19:45:08  * tomshredsquit (Quit: Linkinus - http://linkinus.com)
19:50:49  * `3rdEdenquit (Quit: Leaving...)
20:00:58  * mmalecki[busy]quit (Ping timeout: 245 seconds)
20:14:50  <mjr_>Hey guys, we rolled out some node 0.8 into production yesterday, and we started getting a lot of these nasty crashes:
20:14:51  <mjr_>https://gist.github.com/3539304
20:16:15  <tjfontaine>soon as I saw that bad alloc I had a feeling it was going to be the slab
20:16:45  <mjr_>Woah, github gist spam
20:17:13  * CAPSLOCKBOTquit (Ping timeout: 246 seconds)
20:17:26  * ibobrikquit (Quit: ibobrik)
20:17:28  <tjfontaine>that's pretty awesome
20:17:38  * sj26quit (Ping timeout: 245 seconds)
20:18:14  <tjfontaine>I've never seen that before
20:19:28  * sj26joined
20:21:23  <mjr_>So the core file is only 432MB, and there was plenty of free memory.
20:21:31  <mjr_>This only happens in processes that use HTTPS.
20:21:52  <mjr_>Seems like something is accidentally requesting a very large allocation, and that's blowing up.
20:25:47  <indutny>mjr_: was that happening with my patch?
20:26:14  <mjr_>indutny: I'm not entirely sure, because Danny was doing the work there. I just know it didn't quite work out.
20:26:36  <mjr_>But we had to roll back from node 0.8 entirely because of this allocator thing.
20:26:47  <indutny>ok
20:28:05  <indutny>mjr_: node::Buffer::Replace(char*, unsigned int, void (*)(char*, void*), void*)+0x118(20360418, 0, 100000, 0, 0, 8046b8f)
20:28:09  <indutny>not as much data as I can see
20:28:11  <indutny>only 100kb
20:28:15  <indutny>even less
20:29:14  <mjr_>yeah, seems fine.
20:29:33  <mjr_>I'm not quite sure how to map those stacks onto the C++ source
20:29:41  <indutny>idk too
20:30:49  <indutny>well, I suppose first number is a `this`
20:31:04  <indutny>and others are arguments
20:31:08  <indutny>at least it looks like so
20:36:13  <mjr_>I took a stack from a different program on a different machine that crashed similarly, and the stack is the same.
20:36:29  <mjr_>Updated gist with it. Mysterious 0, 100000 is there.
20:37:40  <indutny>odd
20:37:57  <indutny>are you sure that rss level was low?
20:38:11  <mjr_>Yeah, these were all using around 400MB RSS.
20:38:26  <mjr_>Plenty of free memory on these 80GB machines.
20:39:19  <mjr_>If we revert back to 0.6 on the same machines with the same load, we do not get these crashes.
20:41:18  <indutny>ok
20:41:30  <indutny>I'll try to investigate something tomorrow
20:41:39  <indutny>it's to late in Moscow to clearly think about it
20:41:42  <indutny>s/to/too
20:46:59  * loladiroquit (Quit: loladiro)
20:57:19  * dshaw_joined
21:07:43  * mmalecki[busy]joined
21:13:13  * mmalecki[busy]quit (Ping timeout: 260 seconds)
21:13:37  * EhevuTovjoined
21:21:02  <creationix>piscisaureus_: btw, vfs-local and vfs-socket test against 0.8.x on every commit
21:21:22  <creationix>and both are green
21:40:39  * rendarquit
21:45:20  * loladirojoined
22:03:14  <bnoordhuis>ircretary: tell piscisaureus https://github.com/joyent/libuv/pull/541
22:03:15  <ircretary>bnoordhuis: I'll be sure to tell piscisaureus
22:12:51  * piscisaureuzjoined
22:13:20  <piscisaureuz>Bnoordhuis: i saw the build parameter patch
22:13:58  <piscisaureuz>Bnoordhuis: but gigi81 solved it much better
22:14:17  <piscisaureuz>Bnoordhuis: but he didn't sign the class yet...
22:14:20  * loladiroquit (Quit: loladiro)
22:14:44  <piscisaureuz>s/class/cla
22:14:56  <bnoordhuis>ah okay
22:14:59  <piscisaureuz>Stupid autocorrect
22:25:57  <CIA-122>node: Shigeki Ohtsu v0.8 * rf347077 / (lib/net.js lib/tls.js test/simple/test-tls-connect-pipe.js): tls: support unix domain socket/named pipe in tls.connect - http://git.io/HYdS9A
22:30:44  * dshaw_quit (Quit: Leaving.)
22:41:42  <CIA-122>node: Ben Noordhuis master * r298f6bf / src/node_crypto.cc : crypto: use CRYPTO_THREADID_set_callback() - http://git.io/_QcEIQ
22:51:03  * piscisaureus_joined
22:51:12  <piscisaureus_>ALLO
22:52:14  * brsonquit (Read error: Connection reset by peer)
22:53:10  * brsonjoined
23:03:56  * dshaw_joined
23:24:26  * mmalecki[busy]joined
23:25:55  <bnoordhuis>Bad packet length 1084226076.
23:25:55  <bnoordhuis>Disconnecting: Packet corrupt
23:26:08  <bnoordhuis>^ i don't know what's up with joyent but that happens every 5 minutes
23:26:32  <bnoordhuis>on more than one machine, even
23:27:23  <piscisaureus_>http://tomasz.janczuk.org/2012/08/the-httpsys-stack-for-nodejs-apps-on.html
23:27:27  <piscisaureus_>^-- ryah DrPizza
23:28:04  <DrPizza>https results are interesting
23:28:15  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
23:31:05  * brsonquit (Ping timeout: 244 seconds)
23:31:50  * piscisaureus_joined
23:32:56  <piscisaureus_>for node the main takeaways are,
23:32:57  <piscisaureus_> 1) improve http/close (aka accept() performance) in cluster scenarios. This is very well doable.
23:32:57  <piscisaureus_>3) TLS is slow :(. This needs investigation. TLS caching might help, but not so much for keepalive, so apparently the symmetric crypto is also slow.
23:33:00  * brsonjoined
23:33:06  <piscisaureus_>er s/3/2/
23:33:47  <piscisaureus_>the caching situation is not completely comparable, but caching is probably very useful in real-world situations
23:34:58  <piscisaureus_>btw - I worked quite extensively with tomasz, he isn't cheating
23:35:19  <piscisaureus_>in fact, we used some out-of-tree patches to fix serious bugs in node while doing the benchmark
23:35:47  <DrPizza>I'm still surprised that straight HTTP is so close
23:35:54  <DrPizza>also the HTTPS results are very odd
23:35:55  <DrPizza>imo
23:36:17  <piscisaureus_>you mean https/keepalive/cluster ?
23:36:31  <DrPizza>I would have thought that, if anything, it'd be the HTTPS/full that would see the most gain, due to the number of roundtrips to make HTTPS (lots of kernel/user transitions are skipped by http.sys)
23:36:53  <piscisaureus_>I think that we can even get much closer in the http/close/cluster scenario
23:37:03  * piscisaureuzquit (Ping timeout: 240 seconds)
23:37:03  <DrPizza>piscisaureus_: https/reconnect is 6x faster, https/keep-alive is 3x faster, those ones
23:37:14  <piscisaureus_>ya
23:37:20  <mjr_>TLS in node is very sad right now. It's slow and randomly crashy.
23:37:26  <DrPizza>whereas the one I'd expected to see the gain is https/full
23:37:29  <piscisaureus_>it surprises me too
23:37:46  <piscisaureus_>mjr_: crashy?
23:37:55  <mjr_>yes
23:37:56  <mjr_>https://gist.github.com/3539304
23:38:13  <mjr_>Also, posting gist URLs on IRC triggers spam bots
23:38:20  <piscisaureus_>DrPizza: I wonder if openssl is so much slower than cryptapi, or if maybe we're not compiling right
23:38:41  <mjr_>BUT, our node 0.8 processes that are using HTTPS crash under production load, but 0.6 does not.
23:38:44  <DrPizza>piscisaureus_: I wonder if openssl has assembler versions that aren't getting built in
23:39:03  <piscisaureus_>DrPizza: well ehm
23:39:06  <DrPizza>mjr_: weird, that is not even an ssl crash, it is a bad memory allocation (either too big, or negative)
23:39:17  <piscisaureus_>DrPizza: for x86, yes. But Tomek was using x64
23:39:34  <mjr_>DrPizza: yeah, I know it's not directly an SSL crash, but I'm pretty sure it's related.
23:39:46  <piscisaureus_>DrPizza: so I found one situation where we were not using x64 hand-crafted asm (which was not available for windows)
23:39:54  <mjr_>The processes we have that do a lot of HTTPS crash very quickly, and those that only do a little crash less often. Those that do none do not crash.
23:40:15  <piscisaureus_>DrPizza: but after a very deep dig I found out that the asm that msvc generated from the "fallback" c code is practically the same as the hand-crafted asm
23:40:25  <DrPizza>huh interesting
23:40:30  <DrPizza>also good show MSVC
23:40:51  <DrPizza>mjr_: are they running out of memory?
23:40:51  <piscisaureus_>DrPizza: however, I am afraid that we also disabled processor feature detection, so it may not be using SSE2/3 etc
23:40:57  <DrPizza>hmmm
23:41:08  <piscisaureus_>DrPizza: let me try to find the asm code. it's in a gist somewhere
23:41:08  <mjr_>DrPizza: no, plenty of memory is available, RSS is around 400MB or so.
23:41:48  <DrPizza>piscisaureus_: hm, these are nehalem processors, so they don't have AES instructions iirc.
23:41:58  <DrPizza>did nehalem have AES and the other crypto instructions?
23:42:01  <DrPizza>I thought that came in sandy bridge
23:42:03  <DrPizza>but I may be wrong
23:42:21  <piscisaureus_>DrPizza: well they have sse4 even
23:42:42  <DrPizza>hmm it's westmere for AES-NI
23:42:47  <DrPizza>does sse4 do anything good for crypto?
23:42:59  <piscisaureus_>I don't know
23:43:06  <piscisaureus_>I know there's optional sse code in openssl tho
23:44:43  <piscisaureus_>DrPizza: https://gist.github.com/3105766
23:44:57  <piscisaureus_>DrPizza: top is disassembly of compiled code, downmost is hand-crafted asm
23:45:11  <DrPizza>gross
23:48:47  <piscisaureus_>DrPizza: how can you tell that it's a wrong allocation?
23:48:58  <piscisaureus_>not just memory overflow?
23:49:26  <DrPizza>prod-nr1337.log:2226681:terminate called after throwing an instance of 'std::bad_alloc'
23:49:53  <piscisaureus_>yeah
23:49:58  <DrPizza>I think you'll get bad_alloc from both negative allocations and running out of memory
23:50:07  <piscisaureus_>but bad_alloc gets thrown in case of OOM right?
23:50:09  <piscisaureus_>yeah
23:57:58  <mjr_>There's no way we are out of memory, at least not in any obvious way
23:58:23  <mjr_>You can see the args to operator new on those stacks. They both have 100000 in them, but that seems like a reasonably sized allocation.