00:01:45
| * dap | quit (Quit: Leaving.) |
00:19:28
| * joshthecoder | quit (Quit: Leaving...) |
00:19:59
| * kazupon | joined |
00:20:47
| * paddybyers | quit (Ping timeout: 246 seconds) |
00:24:17
| * EhevuTov | joined |
00:29:08
| * kazupon | quit (Ping timeout: 248 seconds) |
00:29:44
| <TooTallNate> | what do you guys think about adding os.endianness() to core? |
00:29:52
| <TooTallNate> | returns 'LE' or 'BE' |
00:32:15
| * loladiro | joined |
00:34:18
| <mmalecki> | TooTallNate: I'm curious what's the usecase |
00:35:09
| <TooTallNate> | mmalecki: well i needed to write out an Array of ints in native endianness. this is easily solved by TypedArrays, but i figure there's other use cases out there |
00:35:25
| <mmalecki> | I see |
00:35:40
| <mmalecki> | well, I'm +1 to adding every system information to the core |
00:40:47
| <bnoordhuis> | TooTallNate: meh. maybe if a lot of people ask for it |
00:42:00
| <bnoordhuis> | TooTallNate: you don't reall need it anyway, you can find out the endianness by overlaying e.g. an uint16array and a uint8array. write two bytes to the latter and read from the former, presto |
00:42:34
| <TooTallNate> | hahaha, clever |
00:53:37
| * kazupon | joined |
00:56:10
| <TooTallNate> | bnoordhuis: the benefit there is it works in the browser :D |
00:56:25
| <TooTallNate> | though i don't know why you'd need that info in the browser |
00:57:41
| <bnoordhuis> | TooTallNate: so why do you need that info in node? :) |
00:58:14
| * kazupon | quit (Remote host closed the connection) |
00:58:16
| <TooTallNate> | bnoordhuis: haha, writing a typed array (i know what comes next :p ) |
01:00:53
| * piscisaureus_ | joined |
01:02:13
| * isaacs | has no objection to adding os.endianness() |
01:02:22
| <isaacs> | except for the perrennial objection of "it's another thing" |
01:02:32
| <isaacs> | if we don't need it, meh |
01:02:47
| <isaacs> | otoh, "overlaying e.g. an uint16array and a uint8array. write two bytes to the latter and read from the former, presto |
01:02:58
| <isaacs> | is not exactly obvious or a nice api :) |
01:03:59
| <TooTallNate> | isaacs: i'm exporting it in my "ref" module, cause it exports types that need to be machine-endianness |
01:04:00
| <TooTallNate> | https://github.com/TooTallNate/ref/blob/master/src/binding.cc#L89-99 |
01:04:15
| <TooTallNate> | cause of node-ffi in the end… |
01:04:31
| <isaacs> | hm. that makes sense. |
01:04:48
| <isaacs> | an os.endianness() method would be a bit nicer, then, I guess i can see that. |
01:08:31
| <isaacs> | awesome. i think i got tcp streams behaving properly |
01:08:40
| <isaacs> | <3 node's tests |
01:09:06
| <isaacs> | they're ruthless aweful ornery bastards sometimes, and generally pretty badly written, but they sure do cover all kinds of edge cases. |
01:10:26
| <AvianFlu> | that's what's good about having 100+ people write your tests :D |
01:10:42
| <AvianFlu> | one person writes them all, you've only got one point of view and one set of use cases reflected |
01:11:26
| * c4milo | quit (Remote host closed the connection) |
01:22:31
| * kristate | quit (Ping timeout: 260 seconds) |
01:28:37
| * kazupon | joined |
01:30:23
| <MI6> | joyent/node: isaacs streams2-net * 9767f18 : test: Trigger old-mode in tests, and more output (+6 more commits) - http://git.io/CVo8ag |
01:33:53
| * bradleymeck | joined |
01:37:44
| * kazupon | quit (Ping timeout: 252 seconds) |
01:40:15
| * joshthecoder | joined |
01:40:50
| <isaacs> | hmmm... so, i think we actually need both a lowWaterMark and a highWaterMark for readables. |
01:41:03
| <isaacs> | lowWaterMark = must have X bytes buffered to emit('readable') |
01:41:18
| <isaacs> | highWaterMark = do not call _read(n,cb) when this many are buffered. |
01:41:30
| * piscisaureus_ | quit (Quit: ~ Trillian Astra - www.trillian.im ~) |
01:43:38
| * abraxas | joined |
01:43:46
| <MI6> | joyent/node: isaacs streams2-net * a6baf2f : stream2: Always _read() when the lwm=0 - http://git.io/Wx3gYQ |
01:44:19
| <TooTallNate> | isaacs: makes sense to me |
01:44:25
| <isaacs> | ok, gotta run |
01:44:29
| <isaacs> | taco tiem! |
01:58:06
| * EhevuTov | quit (Quit: This computer has gone to sleep) |
01:58:18
| * c4milo | joined |
02:04:53
| * kazupon | joined |
02:05:32
| * peterrs | quit (Ping timeout: 265 seconds) |
02:06:59
| * piscisaureus_ | joined |
02:07:09
| * piscisaureus_ | quit (Client Quit) |
02:07:28
| * perezd | quit (Quit: perezd) |
02:14:05
| * c4milo | quit (Remote host closed the connection) |
02:14:11
| * kazupon | quit (Ping timeout: 245 seconds) |
02:15:33
| * c4milo | joined |
02:38:40
| * c4milo | quit (Remote host closed the connection) |
02:40:20
| * mikeal | joined |
02:40:34
| * kazupon | joined |
02:40:52
| * loladiro | quit (Quit: loladiro) |
02:42:57
| * mikeal | quit (Client Quit) |
02:43:46
| * TooTallNate | quit (Quit: Computer has gone to sleep.) |
02:45:22
| * mikeal | joined |
02:45:42
| * mikeal | quit (Client Quit) |
02:49:59
| * kazupon | quit (Ping timeout: 255 seconds) |
02:59:55
| * mikeal | joined |
03:06:23
| * loladiro | joined |
03:08:55
| * mikeal | quit (Quit: Leaving.) |
03:39:05
| * mikeal | joined |
03:50:03
| * kazupon | joined |
03:51:50
| * c4milo | joined |
03:53:33
| * brson | quit (Ping timeout: 246 seconds) |
03:56:00
| * c4milo | quit (Ping timeout: 246 seconds) |
04:08:14
| * mikeal | quit (Quit: Leaving.) |
04:12:46
| * mikeal | joined |
04:22:33
| * perezd | joined |
04:28:49
| * brson | joined |
04:47:29
| * erickt | joined |
04:51:06
| * bnoordhuis | quit (Ping timeout: 240 seconds) |
04:54:42
| * mikeal | quit (Quit: Leaving.) |
04:55:13
| * mikeal | joined |
04:59:20
| * mikeal | quit (Client Quit) |
05:02:47
| * erickt | quit (Quit: erickt) |
05:20:10
| * TooTallNate | joined |
05:36:46
| * TooTallNate | quit (Quit: ["Textual IRC Client: www.textualapp.com"]) |
06:09:11
| * txdv_ | quit (Read error: Operation timed out) |
06:09:59
| * bentkus_ | quit (Ping timeout: 260 seconds) |
06:34:18
| * rendar | joined |
06:42:00
| * brson | quit (Quit: leaving) |
07:01:35
| * AvianFlu | quit (Remote host closed the connection) |
07:09:32
| * stagas | joined |
07:11:34
| * stephank | quit (Ping timeout: 240 seconds) |
07:14:50
| * stephank | joined |
07:33:41
| * stephank | quit (Ping timeout: 256 seconds) |
07:33:57
| * loladiro | quit (Quit: loladiro) |
07:35:11
| * `3rdEden | joined |
07:37:27
| * mikeal | joined |
07:47:53
| * stephank | joined |
07:50:49
| * Kai1 | joined |
07:56:11
| * paddybyers | joined |
08:06:34
| * bradleymeck | quit (Quit: bradleymeck) |
08:32:18
| * loladiro | joined |
08:43:17
| * joshthecoder | quit (Quit: Linkinus - http://linkinus.com) |
09:04:35
| * loladiro | quit (Quit: loladiro) |
09:08:18
| * c4milo | joined |
09:10:44
| * Kai1 | part |
09:12:22
| * c4milo | quit (Ping timeout: 246 seconds) |
09:15:00
| * peterrs | joined |
09:19:06
| * sergim | joined |
09:24:18
| * c4milo | joined |
09:35:11
| * janjongboom | joined |
09:49:05
| * sergim | quit (Quit: Computer has gone to sleep.) |
09:58:45
| * sergim | joined |
10:35:30
| * KaiK | joined |
10:36:43
| * KaiK | quit (Client Quit) |
10:38:17
| * `3rdEden | quit (Read error: Operation timed out) |
10:38:49
| * kazupon | quit (Remote host closed the connection) |
10:38:53
| * hz | joined |
10:55:03
| * _z_ | joined |
11:05:24
| * sergim | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
11:05:47
| * sergim | joined |
11:07:42
| * stagas_ | joined |
11:09:15
| * stagas | quit (Ping timeout: 268 seconds) |
11:09:26
| * stagas_ | changed nick to stagas |
11:18:54
| * stagas | quit (Ping timeout: 252 seconds) |
11:19:50
| * stagas | joined |
11:49:17
| * kazupon | joined |
11:54:51
| * kazupon | quit (Ping timeout: 260 seconds) |
11:56:24
| * TheJH | joined |
11:58:07
| * hz | quit |
11:58:57
| * _z_ | quit (Ping timeout: 246 seconds) |
12:01:39
| * kazupon | joined |
12:05:51
| * `3rdEden | joined |
12:16:33
| * piscisaureus_ | joined |
12:25:48
| * piscisaureus_ | quit (Read error: Connection reset by peer) |
12:26:31
| * piscisaureus_ | joined |
12:44:45
| * kazupon | quit (Remote host closed the connection) |
12:46:09
| * hz | joined |
12:48:27
| * kazupon | joined |
13:12:56
| * sgallagh | joined |
13:14:36
| * abraxas | quit (Remote host closed the connection) |
13:16:36
| * stagas | quit (Ping timeout: 248 seconds) |
13:21:09
| * stagas | joined |
13:24:43
| <txdv> | whos coding?! |
13:29:58
| * stagas | quit (Quit: Bye) |
13:31:20
| * stagas | joined |
13:48:32
| * jkridner | part |
13:52:53
| * stagas | quit (Quit: Bye) |
13:57:52
| * bradleymeck | joined |
14:00:38
| * bradleymeck | quit (Client Quit) |
14:07:04
| <indutny> | piscisaureus_: hoya |
14:07:11
| <piscisaureus_> | ola indutny |
14:07:19
| <indutny> | piscisaureus_: what are we working on? |
14:07:29
| <piscisaureus_> | indutny: right now? or in general |
14:07:36
| <indutny> | I really feel like I've missed a lot of things on node.js in recent weeks |
14:07:40
| <indutny> | well |
14:07:45
| <piscisaureus_> | mostly runjs still. Right now I am reviewing isaacs' streams2 branch |
14:07:52
| <piscisaureus_> | otherwise he will fire me when we have the call |
14:07:59
| <indutny> | haha |
14:08:00
| <indutny> | ok |
14:08:06
| <indutny> | so we were mostly doing nothing |
14:08:08
| <indutny> | except isaacs |
14:08:14
| <piscisaureus_> | yes |
14:08:15
| <indutny> | he was working on streams2, right? |
14:08:16
| <piscisaureus_> | I think so |
14:08:16
| <indutny> | ok |
14:08:19
| <piscisaureus_> | yeah he was |
14:08:23
| <piscisaureus_> | was ben also doing nothing? |
14:08:24
| <piscisaureus_> | that'd be sad |
14:08:42
| <indutny> | idk |
14:09:10
| <indutny> | I worked a lot on candor in my free time |
14:09:13
| <indutny> | it was so exciting |
14:09:14
| <piscisaureus_> | ircretary: tell bnoordhuis what are you doing man |
14:09:14
| <ircretary> | piscisaureus_: I'll be sure to tell bnoordhuis |
14:09:19
| <indutny> | haha |
14:09:31
| <indutny> | and now I feel like I need to fix something in node |
14:09:32
| <indutny> | or libuv |
14:09:36
| <piscisaureus_> | HIHI |
14:09:37
| <piscisaureus_> | ok |
14:09:41
| <piscisaureus_> | well, there's work to do |
14:09:43
| <indutny> | HIHI? |
14:10:10
| <piscisaureus_> | indutny: what sort of thing would you want to do? |
14:10:22
| <piscisaureus_> | indutny: if you want to make your employer happy, add pty support to libuv :-p |
14:10:28
| <indutny> | haha |
14:10:30
| <indutny> | well |
14:10:35
| <piscisaureus_> | ok, not that |
14:10:36
| <indutny> | for unixes only? |
14:10:38
| <indutny> | :) |
14:10:38
| <piscisaureus_> | yes |
14:10:39
| <piscisaureus_> | fine |
14:10:47
| <piscisaureus_> | windows users don't expect to use a pty |
14:10:47
| <indutny> | well, I could try that then |
14:10:57
| <piscisaureus_> | I think you should just piggyback on uv_pipe |
14:11:02
| <piscisaureus_> | *uv_pipe_t |
14:11:15
| <indutny> | ok |
14:11:21
| <piscisaureus_> | I mean it has different modes already (IPC and non-ipc) so you could easily add another mode (PTY) |
14:11:27
| <indutny> | I understand |
14:11:34
| <piscisaureus_> | but... only if you want to |
14:11:41
| <piscisaureus_> | maybe you have more fun things to do |
14:11:55
| <indutny> | well, implementing IC was really funny |
14:11:59
| <indutny> | if you're talking about this :) |
14:12:08
| <piscisaureus_> | s/funny/fun/ |
14:12:18
| <piscisaureus_> | it sounds hard to do that |
14:12:25
| <indutny> | funny* |
14:12:26
| <piscisaureus_> | I wonder how you pulled it off so quickly |
14:12:30
| <indutny> | well |
14:12:34
| <indutny> | I've simplified it |
14:12:37
| <indutny> | only monomorphic |
14:12:40
| <piscisaureus_> | aah |
14:12:49
| <indutny> | and not allowing adding new properties |
14:12:57
| <piscisaureus_> | so if you have a cache miss, you switch the type? |
14:13:06
| <piscisaureus_> | or you switch to "megamorphic" immediately? |
14:13:13
| <indutny> | sort of |
14:13:18
| <indutny> | it's IC for property loads/stores |
14:13:28
| <indutny> | so I'm just culling runtime in case of cache miss |
14:13:30
| <indutny> | and updating cache |
14:13:44
| <piscisaureus_> | ok so you are always updating the cache |
14:13:47
| <indutny> | yes |
14:13:55
| <indutny> | well |
14:14:00
| <indutny> | not always |
14:14:06
| <indutny> | if there comes object with unclear prototype |
14:14:09
| <piscisaureus_> | that could be bad in theory - because you might end up updating the cache very often if you have a polymorphic site |
14:14:10
| <indutny> | I'm disabling cache |
14:14:13
| <piscisaureus_> | ah |
14:14:46
| <indutny> | yeah |
14:14:55
| <piscisaureus_> | indutny: you want to take a look inside v8 internals? |
14:15:02
| <indutny> | I already looked into |
14:15:09
| <indutny> | hidden classes and etc |
14:16:14
| * _z_ | joined |
14:16:28
| <indutny> | piscisaureus_: so I'm optimizing access to object clones |
14:16:51
| <indutny> | piscisaureus_: and if code will try to work with not-clone - it'll suck |
14:20:20
| <piscisaureus_> | indutny: No I meant debugging https://github.com/joyent/node/issues/4231 :-) |
14:20:29
| <indutny> | aaah |
14:21:03
| <indutny> | why not post issue on v8's tracker? |
14:21:09
| <indutny> | you want to fix it yourself? |
14:21:31
| <indutny> | piscisaureus_: ^ |
14:21:45
| <piscisaureus_> | oh |
14:21:50
| <piscisaureus_> | I forgot I think |
14:21:58
| <piscisaureus_> | at some point I was doing that |
14:22:14
| <indutny> | he |
14:22:15
| <indutny> | heh |
14:22:19
| <indutny> | looks like a phi problem |
14:22:27
| <indutny> | it isn't happening without loop, right? |
14:24:35
| <indutny> | piscisaureus_: ok, I'm back to c9 stuff |
14:24:40
| <indutny> | piscisaureus_: will look into it later |
14:31:10
| * hz | quit |
14:37:02
| * _z_ | quit (Quit: Quitte) |
14:37:23
| * TheJH | quit (Ping timeout: 255 seconds) |
14:46:34
| * bnoordhuis | joined |
15:02:57
| * kazupon | quit (Remote host closed the connection) |
15:09:05
| * bradleymeck | joined |
15:10:26
| * bradleymeck | quit (Client Quit) |
15:15:09
| * abraxas | joined |
15:19:48
| * abraxas | quit (Ping timeout: 248 seconds) |
15:20:52
| * dap | joined |
15:24:25
| * mmalecki | changed nick to mmalecki[food] |
15:25:44
| * kazupon | joined |
15:27:51
| * piscisaureus_ | quit (Ping timeout: 265 seconds) |
15:41:03
| * AvianFlu | joined |
15:42:12
| * TheJH | joined |
15:43:03
| * piscisaureus_ | joined |
15:43:35
| <isaacs> | good morning |
15:46:00
| * hz | joined |
15:46:39
| <piscisaureus_> | isaacs: always converting strings to buffers in js -> not very good performance-wise |
15:47:18
| <isaacs> | piscisaureus_: yeah, that's why net streams don't do that |
15:47:41
| <piscisaureus_> | isaacs: oh - right. But your net changes havent landed yet ? |
15:47:41
| <isaacs> | piscisaureus_: you can set a flag to have _write get a [string,encoding] instead |
15:47:56
| <isaacs> | piscisaureus_: it's in streams2-net, which is pretty gross atm |
15:47:57
| * loladiro | joined |
15:48:09
| <piscisaureus_> | Ah, I see. I was just looking at streams2 |
15:48:13
| <isaacs> | piscisaureus_: for zlib, we were doing that anyway |
15:48:18
| <isaacs> | piscisaureus_: and for crypto, well, it's got other problems. |
15:48:32
| <indutny> | morning |
15:48:33
| <piscisaureus_> | isaacs: we were planning to add the same optimization to crypto tho |
15:48:38
| <isaacs> | piscisaureus_: sure. |
15:48:47
| <isaacs> | and it's not hard to do in the context of streams2 |
15:48:56
| <isaacs> | it's just a matter of setting a flag |
15:49:09
| <isaacs> | this._writableState.decodeStrings=false |
15:49:14
| <isaacs> | in the ctor |
15:58:01
| <piscisaureus_> | isaacs: the low/high water marks are nice tho |
15:58:10
| <isaacs> | piscisaureus_: yeah. |
15:58:18
| <isaacs> | i need to change how they work for readables, though |
15:58:18
| <piscisaureus_> | isaacs: could make fs streams more efficient at least (esp. when piping) |
15:58:35
| <isaacs> | we sort of had that implemnetation for fs streams already |
15:58:45
| <piscisaureus_> | isaacs: in the net branch you should probably check against the number of bytes pending that libuv reports |
15:58:48
| <isaacs> | it just wasn't configurable, or easy to read thoruhg |
15:58:55
| <piscisaureus_> | did wel? |
15:59:16
| * piscisaureus_ | didn't know |
15:59:21
| <isaacs> | well, we read in chunks, and alwyas tried to keep a min amount in the buffer |
15:59:33
| <piscisaureus_> | ah, yeah, I meant for writable streams |
15:59:43
| <isaacs> | oh, right |
15:59:50
| <piscisaureus_> | writable streams used to be not so efficient because write() would always return false |
15:59:51
| <isaacs> | yeah, there we just had a queue of things to do |
15:59:54
| <isaacs> | right |
15:59:59
| <isaacs> | yeah,t hat sucked |
16:00:06
| <isaacs> | lots of unnecessary pausing of whatever you were piping into a file |
16:00:11
| <piscisaureus_> | so if you were piping then it would pause and resume the incoming stream yeah, that |
16:00:49
| <isaacs> | pretty much every userland fs-streamy-thing changes that behavior. |
16:02:19
| <piscisaureus_> | isaacs: I think for readable streams it is important to not confuse chunk size with the low water mark |
16:02:41
| <piscisaureus_> | the low water mark only makes sense on "slow" streams, like tcp streams |
16:03:00
| <piscisaureus_> | it can be more efficient to only emit readable when there are atleast x bytes pending |
16:03:39
| <piscisaureus_> | but the caveat is that if you have a duplex communication protocol, you may have to respond to a "request" that is smaller than the low water mark |
16:03:43
| <indutny> | isaacs: call? |
16:03:50
| <indutny> | or in 1h? |
16:03:52
| <piscisaureus_> | isaacs: so it should default to 1, and be user-configurable |
16:03:58
| <isaacs> | 1h |
16:04:02
| <piscisaureus_> | oh |
16:04:13
| <piscisaureus_> | did you guys change time zones now? |
16:04:22
| <isaacs> | piscisaureus_: yeah, blame america |
16:04:28
| <piscisaureus_> | I blame obama |
16:04:31
| <isaacs> | summer time ended |
16:04:41
| <indutny> | piscisaureus_: well, we ain't changing them anymore |
16:04:42
| <isaacs> | it's at 17:00 now |
16:04:47
| <indutny> | piscisaureus_: blame Putin |
16:04:54
| <piscisaureus_> | indutny: +1 for putin then |
16:05:01
| <indutny> | piscisaureus_: not really |
16:05:05
| <indutny> | piscisaureus_: we stuck in winter TZ |
16:05:17
| <isaacs> | piscisaureus_: meh. it' sjust a number |
16:05:18
| <indutny> | I hoped for us to stay in summer time |
16:05:19
| <piscisaureus_> | well you're stuck in winter so you better stick to winter tz as well :-) |
16:05:21
| <isaacs> | er, indutny |
16:05:26
| <indutny> | piscisaureus_: haha |
16:05:37
| <isaacs> | piscisaureus_: yeah, so, for tcp streams, any duplex really, the lwm has to be 0 |
16:05:47
| <isaacs> | piscisaureus_: but i also need a hwm for readables to say when to STOP reading |
16:05:48
| <piscisaureus_> | well 1/0 whatever |
16:06:00
| <piscisaureus_> | I would say you should not emit "readable" when there's 0 bytes to read :-) |
16:06:08
| <isaacs> | piscisaureus_: right |
16:06:08
| <indutny> | bnoordhuis: |
16:06:17
| <bnoordhuis> | indutny: ? |
16:06:21
| <indutny> | bnoordhuis: can you please remind me what should I write instead of uv_wait()? |
16:06:28
| <piscisaureus_> | isaacs: but yes 0 should work, it would basically mean "no low water mark" |
16:06:34
| <isaacs> | piscisaureus_: yeah |
16:06:41
| <bnoordhuis> | indutny: you mean what to work on? |
16:06:52
| <indutny> | bnoordhuis: no, I mean I would like to get uv_wait() in |
16:06:54
| <isaacs> | but then you still need a high water mark, so that you can still keep trying to read the stream, so you see the EOF if it comes. |
16:06:54
| <piscisaureus_> | isaacs: there is not much sense in having a high water mark for readable stream. |
16:06:58
| <isaacs> | piscisaureus_: ^ |
16:06:59
| <indutny> | bnoordhuis: :) |
16:07:30
| <isaacs> | piscisaureus_: so, right now, i'm confusing lwm to mean "when do i bother to emit('readable')" and also "when should i keep calling _read()" |
16:07:38
| <isaacs> | piscisaureus_: the first is a lwm. the second is more properly a high water mark. |
16:07:48
| <bnoordhuis> | indutny: oh, like that. uhm, as you know i'm not a big fan of the extra complexity |
16:07:56
| <indutny> | I know |
16:08:02
| <indutny> | well |
16:08:06
| <indutny> | lets expose fd then |
16:08:12
| <bnoordhuis> | i would prefer to give the user the epoll/kqueue fd and the next timeout and call it a day |
16:08:15
| <bnoordhuis> | exactly :) |
16:08:17
| <indutny> | yes |
16:08:20
| <piscisaureus_> | isaacs: I think that if you hit an EOF you should just ignore any high/low marks |
16:08:24
| <indutny> | at least it's anything |
16:08:30
| <bnoordhuis> | or something |
16:08:32
| <indutny> | and if something won't work - that is user's problems |
16:08:36
| <indutny> | :) |
16:08:56
| <bnoordhuis> | yes, the user is free to move the polling to a thread |
16:09:04
| <bnoordhuis> | we don't have to make that choice for him/her/it |
16:09:24
| <bnoordhuis> | btw, at what time is the call this week? |
16:09:31
| <bnoordhuis> | all this dst stuff is confusing me no end |
16:09:50
| <indutny> | 1h |
16:09:52
| <indutny> | from now |
16:13:06
| <sgallagh> | bnoordhuis: Do you happen to know which upstream version of libev that your fork matches to? |
16:14:10
| <bnoordhuis> | sgallagh: you mean what release? frankly, no :) |
16:14:23
| <bnoordhuis> | it's at least over a year old though |
16:15:13
| <sgallagh> | bnoordhuis: Found it in the sources: looks like 4.04 |
16:15:45
| <isaacs> | piscisaureus_: but that's the point, you won't even see the EOF if you dont _read() |
16:16:21
| <isaacs> | piscisaureus_: let's say, you _read() and get a chunk, but dont read() to consume it |
16:16:28
| <isaacs> | piscisaureus_: and meanwhile, i .end() |
16:16:40
| <isaacs> | piscisaureus_: there's an EOF sitting there waiting to be consumed, but you're not going to see it |
16:17:12
| <isaacs> | piscisaureus_: because you've called readStop() and aren't going to call readStart() again until you consume the bytes sitting in the buffer to trigger another _read(n,cb) call |
16:17:35
| <isaacs> | piscisaureus_: so, _read() should get called in teh background until the highWaterMark is hit |
16:18:18
| <isaacs> | also, let's just say that our call is at 17:00 forever. 8:00 am is too early for CA, but we can shift it to 10:00 when we go back on summer time. |
16:23:13
| * kazupon | quit (Remote host closed the connection) |
16:24:57
| * `3rdEden | changed nick to `3E|FOOD|LOLZ |
16:28:36
| <piscisaureus_> | isaacs: ew 17.00 I think youre mixing stuff up |
16:28:55
| <isaacs> | huh? |
16:29:21
| <isaacs> | piscisaureus_: too late? |
16:29:51
| <piscisaureus_> | isaacs well if we are both back in summer time, 10.00am == 19.00pm for us |
16:29:53
| <piscisaureus_> | just like now |
16:30:05
| <isaacs> | ohh, ok. |
16:30:11
| <isaacs> | stupid spherical planet... |
16:30:17
| * loladiro | quit (Quit: loladiro) |
16:30:23
| <isaacs> | 16:00 is actually fine for me. |
16:30:37
| <isaacs> | i'd just prefer to stick with UTC and the sun, rather than this provincial "us/pacific" thing |
16:30:48
| <piscisaureus_> | isaacs: 16.00 for us is 7am for you :-) |
16:31:04
| <isaacs> | 1600 is 8:00 for me right now |
16:31:10
| <isaacs> | it's 16:32 right now |
16:31:23
| <isaacs> | 16:00 is 9AM when we're on summer time. |
16:31:31
| <piscisaureus_> | isaacs: you are referring to UTC times |
16:31:33
| <piscisaureus_> | ? |
16:31:34
| <isaacs> | yes. |
16:31:38
| <isaacs> | 16:00 UTC |
16:31:39
| <piscisaureus_> | isaacs: here it is 17:30 |
16:31:43
| <isaacs> | right. |
16:31:45
| <isaacs> | you're +1 |
16:31:54
| <isaacs> | i'm -8 or -7, depending on teh season |
16:32:07
| <piscisaureus_> | here we are +1 or +2 depending on teh season |
16:32:10
| <isaacs> | i thought you guys were +1/+0, but you're saying it's 1/2 |
16:32:10
| <isaacs> | right |
16:32:33
| <isaacs> | k. would 16:00Z work for you guys year-round? |
16:32:45
| <isaacs> | i don't know if scott and nate will object to getting up early. |
16:32:46
| <piscisaureus_> | yes |
16:32:56
| <piscisaureus_> | for me it would |
16:32:57
| <isaacs> | we might just have to deal with provincial bs. |
16:34:19
| <isaacs> | seriously, i think time zones will eventually be seen as one of hte greatest tragedies of human civilization. |
16:34:24
| <isaacs> | in the fullness of history. |
16:35:25
| <piscisaureus_> | Yes. Forget about world wars and concentration camps. |
16:35:29
| <piscisaureus_> | Time zones, that was it. |
16:36:05
| <isaacs> | all those thigns were symptoms. |
16:36:12
| <isaacs> | of the deeper disease. |
16:36:35
| <isaacs> | how can we have an experience of universal brotherhood when we don't even know what time it is there? |
16:37:08
| <piscisaureus_> | also, everybody should learn dutch |
16:37:51
| <piscisaureus_> | I think that if everybody would be white and male then we'd also feel much more connected |
16:39:23
| <isaacs> | piscisaureus_: why learn dutch? the dutch all speak english already. |
16:39:54
| <piscisaureus_> | isaacs: well if everybody would learn english that 1 third of the world population would have an artifical advantage |
16:39:58
| <piscisaureus_> | not so much with dutch |
16:40:07
| <piscisaureus_> | even dutch people don't speak dutch properly |
16:40:29
| <isaacs> | piscisaureus_: that's what they said about esperanto and lojban |
16:40:43
| <isaacs> | piscisaureus_: but of course, esperanto is WAY easier for europeans and americans to leanr. |
16:40:53
| <isaacs> | piscisaureus_: nad lojban is just kind of stupid. |
16:42:48
| <CoverSlide> | everyone should learn dothraki |
16:43:01
| <isaacs> | piscisaureus_: irl, economic factors always drive cultural changes, and the people with the money always have the advantage. once upon a time, that was latin, now it's english in the west and mandarin in the east, and eventually may be some kind of hybrid simplified english-ish language. |
16:43:28
| <isaacs> | polyglot systems attract the worst kind of language nerds. you see this in java, and in europe. |
16:43:31
| <isaacs> | ;P |
16:43:36
| <CoverSlide> | well according to Firefly, Mandarin will become the dominant language in the future |
16:43:43
| <isaacs> | CoverSlide: only for cursing, though |
16:43:47
| <tjfontaine> | the world according to whedon |
16:43:48
| <CoverSlide> | true |
16:44:07
| <isaacs> | and really, as Futurama teaches us, Cantonese is WAY better for cursing. |
16:44:18
| <isaacs> | Hailat! Dasane! |
16:44:25
| <isaacs> | literally: "CRITICAL SITUATION! HIT YOU TO DEATH!" |
16:44:44
| <isaacs> | kinda makes "shit" and "fuck" look tame |
16:45:44
| <CoverSlide> | http://wiki.dothraki.org/dothraki/Learningdothraki |
16:46:20
| <CoverSlide> | isaacs: looks like something you'd see at the end of an arcade fighting game |
16:46:48
| * janjongboom | quit (Quit: janjongboom) |
16:50:38
| * kristate | joined |
16:52:51
| * TooTallNate | joined |
16:53:06
| * perezd | quit (Quit: perezd) |
16:56:59
| * sergim | quit (Quit: Computer has gone to sleep.) |
16:57:14
| <bnoordhuis> | call in 3? |
16:57:21
| * bnoordhu1s | joined |
16:57:52
| * bnoordhu1s | quit (Client Quit) |
16:58:07
| * sgallagh | quit (Remote host closed the connection) |
16:58:22
| * bradleymeck | joined |
16:58:40
| <bnoordhuis> | isaacs: 1600 UTC works for me as well |
16:59:42
| <bnoordhuis> | piscisaureus_: bertje, maak es an |
17:06:40
| * peterrs | quit (Remote host closed the connection) |
17:07:35
| * kkaefer | part ("Leaving...") |
17:08:18
| * sgallagh | joined |
17:13:13
| * yunong | joined |
17:16:04
| <rendar> | isaacs: lol, futurama rocks :) |
17:21:05
| * sblom | joined |
17:22:14
| * bradleymeck | quit (Quit: bradleymeck) |
17:23:24
| * perezd | joined |
17:29:46
| <indutny> | piscisaureus_: I've tried looking at https://github.com/joyent/node/issues/4231#issuecomment-10037956 |
17:29:52
| <indutny> | piscisaureus_: but v8's hydrogen is so obscure |
17:29:58
| <piscisaureus_> | heh |
17:30:12
| <indutny> | even c1visualizer doesn't help me to get it |
17:30:16
| <piscisaureus_> | i had the same fedor |
17:30:31
| <indutny> | candor's HIR is much simplier to understand |
17:30:32
| <indutny> | :) |
17:30:36
| <MI6> | joyent/libuv: Ben Noordhuis master * 43d52c7 : test: make `make test` link against .so (+1 more commits) - http://git.io/VXSKzw |
17:30:40
| <bnoordhuis> | sgallagh: ^ |
17:30:43
| <piscisaureus_> | also much slower :-p |
17:31:22
| <indutny> | not on every example :) |
17:31:42
| <indutny> | well, yes, it's slower |
17:31:46
| <indutny> | one day you'll work on it |
17:31:49
| * mikeal | quit (Quit: Leaving.) |
17:31:51
| <indutny> | when you'll be fired |
17:32:27
| <bnoordhuis> | indutny: you can't really fire someone you don't pay |
17:32:44
| <indutny> | bnoordhuis: the best quote :) |
17:33:09
| <bnoordhuis> | bert just showed up one day and couldn't be made to leave again |
17:34:25
| * mikeal | joined |
17:34:41
| * mikeal | quit (Client Quit) |
17:38:10
| <sblom> | indutny: here's what I know about the failure in simple/test-debugger-client.js |
17:38:43
| <sblom> | indutny: it hangs in the third test case (eval("2+2")) 100% of the time on my Windows machine, and about 20% of the time on my Macbook. |
17:39:03
| * travis-ci | joined |
17:39:03
| <travis-ci> | [travis-ci] joyent/libuv#856 (master - 43d52c7 : Ben Noordhuis): The build passed. |
17:39:03
| <travis-ci> | [travis-ci] Change view : https://github.com/joyent/libuv/compare/d56434a21d9e...43d52c77baa4 |
17:39:03
| <travis-ci> | [travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/3115409 |
17:39:03
| * travis-ci | part |
17:39:31
| <sblom> | indutny: from doing some stepping in the debugger, it appears that the eval request is being made to v8, but for some reason it's vanishing. (Looking up a line number where you can see this in action.) |
17:41:51
| * bnoordhuis | is off to dinner |
17:42:19
| <MI6> | joyent/node: isaacs streams2-net * 4ef328e : test: update test-child-process-fork-net2 to work properly It was only e - http://git.io/YdORJA |
17:42:24
| <sblom> | indutny: isaacs mentioned to me (you may already know this) that there's some kind of historical wrestling match with a debugger initialization race condition that you can see as a fixme on line 100 in node.js |
17:42:51
| <sblom> | (line 100 in joyent/node#master) |
17:46:00
| <sgallagh> | bnoordhuis: Thanks for the pointer |
17:46:48
| <sblom> | indutny: I'm pretty sure the line where my debug stepping lost the scent of the trail was line 206 in deps/v8/src/execution.cc (result = Invoke()) |
17:46:57
| * piscisaureus_ | quit (Quit: ~ Trillian Astra - www.trillian.im ~) |
17:47:14
| <sblom> | indutny: it's possible that's because of the initialization race that isaacs's reference indicates, but it felt slightly different from that to me. |
17:47:35
| <sblom> | But I admit I'm a long way from having a good handle on debugging inside JITted v8 code. |
17:47:56
| <sblom> | So it's possible v8 just confused me. |
17:48:22
| <indutny> | kewl |
17:48:29
| <indutny> | I'm having a dinner atm |
17:48:36
| <indutny> | will look into it 10-20 minutes |
17:48:37
| <indutny> | later |
17:48:41
| <indutny> | sblom: thank you for sharing |
17:48:45
| * piscisaureus_ | joined |
17:53:55
| * mikeal | joined |
17:57:35
| * mikeal | quit (Client Quit) |
17:58:48
| * joshthecoder | joined |
18:01:49
| * `3E|FOOD|LOLZ | changed nick to `3rdEden |
18:14:47
| * mikeal | joined |
18:15:43
| * tomshreds | joined |
18:21:12
| * loladiro | joined |
18:26:01
| * bradleymeck | joined |
18:31:06
| <indutny> | bnoordhuis: so about select() in osx |
18:31:08
| <indutny> | bnoordhuis: yt |
18:54:26
| * AvianFlu | quit (Remote host closed the connection) |
18:57:33
| * hz | quit (Ping timeout: 272 seconds) |
18:59:21
| * hz | joined |
19:00:01
| * loladiro | quit (Quit: loladiro) |
19:00:13
| * hz | quit (Read error: No route to host) |
19:00:47
| * hz | joined |
19:03:45
| * slurp-transition | quit (Remote host closed the connection) |
19:05:46
| * hz | quit (Ping timeout: 272 seconds) |
19:05:56
| * loladiro | joined |
19:06:36
| * hz | joined |
19:08:16
| * loladiro | quit (Client Quit) |
19:09:08
| <bnoordhuis> | indutny: ih |
19:09:30
| * brson | joined |
19:10:22
| <indutny> | bnoordhuis: ok |
19:10:33
| <indutny> | bnoordhuis: we still need it |
19:10:43
| <bnoordhuis> | indutny: who is 'we'? |
19:10:52
| <indutny> | bnoordhuis: osx people |
19:11:06
| <indutny> | bnoordhuis: opening "/dev/tty" brokes everything |
19:11:18
| <bnoordhuis> | yes, i know |
19:12:06
| * hz | quit (Ping timeout: 272 seconds) |
19:12:56
| * hz | joined |
19:14:33
| <bnoordhuis> | indutny: okay, so let's hear your proposal :) |
19:14:33
| * hz | quit (Read error: Connection reset by peer) |
19:14:41
| <indutny> | bnoordhuis: so, I've two idea |
19:14:43
| <indutny> | ideas* |
19:15:06
| <indutny> | 1) Creating extra fd and feeding it to select() call |
19:15:11
| * hz | joined |
19:15:21
| <indutny> | writing to it every time readable/writable state should be changed |
19:15:33
| <bnoordhuis> | indutny: you mean an event fd kind of fd? |
19:15:34
| <bnoordhuis> | right |
19:15:37
| * mmalecki[food] | changed nick to mmalecki |
19:16:00
| <indutny> | 2) Assume that state can't be changed after select() thread was started |
19:16:12
| <indutny> | i.e. start is as late as possible |
19:16:14
| <indutny> | or |
19:16:29
| <indutny> | 3) start thread only when reading/writing notifications requested |
19:16:32
| <indutny> | yeah, 3 ides |
19:16:34
| <indutny> | ideas* |
19:16:37
| * mikeal | quit (Quit: Leaving.) |
19:16:40
| * hz | quit (Read error: Connection reset by peer) |
19:16:54
| <bnoordhuis> | the first sounds reasonable, the other two not so much |
19:17:02
| <indutny> | ok |
19:17:17
| <indutny> | btw, do you think 300 bytes per instruction is too much? :) |
19:17:27
| <bnoordhuis> | 300 bytes per instruction of what? |
19:17:28
| <indutny> | offtopic |
19:17:30
| <indutny> | candor |
19:17:41
| <bnoordhuis> | define 'instruction'? |
19:17:47
| <bnoordhuis> | you mean assembly opcode? |
19:17:53
| <indutny> | yes |
19:18:03
| <bnoordhuis> | hmm, some would say it's a little excessive :) |
19:18:06
| <indutny> | I think it's bad for cache |
19:18:12
| <indutny> | yeah, indeed |
19:20:16
| * mikeal | joined |
19:20:54
| * AvianFlu | joined |
19:21:10
| * mikeal | quit (Client Quit) |
19:26:19
| <bnoordhuis> | a curious thing... if you run test/test-async under valgrind, it always times out, no matter how big the timeout is |
19:27:07
| * lohkey | joined |
19:32:03
| <indutny> | bnoordhuis: interesting |
19:32:17
| <indutny> | bnoordhuis: I suppose valgrind bug? |
19:32:30
| <bnoordhuis> | indutny: or a very subtle race in the test |
19:32:39
| <indutny> | run it with drd |
19:32:52
| <bnoordhuis> | it's a multi-threaded test and valgrind doesn't really do threads, it just simulates them |
19:32:59
| <indutny> | ah |
19:33:01
| <indutny> | hm.. |
19:33:07
| <indutny> | run drd on one core VM |
19:33:10
| <indutny> | :) |
19:47:24
| * tommybergeron | joined |
19:47:24
| * tommybergeron | quit (Client Quit) |
19:49:49
| * tomshreds | quit (Ping timeout: 244 seconds) |
19:50:13
| * bradleymeck | quit (Quit: bradleymeck) |
19:50:58
| * EhevuTov | joined |
19:51:20
| * mikeal | joined |
19:54:54
| * bradleymeck | joined |
19:55:33
| * TooTallNate | quit (Quit: Computer has gone to sleep.) |
19:55:41
| * EhevuTov_ | joined |
19:56:18
| * TooTallNate | joined |
19:57:18
| * sgallagh | quit (Remote host closed the connection) |
19:58:54
| * EhevuTov | quit (Ping timeout: 264 seconds) |
20:01:29
| <TooTallNate> | piscisaureus_: so i'm not sure what 1. means http://codereview.chromium.org/11361103/ |
20:01:34
| * mikeal | quit (Ping timeout: 246 seconds) |
20:02:14
| * sergim | joined |
20:02:16
| <piscisaureus_> | TooTallNate: neither do I :-) |
20:02:28
| <piscisaureus_> | maybe this guy is not aware that you are not a googler |
20:02:42
| <piscisaureus_> | I would suggest that you just ask what he means :-) |
20:02:50
| <TooTallNate> | ok thanks |
20:02:51
| <indutny> | TooTallNate: ask for secrets |
20:02:59
| <indutny> | TooTallNate: ask for ssh keys |
20:03:13
| <indutny> | TooTallNate: say you need a ssh key to look into gyp commit queue |
20:03:15
| <piscisaureus_> | Haha |
20:03:17
| <piscisaureus_> | You know google |
20:03:20
| <piscisaureus_> | They don't use SSH |
20:03:26
| <piscisaureus_> | they have something in-house :-) |
20:03:39
| <indutny> | I'm pretty sure they have certificates for VPN |
20:04:54
| * txdv | quit (Read error: Connection reset by peer) |
20:05:11
| * txdv | joined |
20:11:59
| * `3rdEden | quit (Quit: switching to laptop) |
20:12:17
| * stagas | joined |
20:12:22
| * paddybyers | quit (Ping timeout: 255 seconds) |
20:12:27
| * CoverSlide | changed nick to CoverSlide|TPFR |
20:13:36
| * hz | joined |
20:14:23
| * mikeal | joined |
20:14:45
| * EhevuTov_ | changed nick to EhevuTov |
20:15:08
| * EhevuTov | quit (Quit: Leaving) |
20:15:39
| * hz | quit (Client Quit) |
20:18:18
| * `3rdEden | joined |
20:21:47
| <bnoordhuis> | indutny, piscisaureus_: https://github.com/bnoordhuis/libuv/commit/372aee2 <- review? |
20:22:25
| <piscisaureus_> | bnoordhuis: how is there a deadlock? |
20:22:39
| <bnoordhuis> | i was afraid you were going to ask that |
20:22:54
| <piscisaureus_> | yes, because if there is, I added it :-) |
20:22:58
| <piscisaureus_> | bnoordhuis: so explain ? |
20:23:00
| <bnoordhuis> | maybe livelock is a better word |
20:23:23
| <bnoordhuis> | wait, i'll try to get a trace out of valgrind, that'll help explaining |
20:23:46
| <bnoordhuis> | btw, sneakily enough it doesn't *always* happen, just often |
20:24:18
| <bnoordhuis> | ah, stracing valgrind kills it. nice |
20:24:51
| <indutny> | :) |
20:24:56
| <piscisaureus_> | why does make nowadays no longer work :-( |
20:25:03
| <piscisaureus_> | test/run-tests: error while loading shared libraries: libuv.so: cannot open shared object file: No such file or directory |
20:25:13
| <indutny> | I know what's happening |
20:25:20
| <indutny> | it checks variable after uv_async cb |
20:25:24
| <indutny> | and it contains old value |
20:25:31
| <piscisaureus_> | yes, so |
20:25:31
| <indutny> | because there're no memory barriers |
20:25:33
| <piscisaureus_> | it does it again |
20:25:34
| <indutny> | and it loops |
20:25:36
| <indutny> | bnoordhuis: right? |
20:25:39
| <txdv> | hi |
20:25:51
| <bnoordhuis> | piscisaureus_: oh, i broke that :) |
20:25:57
| <piscisaureus_> | yes |
20:25:59
| <bnoordhuis> | is that on windows? |
20:26:05
| <piscisaureus_> | how do I buuld the test runner with gyp? |
20:26:08
| <piscisaureus_> | no linux |
20:26:16
| <bnoordhuis> | it builds it automatically |
20:26:21
| <piscisaureus_> | bnoordhuis: .so file on linux ? |
20:26:21
| <bnoordhuis> | it's in out/Debug/run-tests |
20:26:22
| * stagas | quit (Ping timeout: 256 seconds) |
20:26:27
| <txdv> | is async_t thread safe? |
20:26:36
| <bnoordhuis> | txdv: in what context? |
20:26:36
| <indutny> | by what means? |
20:27:02
| <piscisaureus_> | bnoordhuis: what commands do you use to build run-tests? I can't seem to do it (master) |
20:27:05
| <txdv> | like I call async_t for loop 1 from other loops in their own threads |
20:27:10
| <bnoordhuis> | indutny: re no memory barriers, that's not it |
20:27:17
| <indutny> | bnoordhuis: ah, ok |
20:27:36
| <bnoordhuis> | piscisaureus_: just `./gyp_uv -f ninja && ninja -C out/Debug && out/Debug/run-tests |
20:27:46
| <txdv> | all simultaneously |
20:27:56
| <piscisaureus_> | bnoordhuis: the other ways of building are all broken apparently |
20:28:11
| <bnoordhuis> | really? let me try a make build |
20:28:46
| <piscisaureus_> | bnoordhuis: ah the gyp make works anyway |
20:28:50
| <bnoordhuis> | piscisaureus_: `./gyp_uv && make -j 8 -C out BUILDTYPE=Debug` wfm |
20:28:55
| <piscisaureus_> | bnoordhuis: but the non-gyp make is still broken |
20:29:21
| <bnoordhuis> | you mean `make test`? it sets LD_LIBRARY_PATH and, well, wfm :) |
20:29:40
| <piscisaureus_> | bnoordhuis: no I just do make && test/run-tests |
20:29:52
| <piscisaureus_> | bnoordhuis: but - wut, are we using dynamic linking now? |
20:30:11
| * bradleymeck | quit (Ping timeout: 255 seconds) |
20:30:12
| <bnoordhuis> | piscisaureus_: did that ever work right? the all target doesn't rebuild run-tests |
20:30:22
| <piscisaureus_> | bnoordhuis: make test does |
20:30:25
| <piscisaureus_> | er |
20:30:30
| <piscisaureus_> | make test/run-tests |
20:30:45
| <bnoordhuis> | piscisaureus_: oh, you typed make *&&* test/run-tests |
20:30:58
| <piscisaureus_> | bnoordhuis: btw - ran the async test with valgrind 8 times now |
20:31:02
| <bnoordhuis> | which would rebuild libuv.a but not test/run-tests |
20:31:02
| <piscisaureus_> | no deadlick |
20:31:05
| <piscisaureus_> | *deadlock |
20:31:08
| <bnoordhuis> | no? 32 bits? |
20:31:12
| <piscisaureus_> | 64 |
20:31:15
| <piscisaureus_> | debug build |
20:31:18
| <bnoordhuis> | hah, really? |
20:31:26
| <bnoordhuis> | awesomely finicky bug, this one |
20:31:49
| <piscisaureus_> | bnoordhuis: also, I don't really see how the old code has a livelock honestly |
20:31:56
| <piscisaureus_> | bnoordhuis: so you should explain :-) |
20:32:36
| <bnoordhuis> | hm, it may be an artefact of how valgrind emulates threads |
20:33:40
| <bnoordhuis> | to show i'm making this up: |
20:33:41
| <bnoordhuis> | $ time valgrind -q out/Debug/run-tests async async |
20:33:41
| <bnoordhuis> | ^CKilled |
20:33:41
| <bnoordhuis> | real 0m20.842s |
20:33:41
| <bnoordhuis> | user 0m20.824s |
20:33:43
| <bnoordhuis> | sys 0m0.040s |
20:34:12
| <bnoordhuis> | i.e. it was spinning for 20 secs before i interrupted it |
20:34:20
| <TooTallNate> | anyone wanna review? https://github.com/TooTallNate/node/commit/add%2Fos-endianness |
20:34:23
| <piscisaureus_> | bnoordhuis: can you get a per-thread breakdown? |
20:34:35
| <bnoordhuis> | piscisaureus_: breakdown of what? |
20:34:44
| <piscisaureus_> | bnoordhuis: I think it is running 1 thread only |
20:34:49
| <piscisaureus_> | otherwise it should really not happen |
20:34:53
| <bnoordhuis> | piscisaureus_: yeah, so that's what valgrind does |
20:35:06
| <piscisaureus_> | crappy :-) |
20:35:08
| <bnoordhuis> | it doesn't actually run multiple threads, it switches between them |
20:35:18
| <piscisaureus_> | bnoordhuis: so apparently it never actually switches |
20:36:03
| <piscisaureus_> | bnoordhuis: what if you add printf("%d\n", n) to both thread_cb and async_cb ? |
20:36:08
| <piscisaureus_> | bnoordhuis: do you actually see it increase? |
20:36:39
| <bnoordhuis> | piscisaureus_: that's the fun bit, if you add printf statements, the test passes |
20:36:49
| <piscisaureus_> | I think it's a valgrind bug |
20:36:55
| <piscisaureus_> | this should really work |
20:37:05
| <piscisaureus_> | maybe it's not taking the "volatile" part seriously |
20:38:21
| <piscisaureus_> | bnoordhuis: your patch lgtm btw |
20:38:29
| <piscisaureus_> | bnoordhuis: but it makes the test less interesting |
20:38:55
| <piscisaureus_> | bnoordhuis: because it always synchronizes between the thread and the async_cb we are much less likely to catch threadsafety issues |
20:41:35
| <bnoordhuis> | piscisaureus_: yeah, i guess so |
20:41:49
| <bnoordhuis> | piscisaureus_: so what happens is that valgrind never switches away from the worker thread |
20:42:06
| <piscisaureus_> | bnoordhuis: maybe add a pthread_yield() ? |
20:42:12
| <piscisaureus_> | do we have uv_yield? :-) |
20:42:23
| <piscisaureus_> | bnoordhuis: windows implementation would be Sleep(0) couldn't be easier |
20:42:46
| <piscisaureus_> | or RtlBackoff if you want to look interesting |
20:42:50
| <piscisaureus_> | (you don't) |
20:43:46
| <bnoordhuis> | piscisaureus_: yeah, a nanosleep({0,1}) fixes it |
20:43:58
| <bnoordhuis> | okay, valgrind bug it is then |
20:44:30
| * dap | quit (Quit: Leaving.) |
20:46:58
| * bradleymeck | joined |
20:47:12
| <bnoordhuis> | piscisaureus_: btw, `LD_LIBRARY_PATH=$PWD test/run-tests` lets you run the tests standalone now |
20:47:29
| <bnoordhuis> | i'll make it compile the binary with an -rpath |
20:47:46
| <piscisaureus_> | aha |
20:47:56
| * piscisaureus_ | stores that for later |
20:48:06
| <piscisaureus_> | bnoordhuis: it doesn't bother me too much - I can live with the gyp build |
20:48:27
| <piscisaureus_> | bnoordhuis: but for the best "beginner experience" I think the makefile build should work propertly |
20:48:29
| <piscisaureus_> | *properly |
20:51:48
| * TheJH | quit (Quit: goodbye) |
20:57:15
| * TheJH | joined |
20:57:15
| * TheJH | quit (Client Quit) |
20:57:26
| <piscisaureus_> | hmm |
20:57:33
| <piscisaureus_> | the debug build of node 0.8 is totally borked |
20:57:35
| <piscisaureus_> | wtf happened |
20:58:44
| <piscisaureus_> | One can never leave node alone, or others will fuck it up to no end :-p |
20:59:10
| <tjfontaine> | how is it broken? |
21:01:07
| <piscisaureus_> | it segfaults on startup |
21:05:27
| <piscisaureus_> | I'm making a fresh checkout |
21:05:32
| <piscisaureus_> | there's something fishy here |
21:12:35
| * loladiro | joined |
21:17:52
| * mikeal | quit (Quit: Leaving.) |
21:29:59
| * TheJH | joined |
21:36:52
| * TheJH | quit (Read error: Connection reset by peer) |
21:48:02
| * mikeal | joined |
21:48:29
| * TooTallNate | quit (Quit: Computer has gone to sleep.) |
21:48:30
| * rendar | quit (Quit: w hz) |
21:51:47
| * bradleymeck | quit (Quit: bradleymeck) |
21:52:54
| * mikeal | quit (Ping timeout: 240 seconds) |
21:58:02
| <piscisaureus_> | Very weird |
21:58:29
| <piscisaureus_> | apparently the x64-debug version started crashing on windows as soon as we enabled openssl asm |
21:58:40
| <piscisaureus_> | but it crashes while running static initializers |
21:58:45
| <piscisaureus_> | which openssl doesn't even use ... |
21:59:38
| * perezd | quit (Quit: perezd) |
22:00:57
| * perezd | joined |
22:01:43
| * perezd | quit (Client Quit) |
22:03:24
| <piscisaureus_> | weird enough, the master branch - when all asm bells and whistles are used - does not have this issue |
22:05:14
| * sergim | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
22:14:31
| * mikeal | joined |
22:17:42
| * benoitc | quit (Excess Flood) |
22:22:21
| <piscisaureus_> | fuck openssl are you kidding me |
22:22:59
| * benoitc | joined |
22:23:16
| <piscisaureus_> | https://github.com/joyent/node/blob/v0.8/deps/openssl/asm/x64-win32-masm/x86_64cpuid.asm#L3 <-- DWORD, wut??? |
22:26:49
| <Raynos> | Would this be a bad place to ask mdb + v8.so (debugging core dumps) advice? |
22:33:21
| * paddybyers | joined |
22:35:33
| * TooTallNate | joined |
22:36:57
| * pquerna | quit (Ping timeout: 256 seconds) |
22:37:11
| * pquerna | joined |
22:37:11
| * pquerna | quit (Changing host) |
22:37:11
| * pquerna | joined |
22:44:23
| <MI6> | joyent/node: piscisaureus created branch winfix - http://git.io/0Y_b6w |
22:44:25
| <piscisaureus_> | ^-- bnoordhuis: review? |
22:44:29
| <piscisaureus_> | or sblom? |
22:47:48
| <TooTallNate> | piscisaureus_: do did you break it? :p |
22:47:53
| <TooTallNate> | s/do/so |
22:47:58
| <piscisaureus_> | TooTallNate: well.. in a way. |
22:48:06
| <piscisaureus_> | TooTallNate: I enabled compiled asm for openssl |
22:48:06
| <TooTallNate> | right, indirectly |
22:48:12
| <TooTallNate> | haha |
22:48:14
| <piscisaureus_> | TooTallNate: but this bug is just crazy :-) |
22:48:29
| <TooTallNate> | piscisaureus_: something we should report to the openssl guys? |
22:48:38
| <piscisaureus_> | possibly yeah |
22:49:26
| <piscisaureus_> | Tootallnate: well it seems to be fixed in openssl 1.1.x |
22:49:34
| <TooTallNate> | oh ok |
22:50:28
| <piscisaureus_> | TooTallNate: https://github.com/joyent/node/blob/master/deps/openssl/openssl/crypto/perlasm/x86_64-xlate.pl#L569 |
22:50:38
| <piscisaureus_> | so their fix is slightly more sophisticated than mine :-) |
22:51:13
| <piscisaureus_> | actually lemme just pick theirs |
22:51:52
| <TooTallNate> | sgtm |
22:52:52
| <piscisaureus_> | hmm but their fix is actually borked\ |
22:54:03
| <piscisaureus_> | oh nvm |
22:55:19
| <piscisaureus_> | ^-- TooTallNate: still ok? |
22:55:26
| <MI6> | joyent/node: Bert Belder winfix * 9b22944 : windows: fix the x64 debug build - http://git.io/Xv-K2A |
22:55:27
| <piscisaureus_> | ^-- TooTallNate: that, actually |
22:56:40
| <TooTallNate> | piscisaureus_: if it works |
23:02:13
| * bradleymeck | joined |
23:04:31
| <piscisaureus_> | I can confirm that |
23:04:35
| <MI6> | joyent/node: Bert Belder v0.8 * 9b22944 : windows: fix the x64 debug build - http://git.io/Y0LWnA |
23:04:49
| <piscisaureus_> | git checkout v0.8.13 |
23:04:56
| <piscisaureus_> | EWINDOW |
23:05:41
| <TooTallNate> | isaacs: lt? |
23:05:45
| <TooTallNate> | yt rather |
23:06:28
| <isaacs> | TooTallNate: ho |
23:06:42
| <TooTallNate> | isaacs: care to review? https://github.com/TooTallNate/node/commit/add%2Fos-endianness |
23:07:38
| <isaacs> | TooTallNate: lgtm |
23:07:50
| <TooTallNate> | isaacs: thanks! |
23:08:35
| <piscisaureus_> | nice TooTallNate |
23:08:55
| * dap | joined |
23:10:15
| <MI6> | joyent/node: Nathan Rajlich master * 5e4e87a : os: add os.endianness() function - http://git.io/B-BiYA |
23:12:58
| <piscisaureus_> | ^-- isaacs: review? |
23:13:02
| <piscisaureus_> | crap |
23:13:03
| <MI6> | joyent/node: piscisaureus created branch issue4256 - http://git.io/7o6N-A |
23:13:06
| <piscisaureus_> | isaacs: ^-- that |
23:13:42
| <isaacs> | piscisaureus_: lgtm |
23:13:45
| <isaacs> | piscisaureus_: but + test |
23:14:05
| <piscisaureus_> | isaacs: this was necessary because IsUndefined() returns false if domain is set to NULL :-) |
23:14:12
| <TooTallNate> | haha, good 'ol undefined vs. null |
23:14:14
| <txdv> | hei bnoordhuis how is rm-ev going on? |
23:14:37
| <isaacs> | piscisaureus_: also, needs to probably be checked in a few other places, too |
23:14:44
| * bradleymeck | quit (Quit: bradleymeck) |
23:14:46
| * benoitc | quit (Excess Flood) |
23:15:00
| <piscisaureus_> | isaacs: can you give me a global range where to look? |
23:15:01
| <isaacs> | piscisaureus_: events.js has if (this.domain) { |
23:15:16
| <piscisaureus_> | isaacs: well, in that case it would work :-) |
23:15:18
| <TooTallNate> | isaacs: that one's ok |
23:15:18
| <isaacs> | piscisaureus_: a bunch in src/node.js too |
23:15:33
| <isaacs> | piscisaureus_: oh, i see, the goal is not to allow blarg.domain=true to not crash |
23:15:37
| <isaacs> | it's to prevent null from crashing |
23:15:38
| <isaacs> | k |
23:15:39
| <piscisaureus_> | isaacs: well, sure |
23:15:51
| <piscisaureus_> | isaacs: well - maybe |
23:15:58
| <TooTallNate> | haha |
23:16:03
| <piscisaureus_> | isaacs: the problem is that node itself was setting domain = null |
23:16:07
| <isaacs> | i'm actually ok with any non-object truthy value crashing, now that i think about it |
23:16:08
| <piscisaureus_> | so that would make it crash |
23:16:11
| <isaacs> | right |
23:16:14
| <isaacs> | makes sense |
23:16:20
| * loladiro | quit (Quit: loladiro) |
23:16:20
| <piscisaureus_> | isaacs: see https://github.com/joyent/node/issues/4256#issuecomment-10206979 |
23:16:45
| <isaacs> | piscisaureus_: yes. |
23:16:58
| <isaacs> | +1 |
23:17:05
| <isaacs> | please land, i'll get a v0.8.15 out before i leave |
23:17:29
| * benoitc | joined |
23:17:29
| <isaacs> | wanna get andres's domains thing in there, too. i have a fix for the problem with it |
23:19:36
| <TooTallNate> | piscisaureus_: well tnorris in #node.js just confirmed it works |
23:21:51
| * CAPSLOCKBOT | quit (Ping timeout: 268 seconds) |
23:25:14
| * paddybyers | quit (Ping timeout: 240 seconds) |
23:29:02
| * EhevuTov | joined |
23:32:38
| * loladiro | joined |
23:32:38
| * loladiro | quit (Client Quit) |
23:33:15
| * erickt | joined |
23:33:22
| * loladiro | joined |
23:34:19
| * loladiro | quit (Client Quit) |
23:36:06
| * paddybyers | joined |
23:38:00
| <piscisaureus_> | isaacs: actually, the problem seems to be fixed already in the latest node version]\ |
23:38:06
| <piscisaureus_> | er, in 0.8 |
23:38:28
| <piscisaureus_> | ah hehe nvm |
23:43:24
| <piscisaureus_> | ^-- isaacs, TooTallNate: good to land? |
23:43:29
| <MI6> | joyent/node: Bert Belder issue4256 * 32df4e6 : domains: don't crash if domain is set to null - http://git.io/c4gaVA |
23:43:39
| <piscisaureus_> | ^-- that again :-) |
23:43:42
| <piscisaureus_> | I am too fast for MI6 |
23:44:05
| <TooTallNate> | haha |
23:44:29
| <TooTallNate> | piscisaureus_: lgtm |
23:45:18
| * loladiro | joined |
23:49:34
| * c4milo | quit (Remote host closed the connection) |
23:49:46
| <MI6> | joyent/node: Bert Belder v0.8 * b3bfb6f : domains: don't crash if domain is set to null Closes #4256 - http://git.io/nHwbjA |
23:56:00
| * loladiro | quit (Quit: loladiro) |
23:58:30
| <bnoordhuis> | txdv: it's nearing completion |
23:58:55
| <bnoordhuis> | that is, the first 90% is done |
23:59:21
| <txdv> | 90% of work, now comes the 90% of time? |
23:59:21
| <txdv> | ' |