00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:00:38  <loladiro>piscisaureus_: ping
00:00:50  <piscisaureus_>loladiro: I'm here
00:01:01  <piscisaureus_>loladiro: but I'm not doing anything node-related atm
00:01:49  <loladiro>piscisaureus_: Can I still ask you a quick libuv-related question?
00:01:56  <piscisaureus_>loladiro: sure
00:02:10  <trevnorris>ok, how does v8 get away with inlining functions with native calls?
00:03:27  <piscisaureus_>trevnorris: what would be the problem with that? It doesn't inline the native functions itself
00:04:44  <trevnorris>piscisaureus_: `--trace-opt --trace-inlining --code-comments` shows that Math.random() is inlined, and doesn't mention the native call wasn't.
00:04:59  <trevnorris>in every node module I test it always lets me know the native module couldn't be inlined.
00:06:20  <trevnorris>all it displays is "Inlining builtin 0x318ad2a49db1 <JS Function random>"
00:06:35  * mikealjoined
00:06:44  <piscisaureus_>trevnorris: Math.random is "implemented" in javascript
00:06:46  <loladiro>piscisaureus_: Alright, we're redesigning our synchronous I/O API on top of the libuv asynchronous one to make use of the fact that we have coroutines. I.e. we're jumping to a different task while doing "synchronous" I/O. One problem is that we can't run synchronous I/O operations inside of callbacks. Here's why: If we jumping from inside a callback to a different task, in which we may reenter the event loop, we still have half an event
00:06:47  <loladiro>loop lying around on a different stack and we're afraid of corrupting global state. So essentially running the libuv event loop would have to be reentrant for this to work.
00:06:59  <loladiro>The question is. Is it already or can it be made so?
00:07:21  <loladiro>Sorry for the wall of text
00:07:39  <piscisaureus_>loladiro: right - so you want to be able to call uv_run() recursively?
00:07:50  <trevnorris>piscisaureus_: Math.random() -> return %_RandomHeapNumber(); which is then defined in hydrogen.cc
00:08:43  <loladiro>piscisaureus_: Pretty much. Is that possible already?
00:08:45  <trevnorris>as "HGraphBuilder::GenerateRandomHeapNumber" (code comment says "Fast support for Math.random()")
00:08:53  <piscisaureus_>loladiro: I don't *think* it is possible byt there is no reason why it oculdn't
00:09:18  <piscisaureus_>loladiro: it's just work, and possibly making tradeoffs :-)
00:09:40  <piscisaureus_>loladiro: is it an option to use 2 separate uv_loops, one for "async" calls and one for sync calls
00:10:20  <loladiro>It might be the same I/O handle
00:10:25  <piscisaureus_>ah, hmm
00:10:45  * piscisaureus_ponders
00:11:08  * mikealquit (Ping timeout: 255 seconds)
00:12:19  <Raynos>I keep seeing https://gist.github.com/e5f139d2d2ea60310790 on node v0.8.4
00:12:22  <Raynos>and it has me stumped.
00:12:44  <Raynos>that only started happening today
00:14:39  <piscisaureus_>loladiro: so recursive uv_run should be possible but I'm wondering if you couldn't just switch to "no thread" instead of another thread
00:14:49  <piscisaureus_>and not use uv_run recursively
00:16:11  <loladiro>The task (as in coroutine - not os level) switch is just so other tasks can continue their work on their respective stacks.
00:17:06  <piscisaureus_>loladiro: sure - so you want to call uv_run recursively to block your event loop
00:17:32  <piscisaureus_>loladiro: but the question is - what happens if the first event libuv processes is another, async event
00:17:39  <piscisaureus_>and you'll call uv_run recursively again
00:17:43  <piscisaureus_>*stack blow up*
00:18:53  <loladiro>there's very few cases in which we actually need to do that, so I'm not too concerned
00:20:57  * hzquit
00:24:22  <piscisaureus_>loladiro: so - you have a problem here which is bigger than you think ...
00:25:02  <piscisaureus_>loladiro: suppose the user does this:
00:25:02  <piscisaureus_>julia: async_write -> uv: uv_write
00:25:15  <piscisaureus_>julia: sync_write -> uv: uv_write
00:25:31  <piscisaureus_><-- first uv_write comes back. Now what?
00:25:37  <piscisaureus_>^-- loladiro ?
00:26:14  <piscisaureus_>calling uv_run right after the sync_write won't save the day. It will just call the callback for the *first* uv_write
00:27:50  <piscisaureus_>loladiro: do you have the possibility to "enqueue" calls to a particular stack?
00:28:21  <loladiro>write is always async ;)
00:28:41  <loladiro>I can probably illustrate part of the api by example:
00:30:27  <trevnorris>piscisaureus_: found it. it's because they're done in assembly (Math.random located in src/(x64|ia32)/full-codeget.cc)
00:30:48  <trevnorris>*full-codegen.cc
00:31:08  <loladiro>piscisaureus_: https://gist.github.com/4639192
00:31:11  <piscisaureus_>trevnorris: it works because it's not really a "function call" it's more like a native operator
00:31:35  <piscisaureus_>trevnorris: but I think that what V8 tells you is that it's inlining MathRandom(), nothing more.
00:32:36  <trevnorris>piscisaureus_: yeah. got it now. so they just replace the function with the assembly instruction set they've programmed.
00:32:38  <piscisaureus_>loladiro: so what's blocking and what is nonblocking there?
00:32:46  <trevnorris>piscisaureus_: hm, what do you mean "native operator"?
00:33:17  <piscisaureus_>loladiro: I would say that you have to build some magic into accept to create another greenlet.
00:33:19  <loladiro>piscisaureus: listen is not, readline is not, start_reading is not
00:33:24  <loladiro>readline is
00:33:26  <loladiro>sorry
00:33:48  <piscisaureus_>yes, so you suspend the thread after readline and resume it in read_cb when you got a full line
00:33:56  <piscisaureus_>"thread" is just the greenlet here
00:33:58  <loladiro>yes
00:34:17  <piscisaureus_>trevnorris: with native operator I mean this: v8 know how to compile "1+1
00:34:21  <piscisaureus_>er
00:34:36  <loladiro>the thing is that the task we're executing in the meantime might enter the event loop even though this is inside a callback
00:34:56  <trevnorris>piscisaureus_: take a look at "FullCodeGenerator::EmitRandomHeapNumber" in src/x64/full-codegen.cc
00:35:04  <piscisaureus_>trevnorris: with native operator I mean this: v8 know how to compile "1+1". It doesn't know how to compile console.log - it's just a function call. It the function might re-enter v8 and modify variables and stuff. %_RandomHeapNumer is just like an operator, e.g. v8 knows what it means specifically.
00:35:27  <piscisaureus_>trevnorris: v8 calls this "natives syntax". I know how it works :-)
00:36:02  <piscisaureus_>loladiro: ah. no that's not right
00:36:53  <trevnorris>piscisaureus_: yeah, totally. i'm just getting turned around on the terminology so wanted to solidify what you meant. thanks.
00:37:24  * mikealjoined
00:37:34  <piscisaureus_>loladiro: what library are you guys using to switch stacks and all that. Or is it builtin to llvmjit nowadays?
00:38:23  <loladiro>combination of llvm JIT and Jeff being amazing at writing C code, no external library other than that
00:38:41  <tjfontaine>loladiro: mcjit?
00:38:58  <loladiro>think so
00:39:05  <tjfontaine>k
00:40:43  <loladiro>actually I just asked. MCJIT was experimental
00:40:58  <loladiro>there seemed to have been problems on Mac
00:41:37  <tjfontaine>llvm jit world is in flux, few want to maintain the existing one, and there's not been enough pushing to get the mc version moving forward (from my understanding from lurking)
00:42:37  <loladiro>Hmm, that's too bad
00:43:17  <tjfontaine>loladiro: well as the mc/as stuff progresses the jit stuff should get better as a by product
00:43:43  <trevnorris>piscisaureus_: so you know way more about this than i do. know if it's possible to do that from a library using v8?
00:43:54  <loladiro>yes, llvm has been great for use, so we're quite looking forward to that
00:44:12  <piscisaureus_>trevnorris: only if you run with --allow_natives_syntax
00:44:16  <piscisaureus_>and you know what you're doing
00:44:40  <trevnorris>piscisaureus_: ah, come one. I never know what I'm doing. ;-)
00:45:12  <piscisaureus_>trevnorris: http://www.youtube.com/watch?v=65EfTFUFDwI ?
00:45:36  <trevnorris>piscisaureus_: "The uploader has not made this video available in your country"
00:45:37  <tjfontaine>that video hates americans
00:47:02  <piscisaureus_>maybe http://www.youtube.com/watch?v=r2y2GZHuukw ? Because that one is blocked in my country
00:47:06  * abraxasjoined
00:47:23  <trevnorris>blocked based on copyright....
00:48:08  * mikealquit (Quit: Leaving.)
00:48:39  <piscisaureus_>haa
00:48:47  <piscisaureus_>too bad then
00:49:24  <piscisaureus_>loladiro: do I understand it correctly if you want to call uv_run() from one stack, then call it again from another?
00:49:45  <loladiro>yes
00:49:47  <trevnorris>piscisaureus_: what's the video supposed to be?
00:49:49  <piscisaureus_>aah
00:50:09  <piscisaureus_>loladiro: so - no recursive calls. Just re-entrant from multiple stacks
00:50:12  <piscisaureus_>hmm, difficult :-)
00:51:18  <trevnorris>nm. found it elsewhere I think
00:51:25  <loladiro>yes, quite difficult, but it leads to such a nice API ;)
00:51:32  * abraxasquit (Ping timeout: 255 seconds)
00:51:41  <piscisaureus_>loladiro: luvit does all this without the need for a reentrant uv_run
00:52:09  <piscisaureus_>and yes I agree about the api
00:52:23  <piscisaureus_>it's also possible with node-coroutines btw
00:52:35  <piscisaureus_>err, node-fibers
00:52:42  <loladiro>whose writing luvit. I'd love to talk to them
00:52:55  <loladiro>*who's
00:53:34  <piscisaureus_>loladiro: creationix. philips_. rphillips.
00:53:54  <philips_>loladiro: herro
00:54:18  <loladiro>Hey philips_ !
00:54:43  <loladiro>How are you mixing coroutines/libuv
00:56:30  <philips_>loladiro: there is nothing in the core of luvit that is doing that. Although there are some experiments that both creationix and kansface are working on
00:56:54  <philips_>loladiro: https://groups.google.com/forum/?fromgroups#!topic/luvit/Kp0xta5jFmg
00:58:59  <philips_>loladiro: and this https://github.com/creationix/moonslice-luv
00:59:09  <philips_>loladiro: anyways you can ask about it on the luvit google groups if you want
01:01:06  <TooTallNate>isaacs: how do i use readable.push()?
01:01:18  <TooTallNate>isaacs: if I don't implement _read()?
01:02:24  <loladiro>philips_: Alright, I'll probably send an email. Would be good to collaborate on any libuv level patches that would need to be made
01:15:20  * piscisaureus_quit (Read error: Connection reset by peer)
01:15:36  * rumpjoined
01:17:34  * loladiroquit (Quit: loladiro)
01:18:24  * mikealjoined
01:21:51  <trevnorris>good weekend y'all. i'm off to a lan party.
01:22:54  * trevnorrispart ("off to the gibs")
01:24:34  <CoverSlide>wow people have those?
01:24:48  * loladirojoined
01:25:01  <TooTallNate>lan party… good 'ol days
01:26:47  <CoverSlide>Imma go to a cyber cafe and play some quake
01:27:48  * mikealquit (Ping timeout: 240 seconds)
01:28:24  <txdv>hey
01:34:56  * bradleymeckjoined
01:35:01  * bradleymeckquit (Client Quit)
01:52:40  <tjfontaine>CoverSlide: I glanced and only saw "Imma go ... cyber"
01:54:34  * mikealjoined
02:00:51  * AvianFluquit (Remote host closed the connection)
02:09:12  <Raynos>TooTallNate: `._read = noop`
02:09:40  <TooTallNate>Raynos: kinda silly...
02:09:58  <Raynos>TooTallNate: https://github.com/joyent/node/blob/master/test/simple/test-stream2-objects.js#L182
02:10:42  <TooTallNate>Raynos: slightly related question: how would I do a Transform stream, where the write() calls should be "objectMode", but the read() calls should be normal
02:10:45  <TooTallNate>is that possible?
02:12:22  <Raynos>TooTallNate: sure.
02:12:37  <Raynos>oh wait Transform
02:12:39  <Raynos>hmm.
02:12:44  <Raynos>Yeah that would work
02:12:57  <Raynos>just make sure to return Buffer or string from the transform callback
02:13:17  <TooTallNate>Raynos: sure, but since it's in "objectMode" won't it treat those as objects?
02:13:28  <TooTallNate>not strictly the end of the world
02:13:36  <Raynos>internally there is stream._readableState.objectMode and stream._writableState.objectMode
02:13:50  <Raynos>so both sides of the stream can be in one or the other
02:14:04  <TooTallNate>Raynos: ahh right… so does Transform have a way to set distinct options for the read/write sides?
02:14:28  <Raynos>TooTallNate: no
02:14:39  <TooTallNate>bummer
02:14:40  <Raynos>but streams convert to object mode transparently if you write non Buffer/string data
02:15:00  <TooTallNate>Raynos: but not vice versa ;)
02:15:15  <Raynos>well they default to non object mode
02:15:43  <Raynos>a user of a readable stream can't turn it into an object stream unless he calls .push()
02:16:04  <Raynos>which a user shouldn't do. The owner of the readable stream (the source) should use .push(), the consumer shouldn't ever turn it into an object stream
02:16:28  <Raynos>The consumer of a writable stream is the one that decides objects or buffers. The target of the writable stream just takes what he gets and writes it
02:16:56  <Raynos>Now obvouisly the target can create a writable stream which defaults to object mode. So even when strings/buffers get's written it's treated nicely
02:17:11  <Raynos>TooTallNate: `var t = new Transform(); t._writableState.objectMode = true`
02:17:53  <Raynos>https://github.com/joyent/node/commit/420e07c5777bdb2e493147d296abfc102f725015#commitcomment-2504870
02:27:22  * dapquit (Quit: Leaving.)
02:31:03  <TooTallNate>Raynos: so what do you think a good API for that would be?
02:31:17  <Raynos>TooTallNate: two parameters
02:31:22  <Raynos>duplex(readOptions, writeOptions)
02:31:30  <Raynos>and Writable.call(writeOptions || readOptions)
02:31:42  <TooTallNate>ya
02:31:42  <Raynos>.call(this, ...)
02:31:43  <TooTallNate>sgtm
02:37:35  * jmar777joined
02:47:24  * abraxasjoined
02:52:18  * abraxasquit (Ping timeout: 276 seconds)
03:11:32  * TooTallNatequit (Quit: ["Textual IRC Client: www.textualapp.com"])
03:26:48  * cjdjoined
03:27:33  <cjd>hi guys, quick question... getting icmp errors from an unconnected udp socket, is there a cross platform way or should I give up hope of it ever working?
03:28:02  <cjd>I'm asking here because I figure people here would know more than anyone about cross platform bs issues
03:29:21  * rumpquit (Quit: rump)
03:30:27  * piscisaureus_joined
03:50:26  * brsonquit (Quit: leaving)
03:58:48  * bradleymeckjoined
04:19:09  <MI6>joyent/libuv: piscisaureus created branch win-ipv6-fixes - http://git.io/RHqeVw
04:22:04  * bradleymeckquit (Quit: bradleymeck)
04:24:06  * Benviejoined
04:24:39  * jmar777quit (Remote host closed the connection)
04:34:09  * qmxquit (Ping timeout: 260 seconds)
04:38:09  * qmxjoined
04:43:42  * brsonjoined
04:47:10  * trevnorrisjoined
05:22:05  * stagasjoined
05:30:55  * ericktjoined
05:39:32  * mikealquit (Quit: Leaving.)
05:56:19  * ericktquit (Quit: erickt)
06:03:19  * felixgejoined
06:03:19  * felixgequit (Changing host)
06:03:19  * felixgejoined
06:04:14  * qmxchanged nick to qmx|away
06:09:49  * mikealjoined
06:14:22  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
07:21:25  * EhevuTovjoined
07:24:29  * mikealquit (Read error: Connection reset by peer)
07:24:39  * mikealjoined
07:44:54  * karupaneruraquit (Excess Flood)
07:45:51  * karupanerurajoined
07:50:30  * rendarjoined
08:01:48  * loladiroquit (Quit: loladiro)
08:12:07  * TheJHjoined
08:12:20  * brsonquit (Ping timeout: 244 seconds)
08:30:09  * EhevuTovquit (Quit: This computer has gone to sleep)
08:36:40  * paddybyersjoined
08:43:22  * loladirojoined
09:04:17  * TheJHquit (Ping timeout: 240 seconds)
09:21:10  * karupaneruraquit (Ping timeout: 276 seconds)
09:26:21  * karupanerurajoined
09:50:16  * trevnorrisquit (Quit: Leaving)
10:26:41  * paddybyersquit (Ping timeout: 245 seconds)
10:55:31  <ryah>hello
10:55:46  <ryah>i guess it's not working hours. ;)
10:59:11  * Ralt_joined
11:10:49  * loladiroquit (Quit: loladiro)
11:34:12  <txdv>async has a send, how should I call the event that basically receives the sent signal?
11:39:40  * bnoordhuisjoined
12:11:14  <indutny>heya
12:11:18  <indutny>it's working hours :)
12:11:22  <indutny>for some people
12:17:51  * TheJHjoined
12:19:00  <mmalecki>ryah: hi :)
12:27:45  * Ralt_quit (Remote host closed the connection)
12:59:41  * Ralt_joined
13:04:57  * Ralt_quit (Ping timeout: 276 seconds)
13:36:34  * TheJHquit (Ping timeout: 252 seconds)
13:44:12  * paddybyersjoined
14:00:52  * TheJHjoined
14:12:43  * AvianFlujoined
15:05:43  * qmx|awaychanged nick to qmx
15:05:52  * qmxquit (Changing host)
15:05:52  * qmxjoined
15:24:02  <indutny>bnoordhuis: yt?
15:24:04  <indutny>hello
16:58:43  * Ralt_joined
17:09:00  * hzjoined
17:15:41  * c4milojoined
17:21:11  <bnoordhuis>indutny: here
17:27:05  <indutny>bnoordhuis: wanna pull in stream_wrap patch?
17:27:08  <indutny>I think I've fixed it
17:27:17  <indutny>https://github.com/joyent/node/pull/4663
17:45:54  * `3rdEdenjoined
17:50:25  * AvianFluquit (Remote host closed the connection)
18:07:53  <bnoordhuis>indutny: typos in comments, otherwise lgtm
18:12:58  * `3rdEdenchanged nick to `3E|BRB
18:13:49  * ericktjoined
18:23:44  * c4milo_joined
18:36:12  <indutny>bnoordhuis: ok, thank you
18:38:23  <MI6>joyent/node: Fedor Indutny master * 99f0b02 : stream_wrap: reference handle before uv_write2 Before sending handle to - http://git.io/hVQHoQ
18:38:39  <indutny>bnoordhuis: should I backport it?
18:39:14  * TheJHquit (Read error: Operation timed out)
18:39:14  <bnoordhuis>indutny: mwah. it already works, this is just future-proofing it
18:39:21  <indutny>yes, right
18:39:21  <indutny>ok
18:47:39  <indutny>brb
18:47:40  <indutny>film
18:59:16  * AvianFlujoined
19:06:33  * c4miloquit (Remote host closed the connection)
19:08:03  * EhevuTovjoined
19:20:47  * TheJHjoined
19:22:07  * `3E|BRBchanged nick to `3rdEden
19:27:45  * c4milo_quit (Remote host closed the connection)
19:28:41  * Ralt_quit (Remote host closed the connection)
19:30:24  * mikealquit (Quit: Leaving.)
19:30:55  * c4milojoined
19:47:05  * paddybyers_joined
19:50:42  * paddybyersquit (Ping timeout: 256 seconds)
19:50:42  * paddybyers_changed nick to paddybyers
19:56:44  * rumpjoined
20:00:38  * mikealjoined
20:07:08  * TheJHquit (Ping timeout: 255 seconds)
20:10:26  * mikealquit (Ping timeout: 245 seconds)
20:19:13  * piscisaureus_joined
20:23:03  * c4milo_joined
20:31:13  * nsmjoined
20:31:42  <nsm>is there a reason behind not being able to get the associated fd from a uv_poll_t struct in the callback?
20:32:10  <nsm>saghul: ^ because you just commented on the issue :)
20:32:28  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
20:33:35  <txdv>nsm: libuv hides all the fds
20:33:55  <txdv>if you created the the poll, you have it, store it in the data field
20:34:03  <txdv>nsm: why do you need it to get in the callback?
20:34:16  <nsm>yes, but usually polling is used with a third party lib, which needs the fd to do its processing
20:34:25  <nsm>the alternative is to wrap the uv_poll_t and the fd in a struct
20:34:32  <nsm>and use uv_poll_t->data to store the struct
20:34:53  <nsm>but it just seems natural to have a way to get the fd back when you assigned it to the uv_poll_t
20:35:38  <txdv>the problem is that windows socket handles are intptr and on unix they are int
20:36:29  <nsm>uv_os_sock_t?
20:36:34  * snojjoined
20:36:46  <txdv>yeah, uv_poll_init_socket is used for that
20:36:51  * mikealjoined
20:36:52  <snoj>mr bentkus?
20:37:02  <txdv>that is me
20:37:25  <snoj>You emailed me a few minutes ago
20:37:42  * brsonjoined
20:37:46  <txdv>I commented on github, but yeah, the message still applies
20:39:03  <snoj>Ah... of course. silly me.
20:39:15  <snoj>anyway, what were you thinking?
20:39:36  <txdv>That I wanted to help you write the unix part
20:39:48  <snoj>ahh
20:40:03  <nsm>hmm ok, i still don't get the rationale
20:40:09  <snoj>cool, well I just pulled my private branch to my ubuntu machien
20:42:51  <txdv>adding tags is useful, just a reminder
20:43:20  <txdv>o it has a ref
20:43:22  <txdv>didn't see that
20:43:51  <txdv>I see bad whitespaces
20:46:21  <snoj>I think I may have to light up a virtual on my laptop. This is taking forever to build.
20:46:33  <txdv>what are you building?
20:47:23  <snoj>node on my home ubuntu "server"
20:47:51  <txdv>why are you building node, this is libuv
20:50:15  <snoj>I did that to get gyp on my win laptop, prolly not necessary elsewhere
20:54:34  <txdv>https://github.com/txdv/libuv/commit/27e11eaafa052e549c6e4f9d7e52d816238c7efb
20:54:48  <txdv>this is the first fix for the windows code, basically codestyle
20:58:22  <snoj>every time with the code styles.
21:00:11  <txdv>make your ide distinquish between whitespaces and tabs
21:00:34  <txdv>what can I say, pisci will just say 'fix it' i just fixed it for you
21:01:40  <snoj>Thanks
21:01:50  * EhevuTovquit (Quit: This computer has gone to sleep)
21:03:05  <txdv>what does the ifIndex do in uv_interface_address_s ?
21:05:14  <txdv>snoj: what is the size of ULONG on win32 machines?
21:05:38  <snoj>docs I found said 32bits
21:05:46  <snoj>4bytes
21:05:47  <txdv>and on 64?
21:07:32  <snoj>From what I gathered, the same
21:07:44  * piscisaureus_joined
21:08:05  <snoj>Would there be a better cross platform type that would be better suited?
21:09:34  <txdv>https://github.com/txdv/libuv/commit/8f280ca4dab0e4a115768d1a2c27440a38a3049c
21:09:36  <txdv>yes
21:09:51  <txdv>now it compiles on linux, but the implementation is still missing
21:10:16  * AvianFluquit (Ping timeout: 240 seconds)
21:10:33  <cjd>uv_handle_t->data is arvitrary user data?
21:10:38  <cjd>*arbitrary
21:10:43  <txdv>cjd: yes
21:10:46  <cjd>thx
21:11:20  * AvianFlujoined
21:11:53  <txdv>piscisaureus_: ifIndex is camelCase, what is would be the correct name adhering to the libuv codestyle guide?
21:12:19  <snoj>as for ifindex, it's suppose to hold the information that the ipv6 multicast option requries.
21:13:28  * jmar777joined
21:14:07  <snoj>brb, gotta change a diaper
21:14:23  <txdv>i hope it is not your own
21:15:10  <snoj>lol, no my son, https://github.com/snoj/libuv/commit/1e3e1e142ea12bf54f2ca27c254d2f90596a619b
21:16:21  <txdv>I think this is correct
21:16:21  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
21:16:31  <txdv>does it still compile on windows?
21:19:01  * qmxchanged nick to qmx|away
21:20:46  <snoj>just tried it before committing
21:20:54  <txdv>did you rename multicast-join.c to join6 or did you copy it?
21:21:24  <snoj>copied and renamed
21:21:49  <snoj>wait...I guess it doesn't compile
21:24:12  <snoj>wait...again..it does, but the threadpool-cancel test has a warning...and I forgot renamed ifIndex in util.c
21:25:32  <snoj>https://github.com/snoj/libuv/commit/124412404ef40135ca2a23967e9b4d827304656f
21:30:03  * TheJHjoined
21:34:00  * loladirojoined
21:47:08  * piscisaureus_joined
22:03:01  * rendarquit
22:06:00  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
22:16:51  <txdv>all my tests are spitting out faulty errors on commits that I personally tested myself earlier
22:16:59  <txdv>specfically on the uv_fs stuff
22:17:01  <txdv>Oo
22:17:05  <snoj>:/
22:18:17  * hzquit
22:19:44  <snoj>barg, I really need to pay attention to git pulls when testing thigns
22:23:37  <txdv>why?
22:24:35  <txdv>we didn't even touch uv_fs and they are failing now
22:25:01  * c4miloquit (Remote host closed the connection)
22:25:25  <txdv>bnoordhuis indutny is joyent/libuv/node-0.9.8 failing for you?
22:25:37  <bnoordhuis>txdv: in what sense?
22:25:47  <txdv>the tests
22:26:12  <bnoordhuis>don't think so, but let me check
22:26:30  <txdv>`fs_event_ref` failed: exit code 139
22:26:50  <txdv>and a lot of other test-fs.event.c tests
22:27:21  <bnoordhuis>txdv: [% 100|+ 180|- 0]: Done. <- linux
22:27:27  <bnoordhuis>what platform are you testing it on?
22:27:35  <txdv>ubuntu 12.04.1
22:27:38  <txdv>updated from 12.04
22:27:45  <txdv>i'm checking a new repo out
22:28:48  <txdv>still the same
22:29:50  * indexzerojoined
22:30:37  <bnoordhuis>txdv: strace or gdb run-tests fs_event_ref fs_event_ref
22:30:43  * ericktquit (Quit: erickt)
22:32:20  <txdv>./run-tests fs_event_ref fs_event_ref
22:32:21  <txdv>Segmentation fault (core dumped)
22:33:23  <bnoordhuis>txdv: gdb then
22:33:31  <bnoordhuis>gdb --args ./run-tests fs_event_ref fs_event_ref
22:33:51  <bnoordhuis>btw, did you do a clean rebuild?
22:34:11  <txdv>i did a new git clone
22:34:26  <txdv>and build everything from sratch
22:35:08  <txdv>http://paste.ubuntu.com/1574217/
22:36:17  <txdv>I updated my system today
22:36:29  <txdv>or yesterday
22:36:42  <bnoordhuis>txdv: bt full?
22:36:49  <txdv>what does bt mean?
22:36:51  <txdv>back trace
22:36:59  <bnoordhuis>yes
22:37:17  * c4milojoined
22:37:34  <bnoordhuis>i wager it's a memory corruption issue because that assert means handle->type is bogus
22:37:40  <txdv>http://paste.ubuntu.com/1574221/
22:38:17  <bnoordhuis>"type = 3086852084", yep
22:38:30  <bnoordhuis>i have a sneaking suspicion
22:38:47  <bnoordhuis>is that a bi-arch or i386 only system?
22:38:52  <txdv>i am checking node-0.9.8
22:39:07  <txdv>Linux precision 3.2.0-36-generic-pae #57-Ubuntu SMP Tue Jan 8 22:01:06 UTC 2013 i686 i686 i386 GNU/Linux
22:39:10  <txdv>32bit
22:39:18  <bnoordhuis>right
22:39:37  <bnoordhuis>9 times out of 10 it's a _FILE_OFFSET_BITS=64 mismatch
22:39:44  <bnoordhuis>can you try building with gyp?
22:40:04  <bnoordhuis>mkdir build && (cd build && ln -s /path/to/node/tools/gyp)
22:40:26  <bnoordhuis>./gyp_uv && make -C out -j8 BUILDTYPE=Debug && out/Debug/run-tests
22:40:55  * `3rdEdenquit (Remote host closed the connection)
22:43:56  <snoj>wee! udp_multicast_join6 passes!
22:44:11  <txdv>on windows
22:44:18  <snoj>on my unbuntu
22:44:20  * indexzeroquit (Quit: indexzero)
22:44:32  <txdv>is there an implementation for linux?
22:46:38  <snoj>Need to squash or something https://github.com/snoj/libuv/commits/ipv6_multicast
22:47:22  <txdv>bnoordhuis: the same
22:47:27  <txdv>the errorcode is now 134
22:47:59  <bnoordhuis>txdv: what does the backtrace look like this time?
22:50:28  <txdv>http://paste.ubuntu.com/1574259/
22:50:53  <bnoordhuis>bt full prints the same backtrace as last time?
22:51:35  <txdv>http://paste.ubuntu.com/1574263/
22:53:41  <txdv>I guess something is breaking on ubuntu-12.04.1
22:54:09  <txdv>I checked my own commit on 12.04 now I updated and it is breaking
22:54:54  <bnoordhuis>odd
22:55:12  <bnoordhuis>what happens if you go back to, say, tag node-v0.9.4?
22:58:25  <txdv>the same
22:58:51  <bnoordhuis>must be something local to your system then
22:59:04  <bnoordhuis>though i have no idea what
22:59:21  <txdv>http://is.gd/rv3dN0
22:59:31  <txdv>i cleaned and recompiled
23:00:16  <txdv>as I said, this must be ubuntu-12.04.1
23:00:20  <txdv>but why
23:02:01  <txdv>libc fucked up
23:02:55  <txdv>now I understand why linux is so much fun
23:03:09  <txdv>all the easter egg bugs in the distros
23:03:32  <txdv>at least windows has one bug to rule upon all windows distros
23:07:07  <txdv>snoj: The commit you are doing represents the time you are doing them: just say "Add" instead of "Added", the timestamp will specify when this was correct
23:07:28  <txdv>bu yeah squash them, you can squash mine too into your own commi
23:12:23  * AvianFluquit (Remote host closed the connection)
23:14:59  * felixgequit (Quit: felixge)
23:15:13  * AvianFlujoined
23:15:17  <txdv>bnoordhuis: what linux distro/version did you test it on?
23:15:52  <bnoordhuis>txdv: ubuntu 12.04.1 x86_64
23:17:06  <txdv>i'm on x86_32
23:19:01  <bnoordhuis>txdv: the tests pass for me when compiled with -m32
23:19:16  <bnoordhuis>when you say x86_32, you don't mean x32 mode, do you?
23:19:27  <bnoordhuis>http://en.wikipedia.org/wiki/X32_ABI <- that x32 mode
23:19:42  <txdv>NO, I have 32bit ubuntu 12.04.1
23:20:10  <txdv>the one with the 4gb limit
23:20:31  <txdv>hence: Linux precision 3.2.0-36-generic-pae #57-Ubuntu SMP Tue Jan 8 22:01:06 UTC 2013 i686 i686 i386 GNU/Linux
23:20:34  <txdv>generic-pae
23:20:48  <txdv>pae has this extension where the limitation is only for the apps
23:21:18  <bnoordhuis>yeah, 36 bits page tables
23:21:23  <bnoordhuis>but still 4gb segments
23:21:30  * paddybyersquit (Ping timeout: 256 seconds)
23:22:43  * nsmquit (Quit: nsm)
23:22:43  <bnoordhuis>perhaps i should say '36 bits physical' and '32 bits logical'
23:22:44  <snoj>battery's dying and it's dinner time here. Thanks for the help guys! I'll try to get the squash done sometime this evening or tomorrow.
23:23:12  <txdv>snoj: i'll look up on the linux parts as soon as possible
23:23:29  <txdv>good night
23:24:44  <txdv>bnoordhuis: btw, there is a mess going on on all the errocodes between unix and win
23:25:00  <bnoordhuis>txdv: that can be fixed
23:26:32  <MI6>joyent/node: Rick Yakubowski v0.8 * 5abde81 : doc: fix typo in cluster module documentation Fix a small typo in the cl - http://git.io/t733nQ
23:27:56  * snojquit (Ping timeout: 252 seconds)
23:30:09  <txdv>what I noticed by fixing the issue 'pass structs by address, not value' is that all the uv_udp* methods are missing in uv_common
23:30:44  <txdv>I think this is the place where we should check for passed faulty arguments
23:32:11  <txdv>like is this the right handle, is this addr ipv4 or ipv6
23:33:44  <bnoordhuis>txdv: sure
23:34:11  <txdv>sure like in yes, or whatever?
23:42:31  * c4milo_quit (Remote host closed the connection)
23:42:41  <bnoordhuis>txdv: as in yes, uncontroversial change
23:43:00  <bnoordhuis>sorry, little sleepy
23:46:28  * ericktjoined
23:47:14  <txdv>then this is an issue you should be interested in: https://github.com/joyent/libuv/issues/696
23:47:26  * `3rdEdenjoined
23:51:14  * c4milo_joined
23:56:03  * `3rdEdenquit (Ping timeout: 256 seconds)
23:56:41  * indexzerojoined