00:06:45  <isaacs>yeah.
00:07:02  <isaacs>digging into this deeper, it seems like the stylus tarball has something in it that the windows bsdtar just can't handle.
00:07:39  <isaacs>oh, no, it's the re-created copy that was written *by* bsdtar that has crap in it.
00:10:29  * mikealquit (Quit: Leaving.)
00:15:02  <isaacs>aha!!! yes, it is a bug in node.
00:15:07  <isaacs>in fs.readdir, to be precise.
00:15:12  <ryah>piscisaureus: you there?
00:15:20  <piscisaureus>yup
00:15:27  <ryah>can you review https://gist.github.com/28507b5ce35fcc9372dc
00:15:45  <isaacs>i'll try to work it down to a smaller test case than "try to read the stylus test case directory"
00:16:00  <ryah>isaacs: good to find this out :)
00:16:09  <ryah>i like when we find bugs before users
00:16:23  <isaacs>this isn't technically "before users" ;)
00:16:40  <isaacs>i would'nt be trying to install stylus if someone wasn't complaining about npm being unable to install it
00:16:44  <ryah>oh i see :)
00:16:54  <piscisaureus>ryah: what if kill fails for a reason other than that the pid does not exist?
00:17:20  <piscisaureus>access violation maybe?
00:17:46  <ryah>piscisaureus: do you have a good way of separating that in windows?
00:18:04  <piscisaureus>ryah: I think so
00:19:45  <ryah>piscisaureus: please advise. msdn doesnt list error codes
00:19:53  <piscisaureus>ryah: I know. a sec.
00:23:56  * mralephquit (Quit: Leaving.)
00:30:43  <piscisaureus>ryah: the line just before the one that you changed should be changed:
00:30:43  <piscisaureus>- if (process_handle == INVALID_HANDLE_VALUE) {
00:30:43  <piscisaureus>+ if (process_handle == NULL) {
00:33:21  <ryah>eh - where?
00:33:30  <piscisaureus>ryah: the correct check would be I think:
00:33:31  <piscisaureus>if (GetLastError() == ERROR_INVALID_PARAMETER) {
00:33:31  <piscisaureus> return uv__new_artificial_error(UV_ESRC);
00:33:31  <piscisaureus>} else {
00:33:31  <piscisaureus> return uv__new_sys_error(GetLastError());
00:33:31  <piscisaureus>}
00:34:11  * indexzeroquit (Quit: indexzero)
00:34:12  <piscisaureus>ah crap
00:34:19  <piscisaureus>ryah: land your stuff minus the windows part
00:34:24  <piscisaureus>ryah: I will fix it
00:34:29  <ryah>ok
00:34:54  <piscisaureus>I am stuck on domains anyway
00:36:44  <CIA-95>libuv: Ryan Dahl master * rb7da0a6 / (src/uv-common.c src/uv-common.h): Add uv__new_artificial_error() - http://git.io/YohOdg
00:36:45  <CIA-95>libuv: Tj Holowaychuk master * ra378110 / (include/uv.h src/unix/error.c test/test-spawn.c):
00:36:45  <CIA-95>libuv: Add UV_ESRCH
00:36:45  <CIA-95>libuv: Fixes #239. - http://git.io/TQYTUg
00:37:11  <CIA-95>node: Bert Belder domains2 * r91e87d6 / lib/domains.js : Typo (+12 more commits...) - http://git.io/gTGF6w
00:37:25  <piscisaureus>^-- did nothing, just rebased
00:37:40  <piscisaureus>which was not completely trivial btw
00:43:49  * indexzerojoined
00:48:23  <CIA-95>libuv: Bert Belder esrch * r2b7774a / src/win/process.c : Windows: return UV_ESRCH from uv_kill - http://git.io/5MPL6Q
00:48:32  <piscisaureus>ryah: ^-- nod?
00:51:12  <ryah>piscisaureus: yep
00:51:20  <ryah>piscisaureus: passes the test?
00:51:30  <CIA-95>libuv: Bert Belder master * r2b7774a / src/win/process.c : Windows: return UV_ESRCH from uv_kill - https://github.com/joyent/libuv/commit/2b7774ae49b73baccc43aff9c532443412fb51e3
00:51:31  <piscisaureus>yep
00:51:40  <piscisaureus>well, it doesn't fail any related
00:51:46  <piscisaureus>I didn't know there was a test :-/
00:52:00  <isaacs>ryah: test case https://gist.github.com/1349916
00:52:27  <piscisaureus>oh yeah it passes test-spawn
00:53:19  <CIA-95>node: Ryan Dahl master * r05727f6 / (6 files in 5 dirs): Upgrade libuv to 2b7774a - http://git.io/wjq5Aw
00:55:08  * pieternquit (Quit: pietern)
00:57:05  <piscisaureus>Error: wrong file count
00:57:05  <piscisaureus> at Object.oncomplete (D:\node3\bug.js:53:11)
00:57:11  <piscisaureus>^-- isaacs: that's what you're seeing?
00:57:46  <isaacs>piscisaureus: yeah
00:57:53  <isaacs>also, check out the text file it creates
00:57:59  <isaacs>bunch of "" and garbage entries
00:58:00  <piscisaureus>Error: invalid data at file #0
00:58:00  <piscisaureus> at Object.oncomplete (D:\node3\bug.js:57:37)
00:59:12  <CIA-95>libuv: Ryan Dahl master * r196e145 / src/uv-common.c : Map UV_ESRCH in uv_err_name - http://git.io/Z04QHA
00:59:59  <CIA-95>node: Ryan Dahl master * r2a462ab / src/node.js : process.kill doesn't create error obj correctly - http://git.io/wle-zA
00:59:59  <CIA-95>node: Ryan Dahl master * r3ae644d / deps/uv/src/uv-common.c : Upgrade libuv to 196e145 - http://git.io/2_qsig
01:00:37  <piscisaureus>isaacs: i'm not seeing any garbage files
01:00:41  <piscisaureus>but zeros yeah
01:00:56  <isaacs>you can try bumping up the file count.
01:01:09  <isaacs>i start seeing lots of \u0003 and random unicode junk around 256 files
01:01:11  <piscisaureus>isaacs: this happens only on windows?
01:01:14  <isaacs>yeah
01:01:19  <isaacs>works fine on unix
01:04:21  <CIA-95>node: Ryan Dahl master * rda9bf0e / (lib/cluster.js test/simple/test-cluster-kill-workers.js): Fixes #2047. Fill workers array immediately after fork - http://git.io/YykEsQ
01:04:25  <piscisaureus>isaacs: did this error also happen for you w/ write instead of writeSync?
01:04:39  <isaacs>piscisaureus: the issue isn't garbage in the files.
01:04:43  <isaacs>the issue is garbage in the directory
01:04:48  <isaacs>it doesn't matter how the fiels get there
01:05:02  <isaacs>it's the readdir call that's giving an incorrect result.
01:05:48  <isaacs>a result from fs.readdir should never be empty, or something that isn't a file in that directory
01:06:48  <isaacs>I've gotta run to class.
01:08:09  <CIA-95>node: Ryan Dahl master * r0fa3cf9 / lib/cluster.js : Remove 'report this bug' message from cluster master - http://git.io/bh-oTw
01:08:29  <ryah>https://github.com/joyent/node/blob/da9bf0ee809ea467358c5174b27b635ba2ae47ba/test/simple/test-cluster-kill-workers.js <--
01:08:36  <ryah>pretty hardcore multi-process action
01:09:05  * ryahbuilding latest on windows to see if it works there
01:09:08  <ryah>theoretically it should
01:09:25  <piscisaureus>isaacs: it looks like writeSync is not blocking
01:09:30  <piscisaureus>which is why you see the wrong file count
01:09:37  <piscisaureus>moments later, all data is there
01:10:01  <piscisaureus>garbage could be due to the out buffer being released too early
01:12:25  * dapquit (Quit: Leaving.)
01:13:27  * indexzeroquit (Quit: indexzero)
01:19:00  * indexzerojoined
01:19:54  <piscisaureus>ah I get what you mean now isaacs
01:20:04  <piscisaureus>the result from readdir is jus toff
01:21:58  <ryah>wow - test-cluster-kill-workers.js works in windows
01:22:03  <ryah>amazing
01:22:26  <ryah>it reminds me of http://www.youtube.com/watch?v=0wrsZog8qXg
01:42:15  <piscisaureus>:-)
01:42:48  * isaacsquit (Quit: isaacs)
01:46:16  * piscisaureusquit (Read error: Operation timed out)
01:48:11  * ericktquit (Quit: erickt)
01:53:15  * piscisaureusjoined
01:53:57  <piscisaureus>I know where to look for isaacs bug
01:57:08  <igorzi>piscisaureus: what the issacs bug?
01:57:26  <piscisaureus>igorzi: readdir returns incorrect results
01:57:41  <igorzi>piscisaureus: oh.. under what conditions?
01:57:53  <piscisaureus>actually in the debug build it dies in stack check
01:58:17  <piscisaureus>igorzi: https://gist.github.com/1349916
01:58:34  <igorzi>btw, did anyone have any suggestions on how to fix https://gist.github.com/1349383 ?
01:58:39  <igorzi>is doing this https://gist.github.com/1349391 incorrect?
01:58:56  <igorzi>ryah piscisaureus: --^
01:59:35  <piscisaureus>the right way would be for Stream.pipe to not close the target pipe
02:00:13  <igorzi>piscisaureus: right.. though that'll probably break existing apps that use Stream.pipe?
02:00:30  <piscisaureus>I dont know what v0.4 did
02:01:27  <piscisaureus>Maybe just add some property like dontDestroy or something
02:01:39  <piscisaureus>and make Stream.pipe look at that
02:02:27  * mikealjoined
02:03:09  <igorzi>piscisaureus: yep.. though there's the fundamental question of whether stdio streams should be destroyable.. you think so, right?
02:03:33  <piscisaureus>igorzi: well, it is a good question
02:03:56  <piscisaureus>igorzi: but I really don't have an answer that I am confident about
02:06:22  * brsonquit (Quit: leaving)
02:11:29  <igorzi>piscisaureus: did you already track down the readdir issue?
02:11:37  <piscisaureus>not really
02:11:40  <piscisaureus>Im debugging it
02:11:41  <igorzi>piscisaureus: i can look at it
02:11:57  <piscisaureus>but I think I will go sleep now and continue tomorrow
02:12:04  <piscisaureus>but if you want to look at it it's fine
02:12:35  <igorzi>piscisaureus: k.. i might look at it later tonight.. i'll let you know what progress i make
02:12:51  <piscisaureus>igorzi: yup
02:13:40  <igorzi>piscisaureus: it's actually crashing for me 50% of the time
02:14:09  <piscisaureus>heh
02:14:16  <piscisaureus>that makes debugging easy :-)
02:19:10  * piscisaureus_quit (Read error: Connection reset by peer)
02:19:45  <piscisaureus>Btw
02:20:21  <piscisaureus>Something for the nodejs benchmarking squad: @monkeywebserver: Benchmarking #NodeJS w/ Monkey: http://twitter.com/#!/edsiper/status/134091003085860866
02:22:46  <rmustacc>Wow, that guy is so shockingly wrong, it's funny.
02:22:57  <rmustacc>He does realize that it probably never went to disk after the first time.
02:23:12  <piscisaureus>it takes a syscall though :)
02:23:19  <piscisaureus>but yeah
02:23:40  * piscisaureus_joined
02:24:13  <rmustacc>Actually in the comments he pretty much admits that he doesn't know what he's doing.
02:24:49  <rmustacc>i.e. the number of workers problem.
02:24:54  <piscisaureus>heh
02:24:55  <piscisaureus>lol
02:25:10  <piscisaureus>he just posted an updated bench that read 6700 r/s
02:25:11  <piscisaureus>for node
02:25:20  <piscisaureus>which is much more consistent with the numbers we're seeing
02:25:28  <piscisaureus>now he should run w/ cluster on
02:25:50  <igorzi>btw is he running this on the same system (over loopback)?
02:26:02  <piscisaureus>probably
02:26:02  <rmustacc>igorzi: Of course. Why would you do it over the Internet?
02:26:21  <rmustacc>igorzi: But yeah, ab is reporting the hostname is localhost.
02:26:29  * piscisaureus__joined
02:27:00  <igorzi>rmustacc: i didn't say do it over the internet.. you could do it over an isolated network
02:27:16  <rmustacc>igorzi: Yeah, I was trying to be sarcastic.
02:27:35  <rmustacc>Doing it over an isolated network is a much more realistic way to benchmark these things.
02:27:39  * piscisaureus_quit (Read error: Connection reset by peer)
02:27:43  <igorzi>right ok :)
02:28:03  * piscisaureus___joined
02:28:21  <rmustacc>I had this discussion with someone the other day where he was trying to measure his NFS performance by trying to drive load over loopback mounting it.
02:29:10  <rmustacc>Doing a good benchmark involves understanding why you're actually slower.
02:31:38  * piscisaureus__quit (Ping timeout: 276 seconds)
02:33:18  <igorzi>piscisaureus: here's the crash that i get consistently: https://gist.github.com/1350140
02:33:41  <piscisaureus>yeah, that's what I have seen too
02:34:35  * AvianFluquit (Quit: Leaving)
02:36:57  <piscisaureus>If I look at the memory at [namebuf] it looks like the string got overwritten at some point
02:37:25  <piscisaureus>or maybe uv__fs_readdir realloc()s but returns the old pointer somehow
02:37:55  * mikealquit (Ping timeout: 260 seconds)
02:52:37  * isaacsjoined
02:55:44  * isaacsquit (Client Quit)
03:14:47  * isaacsjoined
03:15:38  <igorzi>piscisaureus: you still there? this is the problem: https://github.com/joyent/libuv/blob/master/src/win/fs.c#L461
03:16:21  <igorzi>isaacs: i think i have a fix for the readdir issue
03:16:51  <piscisaureus>igorzi: :-/
03:17:10  <piscisaureus>igorzi: I actually checked that but I concluded that it was right
03:17:57  <igorzi>the problem is that after a few patches buf_size has evolved to be the number of characters instead of the number of bytes :)
03:18:16  <igorzi>i'll change the name to make it more clear
03:19:07  <piscisaureus>aaaha
03:19:13  <piscisaureus>right
03:19:19  <piscisaureus>That I did not notice
03:22:31  <piscisaureus>Now I am really gone
03:27:24  <CIA-95>libuv: Igor Zinkovsky master * r942c68b / src/win/fs.c : windows: fix utf16->utf8 conversion in uv_fs_readdir - http://git.io/i3Q_Ew
03:30:49  * isaacsquit (Quit: isaacs)
03:56:40  * isaacsjoined
04:16:29  * isaacsquit (Quit: isaacs)
04:27:33  * isaacsjoined
04:27:51  * isaacsquit (Client Quit)
04:30:02  * isaacsjoined
04:32:02  * isaacsquit (Client Quit)
04:58:42  * ericktjoined
05:35:25  <indutny>isaacs: :)
05:35:26  <indutny>ping
05:36:50  * indexzero_joined
05:37:03  * indexzeroquit (Read error: Connection reset by peer)
05:37:03  * indexzero_changed nick to indexzero
05:52:17  * indexzeroquit (Quit: indexzero)
06:14:51  * ericktquit (Quit: erickt)
06:58:38  * sh1mmerquit (Quit: sh1mmer)
07:00:38  * sh1mmerjoined
07:37:43  * isaacsjoined
07:57:49  * bnoordhuisjoined
08:04:54  <bnoordhuis>http://os-blog.com/xv6-unix-v6-ported-to-ansi-c-x86/ <- that's it, i'm switching back
08:05:10  <bnoordhuis>so awesome - you just build it with make, then run it with qemu
08:05:50  * sh1mmerquit (Quit: sh1mmer)
08:35:57  * isaacsquit (Quit: isaacs)
08:54:25  * kuebkjoined
09:05:24  * mralephjoined
09:44:00  * mralephquit (Quit: Leaving.)
10:54:53  * luxigojoined
10:58:53  <luxigo>that's when you're going to ask you find the answer :-)
11:23:38  * wankdankerquit (Remote host closed the connection)
12:28:25  <indutny>where is isaacs?
12:28:26  <indutny>:)
12:31:14  <bnoordhuis>still in bed by now, i should think
12:38:40  <indutny>ah
12:38:44  <indutny>TZ difference
12:38:46  <indutny>bnoordhuis: thanks
13:21:14  * luxigoquit (Remote host closed the connection)
13:25:21  <piscisaureus>http://groups.google.com/group/nodejs/browse_thread/thread/5b3726cf9cdea821
13:25:28  <piscisaureus>I wonder how he does it
13:37:47  <bnoordhuis>piscisaureus: spin up an isolate, load the script in it, call into the function?
13:38:32  <bnoordhuis>if it's just a plain isolate, no node specifics, it's easy-ish to do
13:40:42  <piscisaureus>bnoordhuis: so you pass in a function name?
13:40:50  <bnoordhuis>piscisaureus: yes
13:40:57  <piscisaureus>meh
13:41:19  <bnoordhuis>that's how i suspect it works at least
13:41:36  <piscisaureus>must be like that
13:41:59  <piscisaureus>he says he uses isolates and I don't think you can share data between isolates, let alone closures
13:43:46  <piscisaureus>Some spam got through the gmail spam filter
13:43:52  <piscisaureus>i am mrs joy c man,i have a very important massage for you.please reply back for more details contact me via email:[email protected]
13:49:23  * piscisaureusquit (Ping timeout: 258 seconds)
14:00:19  * piscisaureusjoined
14:01:16  <bnoordhuis>the inevitable return of coro's...
14:01:47  <bnoordhuis>http://groups.google.com/group/nodejs/t/1c93b234c28b801f
14:03:29  <piscisaureus>I know
14:03:36  <piscisaureus>tim moved to the dark side :-p
14:03:47  <piscisaureus>i am not that much opposed to coros
14:04:09  <piscisaureus>but javascript is not that well suited for it
14:04:26  <piscisaureus>maybe JS should have some real language features to support it
14:07:41  <bnoordhuis>mozilla's javascript 1.8
14:07:52  <bnoordhuis>generators are coro's in denial
14:08:26  <piscisaureus>yes, but is that on track to make it into ecmascript
14:08:31  <piscisaureus>?
14:09:38  <bnoordhuis>i don't know, probably not
14:11:45  <bnoordhuis>some quick googling suggests that it's spidermonkey only
14:11:48  <bnoordhuis>which is too bad, really
14:11:54  <piscisaureus>yeah, I thought so too
14:14:57  <piscisaureus>it also needs semantics that are sensible wrt to try catch
14:15:35  <piscisaureus>let's face it, exceptions in javascript (and node in particular) are totally fucked up
14:22:32  <indutny>piscisaureus: about isolates
14:22:40  <indutny>you can't pass anything between them
14:22:43  <indutny>only C++ data
14:22:54  <indutny>no shared variables or anything
14:23:25  <indutny>so one would probably need to attach C++ classes to each isolate
14:25:43  * piscisaureusquit (Ping timeout: 255 seconds)
14:44:17  <bnoordhuis>igorzi: ping?
15:34:44  <CIA-95>node: Ben Noordhuis master * rcdcb111 / (16 files): Remove stray NODE_MODULE() semi-colons. - http://git.io/TSpalg
15:57:11  * dapjoined
16:04:10  * dapquit (Quit: Leaving.)
16:25:25  * piscisaureusjoined
16:33:44  * wankdankerjoined
16:34:31  * kuebkpart
16:35:48  <CIA-95>node: Ben Noordhuis master * r4fc0fdc / benchmark/http_simple_cluster.js :
16:35:49  <CIA-95>node: bench: start (NUM_CPUS-1) workers
16:35:49  <CIA-95>node: The master is a worker too so fork off one less worker. - http://git.io/bfYsRg
16:36:42  * dapjoined
16:40:54  <bnoordhuis>https://github.com/joyent/libuv/pull/242#issuecomment-2678564 <- dragonfly bsd support, yay or nay?
16:55:04  <piscisaureus>my coworker here is extremely frustrated about require.paths gone
16:55:41  <piscisaureus>what is the suggested way of fixing stuff that relies on it?
16:55:58  * sh1mmerjoined
16:56:20  <rmustacc>Maybe using the path variable before starting up?
16:56:39  <piscisaureus>it's so ugly
16:58:19  <rmustacc>Did he need it to be dynamic, or was he trying to automate the process in node itself to make life easier?
17:02:47  <piscisaureus>you should know cloud9 is pretty massive
17:03:19  <piscisaureus>now suppose that someone takes away include path from gcc
17:03:24  <piscisaureus>you would be pissed
17:04:35  <rmustacc>But, I still have the equivalent of gcc. I just can't have my compiler change it in the middle of compiling a single file, at least that's my understanding of the change.
17:04:48  <rmustacc>But yeah, I know that stuff can be pretty annoying.
17:06:13  <rmustacc>We have a bunch of stuff all over the place, so we use the environment variable to wrap up the paths for testing for example.
17:12:34  <indutny>require.paths is thing I'm missing too
17:14:17  <bnoordhuis>piscisaureus igorzi ryah: i won't be able to make the 19.00h call but 19.30h or 20.00h would work for me
17:15:00  * bnoordhuisis off to dinner
17:16:12  <piscisaureus>bnoordhuis: there is no 19.00h call :-/
17:18:49  * isaacsjoined
17:22:20  * AvianFlujoined
17:26:00  <ryah>bnoordhuis: can you translate to PST?
17:28:13  <ryah>19 = 11am i guess
17:28:23  <ryah>let's do 11:30am if that's okay
17:28:40  <piscisaureus>I think 19 = 10am atm
17:29:20  <piscisaureus>bnoordhuis didn't figure out yet that you stepped off dst last weekend
17:47:08  <ryah>piscisaureus: oh
17:47:27  <ryah>https://github.com/joyent/node/issues/2061#issuecomment-2684196
17:47:38  <ryah>^-- here is DTrego's bug again
17:48:01  <indutny>oh
17:48:01  <indutny>not again
17:48:11  <indutny>do we need mraleph?
17:48:41  <indutny>I think I can cast call spell
17:48:45  <indutny>:D
17:49:23  <ryah>let me see if i can repeat by doing the "homebrew" install
17:49:30  <ryah>deep sign
17:49:31  <ryah>sigh
17:53:02  <ryah>hm
17:53:08  <isaacs>i don't get homebrew.
17:53:26  <isaacs>if they were going to do a build in a DESTDIR or something, why didn't they go the established BSD-style?
17:53:35  <indutny>isaacs: here you are
17:53:36  <indutny>:)
17:53:37  * mralephjoined
17:53:41  <isaacs>hi, indutny !
17:53:44  <indutny>:)
17:53:45  <indutny>hi
17:53:57  <indutny>I've problems with unpublishing http://search.npmjs.org/#/ometajs 2.1.1
17:54:10  <mraleph>indutny: you are pretty flaky in gtalk, so you can say what you wanted here :-)
17:54:33  <indutny>mraleph: hehe :)
17:54:44  <indutny>mraleph: my wife is downloading something HEAVY
17:55:14  <indutny>I think adium is just dying and reviving
17:55:23  <indutny>mraleph: https://github.com/joyent/node/issues/2061#issuecomment-2684196
17:55:23  * brsonjoined
17:55:30  <indutny>probably you know what's going on
17:55:51  <indutny>isaacs: https://gist.github.com/13bfae5fe5b81277a76e
17:55:54  <mraleph>10.7.2 is going on
17:56:02  <mraleph>I don't have access to such a box
17:56:16  <mraleph>can we ask him to run node_g?
17:56:43  <indutny>mraleph: DTrejo was experiencing same on 10.6.8
17:57:12  <mraleph>I wonder if I have access to 10.6.8
17:57:13  <isaacs>indutny: hmm... looks like the npm client isn't updating the modified time for the version when unpublishing.
17:57:24  <indutny>mraleph: I have
17:57:27  <indutny>;)
17:57:31  <isaacs>indutny: i'll make the validate update doc function less restrictive for the time being, and then look into it later.
17:57:39  <indutny>isaacs: thanks
17:58:01  <indutny>isaacs: btw
17:58:10  <mraleph>indutny: can you repro it then?
17:58:16  <indutny>isaacs: when package.json contains "ometajs >= 2.0.1"
17:58:25  <indutny>isaacs: it installs 2.0.10
17:58:28  <isaacs>k
17:58:29  <indutny>while stable is 2.0.11
17:58:33  <indutny>mraleph: nope
17:58:51  <isaacs>indutny: not enough information. node version? is there an engines field? etc.
17:58:58  <indutny>isaacs: 0.4.12
17:59:01  <isaacs>ok
17:59:07  <isaacs>i dunno
17:59:09  <isaacs>just a sec
17:59:47  <indutny>engine "node >= 0.4.0"
18:00:26  <isaacs>indutny: k, try your unpublish again.
18:00:30  <indutny>isaacs: kk
18:00:49  <indutny>same
18:00:52  * ericktjoined
18:01:10  <indutny>isaacs: ^
18:01:43  <mraleph>ryah: btw this can be ABI issue.
18:01:56  <mraleph>ryah: I can't be sure but this is highly possible
18:02:39  <mraleph>ryah: if you manage to repro it look the generated code on the border between C++ and JS to see if ABI matches.
18:03:10  <ryah>mraleph: it segfaults on startup
18:03:17  <ryah>mraleph: and we static link v8
18:03:34  <ryah>how could it be an abi issue?
18:04:04  <rmustacc>ryah: Are you sure homebrew doesn't try and build v8 separately?
18:04:15  <ryah>just installed with homebrew - seems to work
18:04:20  <ryah>let me check
18:04:35  <ryah>% otool -L /Users/ryan/local/homebrew/Cellar/node/0.6.0/bin/node
18:04:35  <ryah>/Users/ryan/local/homebrew/Cellar/node/0.6.0/bin/node:
18:04:35  <ryah> /opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
18:04:35  <ryah> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 152.0.0)
18:04:39  <ryah> /opt/local/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
18:04:42  <ryah> /opt/local/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
18:04:46  <ryah> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
18:04:49  <ryah> /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 1.0.0)
18:04:52  <ryah> /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
18:04:54  <ryah> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 44.0.0)
18:04:58  <ryah> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.43.0)
18:05:01  <ryah> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)
18:05:17  <rmustacc>They can still bundle a .a.
18:05:18  <mraleph>as far as I see from his backtrace in the issue it crossed from JS frames to C++ code before crashing. if C++ was compiled in a funky way (with a funky compiler) it can be that V8 passes arguments incorrectly to the C++ function. This would be ABI mismatch between V8 generated code and compiled C++ code.
18:05:24  <ryah>god. why are we linking to stdc++ ...
18:05:31  <rmustacc>Because you're using C++.
18:05:57  <ryah>we're not using anything from there
18:06:03  <rmustacc>What about v8?
18:06:13  <ryah>v8 neither
18:06:25  <rmustacc>GCC may just require it for all of C++.
18:07:31  <ryah>yes, it seems so
18:07:53  <isaacs>indutny: you mind if i try?
18:09:34  <indutny>isaacs: still the same
18:10:00  <isaacs>indutny: what version of npm are you using?
18:10:07  <isaacs>this record looks old
18:10:15  <isaacs>mtime and ctime instead of a time object, et.
18:11:00  <ryah>DrPizza: yt?
18:11:05  <indutny>isaacs: 1.0.103
18:11:10  <ryah>DrPizza: do you know how to do this https://github.com/joyent/node/issues/2059
18:11:12  <isaacs>indutny: weird.
18:11:23  <isaacs>indutny: it's 0.2.1 that you want removed?
18:12:13  <indutny>2.1.1
18:12:22  <indutny>and I want to align versions
18:12:27  <indutny>so latest will be 2.0.11
18:12:27  <isaacs>what package is this again?
18:12:30  <isaacs>ometa?
18:12:34  <isaacs>that's not yours.
18:12:43  <indutny>isaacs: it's mine too :)
18:12:59  <indutny>ometajs
18:13:00  <isaacs>oic
18:13:05  <isaacs>nono, "ometa" is bmavity's
18:13:13  <indutny>ometajs
18:13:16  <indutny>http://search.npmjs.org/#/ometajs
18:13:20  <isaacs>i see, that makes more sense :)
18:13:21  <isaacs>k
18:13:27  <isaacs>adn you want to remove 2.1.1
18:13:32  <indutny>yes
18:13:35  <indutny>and align versions
18:13:39  <isaacs>you know, you can also just do `npm tag [email protected] latest"
18:13:39  <indutny>sort them, actually
18:13:46  <indutny>yes
18:13:50  <indutny>ah
18:13:52  <indutny>ok
18:13:53  <isaacs>what do you mean "sort them"?
18:13:53  <indutny>:)
18:13:57  * sh1mmerquit (Quit: sh1mmer)
18:14:06  <indutny>nvm, forgot about "latest" tag
18:14:58  <isaacs>indutny: it unpublished 2.1.1 just fine
18:15:10  <isaacs>you know, you can also publish with a --tag argument to make it something other than latest
18:15:10  <indutny>hm...
18:15:15  <isaacs>like, npm publish --tag beta
18:15:23  <DrPizza>ryah: yes
18:15:27  <indutny>isaacs: thank you! )
18:15:30  <isaacs>np
18:16:07  <DrPizza>ryah: what I don't know off-hand is how to make gyp do the right thing, but I can probably take a look at the chrome project
18:16:48  <bnoordhuis>call?
18:16:58  <ryah>bnoordhuis: in 45min?
18:17:11  <bnoordhuis>ryah: sure
18:17:25  <igorzi>bnoordhuis: what's up?
18:17:32  <bnoordhuis>igorzi: the opposite of down
18:17:39  <bnoordhuis>also, can you reboot the cluster to linux?
18:18:12  <igorzi>bnoordhuis: oh right.. sorry forgot.. will do that now
18:19:50  <igorzi>bnoordhuis: done
18:21:10  <bnoordhuis>igorzi: thanks
18:22:51  <ryah>DrPizza: i searched around the chrome tree, no luck
18:23:08  <bnoordhuis>https://github.com/joyent/node/issues/2061 <- that's the same issue a guy in #node.js is complaining about
18:23:24  <bnoordhuis>and it's not the same guy
18:23:45  <bnoordhuis>i'm having him revert the v8 upgrade
18:24:43  <ryah>bnoordhuis: which v8 upgrade?
18:25:05  <bnoordhuis>ryah: 0ba8f05 Upgrade V8 to
18:25:32  <ryah>this can't be releated
18:25:38  <bnoordhuis>it's very minor yes
18:25:49  <ryah>Dtrejo was seeing this on v0.6.0
18:25:55  <ryah>with
18:26:01  <ryah>actually in the RCs
18:27:18  * brsonquit (Quit: leaving)
18:27:33  * brsonjoined
18:40:14  <mraleph>ryah: ok it's not an ABI issue, as I can see from the more detailed stack trace.
18:40:39  <mraleph>ryah: might be caused by V8_FAST_TLS_SUPPORTED
18:40:49  <mraleph>you should try disabling it.
18:41:48  <mraleph>hmm. no
18:41:55  <mraleph>this all looks very wierd.
18:42:22  <mraleph>if isolate_ was NULL it should have crashed in HandleScope constructor but it did not
18:43:20  <bnoordhuis>fwiw, i've seen this issue on gentoo linux as well with v8 3.7.x
18:45:59  * brsonquit (Ping timeout: 276 seconds)
18:47:15  <mraleph>hmm
18:47:30  <mraleph>this is insanity
18:47:58  <mraleph>are you sure it's the same issue?
18:49:41  <bnoordhuis>mraleph: just looked it up, that was something else (but also stats related)
18:50:08  <bnoordhuis>https://github.com/joyent/node/commit/edea412 <- that's the revert in case you're curious
18:52:21  <mraleph>yeah I saw that, it also requires some debugging.
18:52:31  <mraleph>probably a bug in optimizing compiler or something.
19:02:31  <ryah>hey
19:02:34  <ryah>call?
19:02:37  <piscisaureus>yep
19:04:00  <ryah>bnoordhuis: call?
19:04:04  <bnoordhuis>ryah: yes
19:04:37  <piscisaureus>you're late ben
19:07:16  <bnoordhuis>https://github.com/bnoordhuis/libuv/compare/kernel-mismatch <- unix guys - review? useful?
19:15:00  <ryah>https://github.com/joyent/node/blob/7fd1c08b1615b57529c1bb7ae6f9a7b16e643162/src/node.js#L176
19:16:55  <ryah>^- v0.4
19:23:10  * mikealjoined
19:42:54  <bnoordhuis>igorzi: does fs.watch('somefile') watch the windows equivalent of an inode or the directory entry?
19:48:02  <igorzi>bnoordhuis: it'll watch the parent dir, and the filter based on 'somefile'
19:48:18  <bnoordhuis>igorzi: thanks - i suspected as much
19:54:23  * mikealquit (Quit: Leaving.)
20:01:03  * mikealjoined
20:02:04  * mikealquit (Client Quit)
20:09:06  <bnoordhuis>igorzi: i can't get wcat to run - i can ping the server, node is listening on port 80 but wcat doesn't connect to it
20:19:39  <bnoordhuis>err... if i `curl -v` on the server, i get an iis proxy error page....
20:33:11  <ryah>bnoordhuis: what's this kernel-mismatch thing about?
20:33:17  <ryah>bnoordhuis: i dont understand it
20:34:00  * isaacsquit (Quit: isaacs)
20:34:13  <bnoordhuis>ryah: for example, someone compiles libuv against 2.6.32 kernel headers, then runs the binary on a 2.6.24 kernel
20:34:43  <bnoordhuis>libuv now calls e.g. pipe2() and the 2.6.24 kernel will return ENOSYS
20:34:45  <ryah>mraleph: did you find out anything elese?
20:35:07  <ryah>bnoordhuis: groan
20:35:15  <bnoordhuis>that commit falls back to (for example) pipe() when that happens
20:35:20  <ryah>bnoordhuis: did you test this?
20:35:36  <bnoordhuis>someone in the channel tested it for me
20:35:51  <bnoordhuis>his node went from all out crashing to passing nearly all tests
20:36:29  <ryah>then rubberstamp lgtm
20:37:17  <bnoordhuis>cool
20:37:39  <bnoordhuis>ryah: mraleph found the bug btw, https://gist.github.com/1352731
20:38:03  <ryah>oh nice
20:38:22  <ryah>so what's happening?
20:39:00  <ryah>bnoordhuis: btw i've got a problem on OSX/libuv
20:39:00  <ryah>=============================================================
20:39:01  <ryah>[% 0|+ 84|- 3]: fs_event_no_callback_on_close
20:39:01  <ryah>`fs_event_no_callback_on_close` failed: exit code 6
20:39:01  <ryah>Output from process `fs_event_no_callback_on_close`:
20:39:03  <ryah>Assertion failed: (revents == EV_LIBUV_KQUEUE_HACK), function uv__fs_event, file src/unix/kqueue.c, line 58.
20:39:06  <ryah>=============================================================
20:39:50  <bnoordhuis>oh, i'll check that out tomorrow
20:40:21  <bnoordhuis>re that other os x bug: don't know, maybe stack corruption, maybe calling convention issue
20:41:23  <ryah>=============================================================
20:41:24  <ryah>[% 0|+ 22|- 1]: tcp_write_to_half_open_connection
20:41:24  <ryah>`tcp_write_to_half_open_connection` failed: exit code 6
20:41:24  <ryah>Output from process `tcp_write_to_half_open_connection`:
20:41:24  <ryah>read_cb error: ECONNRESET
20:41:26  <ryah>Assertion failed in test/test-tcp-write-to-half-open-connection.c on line 79: uv_last_error(stream->loop).code == UV_EOF
20:41:30  <ryah>=============================================================
20:41:32  <ryah>^-- also this started happening...
20:41:58  <CIA-95>libuv: Ben Noordhuis master * r4794c12 / (src/unix/core.c src/unix/process.c):
20:41:58  <CIA-95>libuv: linux: fall back to traditional syscalls if necessary
20:41:58  <CIA-95>libuv: libuv uses feature checks to determine if newer syscalls like pipe2() are
20:41:58  <CIA-95>libuv: available. This works fine until someone compiles libuv against kernel headers
20:41:58  <CIA-95>libuv: that are newer than the actual kernel our software runs on.
20:41:58  <CIA-95>libuv: Fall back to traditional (but race-y!) syscalls when the kernel reports ENOSYS
20:42:00  <CIA-95>libuv: or EINVAL. - http://git.io/XQJv5w
20:42:14  <mraleph>I just assume that you have different sizeof of structure or something. (header vs. library conflict). if you changed size of that structure recently that would be the most obvious candidate
20:42:47  <ryah>oh, it probably has to do with LARGEFILE_SOURCE
20:43:02  <bnoordhuis>^ that's what i mean with calling convention
20:44:06  <bnoordhuis>then again, that particular bit of code doesn't deal with off_t
20:44:50  <ryah>i wonder if these people are on on 32bit machines?
20:45:17  <bnoordhuis>hrm, uv_fs_t contains a struct stat
20:45:21  <bnoordhuis>okay, that's probably it
20:47:16  <ryah>libuv is certainly using LARGEFILE_SOURCE and FILE_OFFSET_BITS=64
20:48:59  <bnoordhuis>^ so is node
20:49:47  <ryah>https://github.com/joyent/node/blob/4fc0fdc6ee8c41320f4d4ea74e4fa8a3ac12ed57/deps/uv/config-unix.mk#L27-28
20:49:51  <ryah>https://github.com/joyent/node/blob/4fc0fdc6ee8c41320f4d4ea74e4fa8a3ac12ed57/wscript#L461-462
20:58:53  <ryah>hm
20:59:16  <ryah>my guess is that something is being compiled without one of those defines...
21:02:50  * igorziquit (Ping timeout: 265 seconds)
21:11:57  <mraleph>ryah: you can insert two debug prints printf("%d\n", (int)sizeof(uv_fs_t)); in node code and in libuv code then everything hidden will become unhidden :-)
21:12:27  <mraleph>btw. this kind of verification should probably make it into debug build
21:13:20  <ryah>mraleph: thanks
21:14:56  <mraleph>I find debug prints always easier to grok then reading disassembly.
21:17:38  <ryah>yes
21:19:18  * igorzijoined
21:21:00  <igorzi>bnoordhuis: can i bump you off ndjs-win3?
21:24:49  <igorzi>ryah: did you confirm if making stderr non-destroy'able is ok?
21:25:12  <piscisaureus>igorzi: he did. stderr only
21:25:13  * bnoordhuisquit (Ping timeout: 256 seconds)
21:25:41  <igorzi>piscisaureus: k, thx
21:26:05  * isaacsjoined
21:28:56  <igorzi>ryah piscisaureus: so it looks like you get ECONNRESET in tcp_write_to_half_open_connection (similar to how we got ECONNABORT in windows). I think this doesn't show up in node because of this: https://github.com/joyent/node/blob/master/lib/net.js#L352
21:30:35  <igorzi>ryah piscisaureus: so to make it consistent, that (check for ECONNRESET) should probably move to uv-unix, or we should move the check for ECONNABORT in windows to node
21:33:45  <piscisaureus>igorzi: the difference between CONNRESET and CONNABORTED is in which end killed the connection
21:33:45  * mikealjoined
21:33:57  <piscisaureus>CONNRESET = we killed it, CONNABORTED = they killed it
21:34:29  <piscisaureus>igorzi: if you connect to yourself then the order in which the 'connect' and 'connection' events appear is reversed on windows
21:34:45  <piscisaureus>so it kind of makes sense that connreset changes into connaborted
21:34:58  <igorzi>piscisaureus: that's how it is on windows.. is that how it is on unix?
21:35:10  <piscisaureus>igorzi: that's the definition
21:35:25  <piscisaureus>I am not sure that CONNABORTED actually happens on unix
21:37:07  <igorzi>piscisaureus: look at ryah's results for tcp_write_to_half_open_connection (@20:41:24).. it's the server that's failing inside read_cb, very similarly to the failure on windows (but with ECONNABORT)
21:37:30  <igorzi>piscisaureus: the server does not kill the connection in that test
21:38:03  <piscisaureus>hmm
21:38:16  <igorzi>piscisaureus: hmm, maybe that happened after the server got EOF..
21:38:44  <igorzi>piscisaureus: but my point is the reason why this didn't show up in node is because of this https://github.com/joyent/node/blob/master/lib/net.js#L352
21:39:17  <piscisaureus>igorzi: yes, I agree that it would be good to stratify that
21:39:27  <piscisaureus>igorzi: so the check should move
21:39:40  <piscisaureus>My gut feeling says we should move it out of libuv into node
21:40:01  <piscisaureus>Because ignoring errors is not something that everyone might want to do
21:40:09  <piscisaureus>but in the end it probably doesn't matter
21:42:49  <igorzi>piscisaureus: yeah, i think i agree.. maybe we should just convert WSACONNABORT to UV_CONNRESET in libuv, and call it a day? (we still need consistency for error codes out of libuv)
21:42:57  <piscisaureus>heh
21:43:03  <piscisaureus>hmm
21:43:09  <piscisaureus>that sounds really wrong
21:43:11  <piscisaureus>so let's do it
21:43:43  <igorzi>piscisaureus: you want to keep firing UV_CONNABORT?
21:43:47  <piscisaureus>yeah, let's do something wrong
21:43:51  <piscisaureus>no
21:43:56  <piscisaureus>22:42] <igorzi> piscisaureus: yeah, i think i agree.. maybe we should just convert WSACONNABORT to UV_CONNRESET in libuv, and call it a day? (we still need consistency for error codes out of libuv)
21:43:59  <piscisaureus>^-- do that
21:44:12  <igorzi>wrong, why is that wrong?
21:45:17  <igorzi>piscisaureus: i'm all ears for a better solution
21:46:02  <piscisaureus>int ECONNABORTED
21:46:02  <piscisaureus> errno.h (BSD: Software caused connection abort): Error Codes.
21:46:02  <piscisaureus>int ECONNRESET
21:46:02  <piscisaureus> errno.h (BSD: Connection reset by peer): Error Codes.
21:46:05  <piscisaureus>It's not the same
21:46:06  <piscisaureus>but
21:46:15  <piscisaureus>igorzi: I don't have a better solution
21:46:38  <piscisaureus>so if you're sure that windows emits CONNABORTED where unix does CONNRESET, just replace one by the other
21:46:55  <igorzi>piscisaureus: yeas, i know it's not the same.. but we need the same error code between uv-win and uv-unix, do we not?
21:47:00  <piscisaureus>yeah
21:47:02  <piscisaureus>that's true
21:48:17  * bnoordhuisjoined
21:50:31  * mralephquit (Quit: Leaving)
21:54:26  <CIA-95>node: Igor Zinkovsky master * r5d89540 / src/node.js : make stderr stream non-destroyable - http://git.io/iw6etA
22:04:09  * sh1mmerjoined
22:08:43  * dapquit (Quit: Leaving.)
22:11:29  * dapjoined
22:11:29  * bnoordhuisquit (Ping timeout: 240 seconds)
22:21:15  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
22:45:05  <ryah>igorzi: destroy stdout, stderr no-op okay
22:46:46  * piscisaureus_joined
22:48:06  <piscisaureus_>I am going to be early today so if anyone needs me, be quick
22:48:13  <piscisaureus_>s/be/bed/
22:52:15  <igorzi>ryah: ahh, so no-op on stdout.destroy is ok too? (not just stderr)
22:58:29  <CIA-95>libuv: Igor Zinkovsky master * rf17d483 / (src/win/tcp.c test/test-tcp-write-to-half-open-connection.c): windows: turn WSAECONNABORTED from WSARecv to UV_ECONNRESET - http://git.io/dwV1fg
23:01:05  <ryah>igorzi: yes
23:03:01  <ryah>0x0000000100304f03 <uv_fs_stat+238>: mov -0x20(%rbp),%rsi
23:03:01  <ryah>0x0000000100304f07 <uv_fs_stat+242>: add $0x48,%rsi
23:03:01  <ryah>0x0000000100304f0b <uv_fs_stat+246>: mov -0x10(%rbp),%rdi
23:03:01  <ryah>0x0000000100304f0f <uv_fs_stat+250>: callq 0x1003281e4 <dyld_stub_stat$INODE64>
23:03:12  <ryah>0x0000000100256f0b <uv_fs_stat+155>: mov -0x20(%rbp),%rax
23:03:12  <ryah>0x0000000100256f0f <uv_fs_stat+159>: cmp $0x0,%rax
23:03:12  <ryah>0x0000000100256f13 <uv_fs_stat+163>: je 0x100256f9e <uv_fs_stat+302>
23:03:15  <ryah>er
23:03:27  * piscisaureus_part
23:05:16  <CIA-95>node: Igor Zinkovsky master * rf84d86b / src/node.js : make stdout stream non-destroyable - http://git.io/dCMkkw
23:07:12  <rmustacc>ryah: Some fun little assembly there.
23:27:06  * dapquit (Quit: Leaving.)
23:27:49  * wankdankerquit (Read error: Connection reset by peer)
23:29:45  * dapjoined
23:35:07  * brsonjoined
23:39:18  * mikealquit (Quit: Leaving.)
23:45:39  * piscisaureus_joined