00:16:48  <ryah>bnoordhuis: https://gist.github.com/1440753
00:16:51  <ryah>bnoordhuis: what do you think?
00:19:22  <bnoordhuis>ryah: hrm, it makes the delta with 0.6 incredibly big
00:19:35  * bnoordhuisforesees merging pains
00:20:17  <bnoordhuis>what if you add a -> #define static_var NODE_VAR(static_var) at the top of source files?
00:21:03  <bnoordhuis>how is NODE_VAR() defined?
00:21:29  <ryah>line 884
00:22:07  <ryah>i mean - we have to wrap these guys somehow
00:22:16  <ryah>if we're going to use a struct
00:22:49  <ryah>or we do the libev thing - where we use a macro for each global
00:24:30  <bnoordhuis>it'll be less noisy
00:24:37  <ryah>sure
00:24:53  <bnoordhuis>you'll want to make sure globals_get() is inline-able
00:24:55  <ryah>but we have to generate it somehow
00:25:08  <ryah>i figure we can optimize that later
00:25:20  <bnoordhuis>sure, just saying
00:25:54  <ryah>hm
00:26:18  <ryah>https://github.com/joyent/node/blob/master/deps/uv/src/unix/ev/ev_wrap.h <--
00:26:27  <ryah>we would have to generate this automatically somehow
00:26:48  <bnoordhuis>nothing perl can't solve
00:27:06  <ryah>yeah - complicates the build proces though
00:27:09  <bnoordhuis>actually, i don't think you have to
00:27:35  <bnoordhuis>why generate it if you can put the #defines in the source files?
00:28:43  <ryah>what do you mean?
00:29:14  <bnoordhuis>okay, so NODE_VAR(foo) evaluates to globals_get()->foo, right?
00:29:38  <ryah>yeah
00:29:52  <bnoordhuis>put a `#define foo NODE_VAR(foo)` define at the top of foo.cc and all references in that file to foo will do the right thing
00:30:17  <ryah>well..
00:30:32  <ryah>there are actually places where we shadow globals in node.cc
00:30:41  <ryah>in particular process
00:31:10  <ryah>also - that's a long list of defines to maintain
00:31:10  <bnoordhuis>that'll have to be fixed
00:31:16  <ryah>but i suppose it's not terrible
00:31:33  <ryah>this is all to keep the diff with v0.6 minimal
00:31:34  <ryah>?
00:31:52  <bnoordhuis>yes
00:32:10  <bnoordhuis>and because it's less typing / easier to read
00:32:20  <ryah>sign
00:32:22  <ryah>sigh
00:32:27  <ryah>not less typing for me :)
00:32:32  <bnoordhuis>haha
00:32:36  <ryah>alright. i'll do it that way
00:32:58  <ryah>i mean - this is helpful - right?
00:33:08  <ryah>we need to get all these globals into a struct somehow
00:34:56  <bnoordhuis>if tls is out then yes, a struct it is
00:41:04  <benvie>I thought they turned on forced updating for ff3.6 like a month ago. How have you escaped the assassination teams I wonder
00:42:05  <benvie>they'll get you soon if you don't upgrade
00:44:03  <bnoordhuis>benvie: my firefox has super powers
00:44:16  <bnoordhuis>also, ubuntu disabled the upgrade system
00:44:23  <benvie>oh that makes sense then
00:45:00  <benvie>you are an owner of one of the only copies of ff3.6 left. Save it, it may become valuable someday
00:54:25  <ryah>bnoordhuis: https://gist.github.com/1440865
00:55:25  <ryah>i can probably land part of this in v0.6
00:55:34  <ryah>the unshadowing and de-namespacing
00:56:41  <bnoordhuis>ryah: looks good
00:56:44  * dapjoined
00:57:03  <bnoordhuis>oh dear, baby feeding time
01:02:54  * igorziquit (Ping timeout: 265 seconds)
01:03:38  <CIA-111>node: Ryan Dahl v0.6 * r7547c7d / src/node.cc :
01:03:38  <CIA-111>node: Deshadow, denamespace variables in node.cc
01:03:38  <CIA-111>node: Prep for isolates. - http://git.io/gqpAfA
01:05:27  <CIA-111>node: Ryan Dahl master * rebe0fb6 / (41 files in 6 dirs): Merge remote branch 'origin/v0.6' (+5 more commits...) - http://git.io/-T09wA
01:10:13  * mralephquit (Quit: Leaving.)
01:11:17  * travis-cijoined
01:11:17  <travis-ci>[travis-ci] joyent/node#8 (v0.6 - 7547c7d : Ryan Dahl): The build was fixed.
01:11:17  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/fd29448...7547c7d
01:11:17  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/380793
01:11:17  * travis-cipart
01:12:30  <ryah>wow
01:12:32  <ryah>it worked
01:12:39  <ryah>[01:27|% 100|+ 308|- 0]: Done
01:12:41  <ryah>O_O
01:12:58  <ryah>mmalecki: nice job
01:16:23  * travis-cijoined
01:16:23  <travis-ci>[travis-ci] joyent/node#9 (master - ebe0fb6 : Ryan Dahl): The build is still failing.
01:16:23  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/2003593...ebe0fb6
01:16:23  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/380796
01:16:23  * travis-cipart
01:48:08  * ericktquit (Quit: erickt)
01:59:13  * igorzijoined
02:08:17  * pieternquit (Quit: pietern)
02:12:49  * isaacsquit (Quit: isaacs)
02:27:29  * ericktjoined
02:37:51  * ericktquit (Ping timeout: 252 seconds)
02:45:34  * dapquit (Quit: Leaving.)
02:45:40  * ericktjoined
02:54:26  * brsonquit (Ping timeout: 252 seconds)
03:06:50  * bnoordhuisquit (Ping timeout: 240 seconds)
03:12:05  * ericktquit (Ping timeout: 268 seconds)
05:18:30  * AvianFluquit (Ping timeout: 255 seconds)
05:23:21  * AvianFlujoined
05:35:36  * ericktjoined
05:55:21  * felixgejoined
06:01:01  * felixgequit (Quit: felixge)
06:40:20  * felixgejoined
06:40:20  * felixgequit (Changing host)
06:40:20  * felixgejoined
06:43:05  * sh1mmerquit (Quit: sh1mmer)
06:43:06  * ericktquit (Quit: erickt)
06:45:53  * felixgequit (Quit: felixge)
06:46:37  * felixgejoined
06:46:39  * felixgequit (Client Quit)
06:59:21  * felixgejoined
06:59:21  * felixgequit (Changing host)
06:59:21  * felixgejoined
07:04:44  * felixgequit (Quit: felixge)
07:16:50  * isaacsjoined
07:36:02  * isaacsquit (Read error: Connection reset by peer)
07:36:31  * isaacsjoined
07:37:06  * isaacsquit (Client Quit)
08:12:49  * felixgejoined
08:12:49  * felixgequit (Changing host)
08:12:49  * felixgejoined
08:22:43  * kuebkjoined
08:23:30  * kuebkpart
08:41:14  * mralephjoined
09:16:01  <CIA-111>node: Ryan Dahl master * re0a207c / (6 files in 2 dirs):
09:16:01  <CIA-111>node: Begin moving static vars into struct for isolates.
09:16:01  <CIA-111>node: Only node.cc, stream_wrap.cc, and tcp_wrap.cc have been done. The rest still
09:16:01  <CIA-111>node: need work. - http://git.io/j4Em5g
09:31:08  * travis-cijoined
09:31:08  <travis-ci>[travis-ci] joyent/node#10 (master - e0a207c : Ryan Dahl): The build is still failing.
09:31:08  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/ebe0fb6...e0a207c
09:31:08  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/381790
09:31:08  * travis-cipart
09:41:29  * mralephquit (Quit: Leaving.)
10:05:51  * mralephjoined
10:32:53  * mralephquit (Quit: Leaving.)
11:59:53  <mmalecki>ryah: :)
13:23:51  * bnoordhuisjoined
13:27:16  * einarosquit (Read error: Operation timed out)
13:27:55  * einarosjoined
13:37:24  <CIA-111>node: Ben Noordhuis v0.6 * reef5d32 / wscript : build: check for libkvm and libexecinfo on all the BSDs - http://git.io/hkyhCg
14:09:48  * luxigojoined
14:16:39  <CIA-111>node: koichik master * rf8c335d / (5 files in 3 dirs):
14:16:39  <CIA-111>node: tls: enable rejectUnauthorized option to client
14:16:39  <CIA-111>node: Fiexes #2247. - http://git.io/gsEBFw
14:36:13  <bnoordhuis>indutny: https://github.com/joyent/node/pull/961 <- can you give me the executive summary?
14:42:11  <indutny>one second
14:42:52  <indutny>ok so problem is quite simple
14:43:08  <indutny>ssl uses block encryption for transfering data
14:43:20  <indutny>therefore you can't decode chunk until you fully download it
14:43:53  <indutny>so when sending large pages to client with low-bandwith, browser won't be able to load dependencies until page's full load
14:43:59  <indutny>plus MTU thing
14:44:29  <indutny>so if you split data before sending it to OpenSSL
14:44:52  <indutny>in chunks of ~1300-1400 bytes, it'll faster rendered in browser
14:44:52  <indutny>https://github.com/joyent/node/pull/961
14:44:56  <indutny>sorry, wrong link
14:45:00  <indutny>bnoordhuis: http://www.belshe.com/2010/12/17/performance-and-the-tls-record-size/ ^
14:45:24  <indutny>bnoordhuis: clear?
14:45:34  <bnoordhuis>indutny: yes
14:46:07  <bnoordhuis>indutny: doesn't openssl chunk the stream by default?
14:46:25  <bnoordhuis>hmm, maybe not the way we use it
14:46:33  <indutny>bnoordhuis: nope, it's sending in blocks
14:46:34  <indutny>SSL_write
14:46:44  <indutny>probably there're other way, right
14:47:08  <indutny>but TLS performance is still bad in node.js
14:47:27  <bnoordhuis>alas, 'tis true
14:48:36  * ericktjoined
15:03:23  <pquerna>indutny> ssl uses block encryption for transfering data <- thats probally not quite an accurate way of syaing it
15:03:32  <pquerna>TLS / SSL protocol have a packet length
15:03:37  <pquerna>which can be quite large
15:03:45  <pquerna>and the whole packet has to be downloaded before decoding any of it
15:11:11  * travis-cijoined
15:11:11  <travis-ci>[travis-ci] joyent/node#11 (v0.6 - eef5d32 : Ben Noordhuis): The build passed.
15:11:11  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/7547c7d...eef5d32
15:11:11  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/382303
15:11:11  * travis-cipart
15:11:46  * travis-cijoined
15:11:46  <travis-ci>[travis-ci] joyent/node#12 (master - f8c335d : koichik): The build was fixed.
15:11:46  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/e0a207c...f8c335d
15:11:46  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/382353
15:11:46  * travis-cipart
15:18:02  <indutny>pquerna: correct
15:18:17  <pquerna>anyways, i support at the very least
15:18:23  <pquerna>sending the first ssl_write of 1500 bytes
15:18:30  <pquerna>i'm unsure abotu always chunking at 1500
15:18:35  <indutny>pquerna: why first?
15:18:41  <indutny>pquerna: http headers?
15:18:44  <pquerna>yeah
15:18:52  <pquerna>that'll get the brwoser start rendering
15:18:54  <indutny>pquerna: html dependencies are important too
15:19:06  <indutny>pquerna: yep, but it won't render anything :)
15:19:20  <pquerna>so, if we can do ssl_write() and that translates into one writev()
15:19:25  <pquerna>then I'm totally fine with 1500
15:19:33  <indutny>pquerna: hm...
15:19:43  <indutny>can we?
15:19:43  <pquerna>but if we do ssl write andwe end up doing lots of single writevs then I'd beworried
15:20:15  <indutny>pquerna: if that matters - we're doing chunking and SSL_write in one thread
15:20:30  <indutny>can we buffer that somehow and commit/send after?
15:21:46  <pquerna>its complicated with ssl, but, probally
15:22:43  <pquerna>inside that while loop, keep a list of the out buffers from the bio, and then flush them once ssl write stops / end of input
15:28:28  <indutny>bnoordhuis: ^ ;)
15:28:35  <indutny>bnoordhuis: what do you think?
15:28:41  <indutny>if we're up for chunking I'll implement that
15:33:26  <bnoordhuis>indutny: buffering kills interactivity
15:33:54  <bnoordhuis>not relevant to https but it is relevant to e.g. telnet over ssl
15:34:29  <pquerna>no, not buffering
15:34:52  <pquerna>just buffering of the buffer we already were called write on
15:35:53  <pquerna>write(buffer) { localbuf = []; while (some_left && ssl_write_not_blocking) { ssl_write(buffer+offset, 1500); offset+= 1500; /* other logic */ } writev(localbuf) };
15:36:08  <pquerna>this will create 1500 byte TLS packets
15:36:20  <pquerna>(probally want slightly smaller as discussed in the ticket)
15:37:01  <pquerna>but anyways, streams don't have writev
15:37:04  <pquerna>so anyways
15:39:13  <bnoordhuis>right, i see the point
15:47:28  * ljacksonjoined
16:00:46  * dwwwjoined
16:01:17  <dwww>Hi, folks!
16:02:34  <dwww>Am running in a problem using luvit, need your help
16:04:53  <bnoordhuis>dwww: luvit != libuv
16:11:17  <dwww>i know
16:11:29  <dwww>that's why i'm asking
16:11:49  <dwww>i do recursive walk over fs
16:12:22  <dwww>i use stat() and readdir()
16:12:56  <dwww>the loop is exited with segfault
16:14:12  <dwww>or in some cases with "string length overflow"
16:14:47  <dwww>i think i understand the cause
16:15:03  <dwww>i have some symlinks pointing to '.'
16:15:17  <dwww>this causes eternal recursion
16:19:07  * ericktquit (Quit: erickt)
16:19:54  <dwww>i added inode lookup table to not process same path twice, but it doesn't help
16:21:01  <dwww>i wonder if it's libuv issue or not?
16:21:32  <bnoordhuis>dwww: not really, uv_fs_readdir() is deliberately quite stupid
16:21:58  * sh1mmerjoined
16:23:46  <dwww>unfortunately, uv_fs_* is too low level for me to write test. wonder if you could consider adding such test in testsuite -- walk over '/'
16:24:37  <dwww>i've written in luajit+libuv, but it fails and i can't blame either for sure
16:30:54  <bnoordhuis>sorry, dinner time - biab
16:42:23  * isaacsjoined
16:45:41  <mmalecki>bnoordhuis: so, this recursion happens in opera as well. these functions and errors come from SproutCore. no idea how to fix, sproutcore is a beast which tries to redefine half of standard library.
16:51:20  * pieternjoined
17:21:08  <mmalecki>isaacs: hey, can I close https://github.com/joyent/node/pull/2261 or is it open on purpose?
17:21:41  <isaacs>i forgot to post teh "landed, thanks" comment, that's why :)
17:21:42  <isaacs>closed now
17:24:48  <mmalecki>isaacs: ok, thanks :)
17:29:35  * dapjoined
17:39:52  * ericktjoined
18:14:05  * mikealjoined
18:26:37  * dwwwpart
18:48:00  * pieternquit (Quit: pietern)
18:49:48  * brsonjoined
18:49:49  <ryah>piscisaureus__, isaacs, igorzi, bnoordhuis: can we do the call 15 minutes later?
18:49:53  <ryah>at 11:15?
18:50:00  <bnoordhuis>sure
18:50:16  <isaacs>ok sure.
18:50:23  <ryah>thanks. see you then.
18:54:22  * mralephjoined
19:03:23  <piscisaureus__>20:15 sure
19:14:23  * mikealquit (Quit: Leaving.)
19:19:46  <ryah>piscisaureus__, isaacs, igorzi : call
19:19:51  <piscisaureus__>ryah: igori: sorry - another call is is over time
19:30:23  * mjr_joined
19:31:51  * isaacsquit (Quit: isaacs)
19:31:57  * mikealjoined
20:04:49  <bnoordhuis>https://github.com/bnoordhuis/libuv/compare/v0.6...walk-handles <- handle walker, libuv implementation
20:04:58  <bnoordhuis>https://github.com/bnoordhuis/node/compare/v0.6...print-handles <- print handles on SIGUSR1, node implementation
20:06:49  <piscisaureus__>bnoordhuis: why do we need a handle walker?
20:07:17  <bnoordhuis>piscisaureus__: to walk handles
20:07:30  <bnoordhuis>also, it's a useful debugging tool
20:13:36  * mikealquit (Quit: Leaving.)
20:14:13  * isaacsjoined
20:18:43  * dapquit (Quit: Leaving.)
20:23:23  <ryah>bnoordhuis: we should do this in master
20:23:33  <bnoordhuis>ryah: sure
20:32:17  <ryah>bnoordhuis: https://gist.github.com/1444077
20:32:25  <ryah>bnoordhuis: we need to work on file i/o at some point
20:32:49  <bnoordhuis>ryah: tell me about it :/
20:34:04  * mikealjoined
20:43:56  <piscisaureus__>https://github.com/joyent/node/pull/2038 <-- omg
20:44:41  <ryah>dang
20:45:06  <mmalecki>piscisaureus__: I briefly read that code. it's actually pretty clever.
20:45:47  <piscisaureus__>yeah but what about propose a change briefly before spending a month implementing it
20:46:18  <mmalecki>agreed
20:48:18  <piscisaureus__>there's probably a lot of good stuff
20:48:22  <piscisaureus__>but it's mixed with cluster.eachWorker(callback)
20:48:51  <ryah>we should encourage this guy
20:49:01  <ryah>it would be great to have someone dedicated to working on the cluster module
20:49:01  <piscisaureus__>he is pretty productive
20:49:16  <ryah>but i do want the API to be minimal
20:49:21  <piscisaureus__>let's invite him here
20:49:24  <ryah>it seems he's going happy-go-lucky adding methods
20:50:12  <ryah>yes
20:50:19  <piscisaureus__>doing it
20:52:13  <ryah>i think we need to get him to do a minimal first patch
20:57:16  * ericktquit (Quit: erickt)
21:07:41  * dapjoined
21:31:26  <ryah>isaacs:
21:31:26  <ryah>=== release test-zlib-random-byte-pipes ===
21:31:26  <ryah>Path: simple/test-zlib-random-byte-pipes
21:31:26  <ryah>node.js:201
21:31:26  <ryah> throw e; // process.nextTick error, or 'error' event on first tick
21:31:29  <ryah> ^
21:31:31  <ryah>^-- failing on master
21:32:19  <CIA-111>node: Ryan Dahl master * r06d86eb / (src/node_http_parser.cc src/node_vars.h): Move node_http_parser.cc global vars into node_vars.h - http://git.io/NqOZwQ
21:40:10  * ericktjoined
21:47:35  * travis-cijoined
21:47:35  <travis-ci>[travis-ci] joyent/node#13 (master - 06d86eb : Ryan Dahl): The build was broken.
21:47:35  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/f8c335d...06d86eb
21:47:35  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/383669
21:47:35  * travis-cipart
21:54:16  * ericktquit (Quit: erickt)
22:12:40  * ericktjoined
22:21:30  * ericktquit (Quit: erickt)
22:23:46  <CIA-111>node: Ben Noordhuis v0.6 * r22c2c34 / src/fs_event_wrap.cc :
22:23:46  <CIA-111>node: fs: fix fs.watch() segmentation fault
22:23:46  <CIA-111>node: The binding layer failed to initialize the event string if both UV_RENAME and
22:23:46  <CIA-111>node: UV_CHANGE were set.
22:23:46  <CIA-111>node: Fixes #2287. - http://git.io/OjIeMQ
22:25:44  * ericktjoined
22:26:26  <indutny>I think I'll write article about node's debugger
22:26:33  <indutny>noone knows about it
22:27:03  <indutny>:(
22:27:53  <mmalecki>indutny: yes, please :)
22:28:12  * ericktquit (Client Quit)
22:28:39  <indutny>mmalecki: oh, you too?
22:28:52  <indutny>;(
22:29:11  <mmalecki>indutny: no, I tried it, I just didn't have time to do a deep dive :)
22:29:17  <indutny>hehe
22:29:25  <indutny>oh
22:29:31  <mmalecki>indutny: don't be sad, you've done an awesome job with it :)
22:29:32  <indutny>backtrace problem
22:29:38  <indutny>forgot about it
22:30:06  <piscisaureus__>indutny: is it possible to interrupt a running process with the debugger?
22:30:14  <indutny>piscisaureus__: should be
22:30:15  <piscisaureus__>with some command?
22:30:35  <indutny>piscisaureus__: node debug -p
22:30:40  <indutny>piscisaureus__: and process id
22:30:48  <piscisaureus__>indutny: yeah ok
22:31:01  <piscisaureus__>indutny: I mean, when I have the debug repl and my program is running
22:31:19  <piscisaureus__>i just want to enter something on the command line and have it interrupt as asap
22:31:34  <piscisaureus__>like, as soon as v8 is hit
22:32:23  <indutny>piscisaureus__: ah
22:32:31  <indutny>piscisaureus__: I think no
22:32:38  <indutny>but you can add an breakpoint
22:32:46  <indutny>piscisaureus__: anyway I'll implement that
22:32:53  <indutny>what's good name for that?
22:33:09  <piscisaureus__>pause
22:33:15  <piscisaureus__>break
22:33:16  <indutny>piscisaureus__: k
22:33:17  <piscisaureus__>interrupt
22:34:03  <indutny>break won't work
22:34:04  <piscisaureus__>indutny: while you're at it, there's also an issue with the debugger repl
22:34:10  <piscisaureus__>ah sure
22:34:28  <piscisaureus__>indutny: if the child writes something, node does a good job preserving the repl prompt
22:34:35  <piscisaureus__>but the cursor position is reset to position 0
22:34:58  <indutny>hm, you mean no "debug>" at the start of the line?
22:35:13  <igorzi>async-break
22:35:47  <piscisaureus__>induty: no, I mean that the cursor moves back to the first position in the repl line. So everything you type gets prepended before what is already there
22:35:53  <indutny>igorzi: that'll confuse many
22:36:06  <indutny>piscisaureus__: how can I reproduce it?
22:36:16  <indutny>piscisaureus__: on what platform that appears?
22:36:31  <indutny>igorzi: I like `pause`
22:36:49  <indutny>igorzi: same name in developer tools
22:36:52  <piscisaureus__>induty: happens on windows at least
22:37:22  <piscisaureus__>var i = 0;
22:37:23  <piscisaureus__>setInterval(function() {
22:37:23  <piscisaureus__> console.log(++i);
22:37:23  <piscisaureus__>}, 100) ;
22:37:23  <piscisaureus__>indutny: ^-- try to enter something in the debug repl while that runs
22:37:24  <igorzi>indutny: yep, pause sounds godo
22:37:30  * travis-cijoined
22:37:30  <travis-ci>[travis-ci] joyent/node#14 (v0.6 - 22c2c34 : Ben Noordhuis): The build passed.
22:37:30  <travis-ci>[travis-ci] Change view : https://github.com/joyent/node/compare/eef5d32...22c2c34
22:37:30  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/node/builds/383870
22:37:30  * travis-cipart
22:37:51  <indutny>piscisaureus__: one moment
22:40:26  <indutny>ah, I see
22:40:30  <indutny>interesting :)
22:47:25  <mjr_>Hey libuv-ers, here's another Tale From Production with node 0.6 that's quite mysterious.
22:47:26  <mjr_>https://gist.github.com/047f4a3e89f3a9ed195d
22:48:10  <mjr_>node process runs at 100% CPU for some reason, strace says that it's blasting bytes to a socket that's closed. Somehow we don't detect this.
22:48:38  <mjr_>I'm not sure if this is in our code or what, but it's really strange behavior.
22:49:18  <piscisaureus__>hmm, that looks broken
22:49:25  <piscisaureus__>this is bnoordhuis' territory
22:49:39  <piscisaureus__>(as is almost everything nowadays)
22:49:42  <mjr_>heh
22:50:20  <piscisaureus__>mjr_: but are you using pipes for something? or is this stdout?
22:50:35  <mjr_>not using pipes on purpose, no.
22:50:44  <mjr_>It's all HTTP and HTTPS.
22:50:52  <mjr_>Oh, I guess it's also TCP to Redis.
22:52:30  <piscisaureus__>I don't think linux sends SIGPIPE for broken sockets right?
22:52:50  <mjr_>oh, I dunno. That's an interesting observation
22:53:28  <bnoordhuis>piscisaureus__: it does
22:54:12  <bnoordhuis>uv pipes are unix sockets, for that matter
22:54:39  <bnoordhuis>mjr_: that strace log is unfiltered? iow raw, nothing stripped?
22:54:44  <mjr_>yes
22:54:47  <piscisaureus__>bnoordhuis: no I meant tcp sockets
22:55:03  <bnoordhuis>piscisaureus__: those too
22:55:04  <mjr_>so it's stuck in a tight loop, and I guess the data is changing. I haven't bothered to decode the bytes though.
22:55:47  <bnoordhuis>odd... EPIPE should fire the write callbacks and close the handle
22:56:38  <mjr_>We are pushing node pretty hard today, but the code has changed very little in the past few days. The main thing is just the volume.
22:57:22  * felixgequit (Quit: felixge)
22:57:45  <bnoordhuis>mjr_: you're running v0.6.5?
22:58:07  <mjr_>oh shit, 0.6.4. I thought we had updated.
22:58:14  <mjr_>Well, I will if you think that will help.
22:58:43  <bnoordhuis>no, not really - v0.6.5 was a bug fix release for windows
22:59:22  <bnoordhuis>let me check that strace log some more
22:59:43  * dapquit (Quit: Leaving.)
23:00:02  <piscisaureus__>bnoordhuis: https://github.com/joyent/node/blob/master/lib/net.js#L468
23:00:32  <mjr_>ha
23:00:49  <piscisaureus__>bnoordhuis: we are just ignoring errors I thing
23:01:06  <mjr_>How are those strace byte strings escaped? Trying to figure out what that data is to see if I can figure out what socket it was.
23:01:13  <piscisaureus__>https://github.com/joyent/node/blob/v0.6/lib/net.js#L468
23:01:39  <piscisaureus__>mjr_: looks octal
23:03:32  <mjr_>Trying to figure out what 25, 3, 0, 0 and a space is.
23:04:57  <bnoordhuis>mjr_: try this -> perl -pe 's/(\\(\d{1,3}))/chr oct $2/eg'
23:05:13  <mjr_>perl? Don't mind if it do!
23:06:23  <bnoordhuis>seems to be binary data... some character encoding maybe?
23:06:29  <mjr_>So we shuffle around a lot of binary data. That doesn't look like our audio format though.
23:06:43  <mjr_>of course, strace truncates the args, so maybe it is
23:06:51  <mjr_>We also move JPG files around.
23:07:03  <mjr_>I'm not sure what those look like.
23:07:09  * dapjoined
23:08:27  <bnoordhuis>mjr_: next time it happens, can you try `strace -e write=84` (where 84 is the fd that is erroring)
23:08:33  <mjr_>sure
23:08:45  <mjr_>Happened 3 times in the last hour, so I can only assume it'll happen again.
23:11:24  * ericktjoined
23:12:17  <bnoordhuis>piscisaureus__: that 'check status' comment is kind of worrisome...
23:18:04  <ryah>mjr_: oh shit
23:18:07  <ryah>that's not good
23:18:21  <ryah>we ignore the SIGPIPE signal
23:18:29  <ryah>it's returning EPIPE
23:18:42  <ryah>oh no - it does look like it's getting SIGPIPE
23:18:43  <ryah>wtf
23:18:49  <mjr_>It might be something that a specific client generated, so I don't know if it'll happen again.
23:19:24  <ryah>maybe strace displays signals even if the app ignores them
23:19:38  <ryah>so - question is why the hell are we looping there?
23:19:49  <ryah>mjr_: can you attach gdb to it?
23:19:55  <mjr_>next time, sure
23:20:02  <mjr_>I'm not running node_g
23:20:11  <ryah>normal node has symbols
23:20:14  <mjr_>What do you want to do with an attached gdb?
23:20:41  <ryah>we want to break somewhere in uv__write
23:20:47  <ryah>maybe just on uv__write
23:20:53  <ryah>and step through what's happening
23:20:57  <mjr_>OK. I'll keep watching
23:23:06  <bnoordhuis>ryah: " maybe strace displays signals even if the app ignores them" <- yes
23:23:41  <ryah>i hope it's looping in C - that will be easy to debug
23:24:11  <mjr_>If it makes you guys feel any better, we are doing this exact same thing with the Riak guys. Our recent popularity is crushing their cluster, and it's exposing all sort of interesting issues.
23:24:14  <bnoordhuis>piscisaureus__ may have nailed it already - we fail to handle errors in afterWrite() in lib/net.js
23:24:29  * bnoordhuisis patching it as we speak
23:31:13  <mjr_>no repeats yet, still watching
23:34:18  <bnoordhuis>mraleph: https://gist.github.com/61f188de167473c4187e <- that's probably all it takes to fix, but it's kind of hard to test locally
23:36:15  <mraleph>mjr_: ^^^ that was for you probably :-)
23:37:18  <bnoordhuis>oh, sorry - yes, mjr_
23:42:03  <ryah>man - what ass clown put "TODO check status" ?
23:46:32  <CIA-111>node: Ryan Dahl master * re53e9c7 / (4 files): move global vars for node_file.cc, node_zlib.cc, and node_crypto.cc - http://git.io/7ylcHA
23:48:54  <piscisaureus__>I wonder if that todo could also cause memory leaks
23:48:55  * luxigoquit (Read error: Connection reset by peer)
23:51:28  * dapquit (Quit: Leaving.)
23:53:34  * luxigojoined
23:57:33  * dapjoined