00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:12  * ircretaryjoined
00:04:20  <trevnorris>tjfontaine: this mean anything bad:
00:04:21  <trevnorris>warning: can't find linker symbol for virtual table for `node::StreamWrapCallbacks' value
00:04:27  <trevnorris>warning: found `v8::internal::HandleScope::~HandleScope()' instead
00:08:04  * janjongboomjoined
00:11:23  * kevinsimperquit (Remote host closed the connection)
00:12:29  * janjongboomquit (Ping timeout: 246 seconds)
00:16:37  * kpdeckerquit (Quit: Leaving.)
00:21:08  * txdvquit (Remote host closed the connection)
00:23:14  * txdvjoined
00:25:22  * rmgquit (Remote host closed the connection)
00:28:59  * daviddiasjoined
00:32:12  * c4miloquit (Remote host closed the connection)
00:42:02  * thlorenzjoined
00:45:01  * jmar777quit (Remote host closed the connection)
00:51:17  * prettymuchbrycequit (Ping timeout: 255 seconds)
00:57:27  * mikealquit (Quit: Leaving.)
00:59:29  * dap_quit (Quit: Leaving.)
01:12:03  * seldoquit (Remote host closed the connection)
01:12:59  * kpdeckerjoined
01:16:14  * eugenewarejoined
01:18:28  <othiym23>eugeneware: you're a crazy man
01:18:38  <othiym23>how much is planeternet on an international flight, anyway?
01:19:11  <eugeneware>othiym23: not on a flight yet, but shortly. Flight was delayed :-(
01:19:39  <eugeneware>but it is available on the flight across the pacific, but not sure I'm rich enough to pay for those prices.
01:19:41  <othiym23>ah, too bad
01:20:09  <othiym23>groundwater was just rhapsodizing about how amazing transpacific wifi would be
01:20:09  <eugeneware>Which is also the main reason that I probably will never take a cruise, everything's free except internetz! sad panda
01:20:49  <eugeneware>well it was available on my flight here. I just take a copy of npm on a 128GB USB stick :-)
01:21:43  <othiym23>I'm surprised it fits on something that small
01:25:23  <eugeneware>just... though I think it's just about to outgrow it... and I can't find any USB sticks that go to 256GB.
01:26:04  * rmgjoined
01:30:49  * rmgquit (Ping timeout: 240 seconds)
01:34:24  * daviddiasquit (Remote host closed the connection)
01:35:00  * daviddiasjoined
01:39:31  * daviddiasquit (Ping timeout: 264 seconds)
01:41:14  * cphooverjoined
01:50:03  * mikealjoined
01:50:59  * seldojoined
01:54:22  * eugenewarequit (Read error: No route to host)
01:55:38  * seldoquit (Ping timeout: 255 seconds)
01:57:00  * eugenewarejoined
02:03:09  * mikealquit (Quit: Leaving.)
02:07:57  * kpdeckerquit (Quit: Leaving.)
02:12:26  * kevinsimperjoined
02:12:51  * mikealjoined
02:15:16  * kpdeckerjoined
02:15:38  <eugeneware>ok. really boarding now. l8rz!
02:16:27  * eugenewarequit (Remote host closed the connection)
02:16:47  * kevinsimperquit (Ping timeout: 252 seconds)
02:21:48  * calvinfojoined
02:31:46  * hzquit
03:02:13  * brsonquit (Quit: leaving)
03:04:25  * calvinfoquit (Quit: Leaving.)
03:13:39  * euoiajoined
03:13:48  * kpdeckerquit (Quit: Leaving.)
03:14:01  * kpdeckerjoined
03:29:39  * thlorenzquit (Remote host closed the connection)
03:35:26  * euoiaquit (Ping timeout: 252 seconds)
03:43:52  * cphooverquit (Quit: Leaving.)
03:57:37  * daviddiasjoined
03:58:59  * DrPizzaquit (Ping timeout: 599 seconds)
03:59:00  * DrPizza_joined
04:11:09  * rmgjoined
04:31:11  * indexzerojoined
05:20:54  * wolfeidauquit (Read error: Connection reset by peer)
05:21:13  * wolfeidaujoined
05:24:15  * wolfeida_joined
05:26:18  * wolfeid__joined
05:26:25  * wolfeidauquit (Ping timeout: 240 seconds)
05:27:48  * wolfeid__quit (Read error: Connection reset by peer)
05:27:53  * wolfeidaujoined
05:28:51  * wolfeida_quit (Read error: Connection reset by peer)
05:28:52  * kpdeckerquit (Read error: Connection reset by peer)
05:33:15  * kpdeckerjoined
05:47:07  * mikealquit (Quit: Leaving.)
05:49:27  * mikealjoined
06:14:01  * kevinsimperjoined
06:18:54  * kevinsimperquit (Ping timeout: 255 seconds)
06:21:41  * Raynos_changed nick to Raynos
06:22:26  * daviddiasquit (Remote host closed the connection)
06:23:02  * daviddiasjoined
06:27:35  * daviddiasquit (Ping timeout: 252 seconds)
06:29:53  * kpdeckerquit (Quit: Leaving.)
07:08:57  * bajtosjoined
07:12:14  * m76joined
07:22:09  * kevinsimperjoined
07:26:59  * kevinsimperquit (Ping timeout: 252 seconds)
07:32:17  * mitsuhikojoined
07:42:36  * petka_joined
07:45:49  * rendarjoined
08:11:21  <MI6>joyent/libuv: saghul created branch multicast-interface-v6 - http://git.io/DhXjeg
08:12:00  * kevinsimperjoined
08:12:56  <saghul>stupid jenkins...
08:30:15  <MI6>joyent/libuv: Saúl Ibarra Corretgé master * 0ee3ce9 : osx: fix compilation warning - http://git.io/lpK3Kw
08:38:13  <indutny>heya
08:38:14  <indutny>how are you?
08:39:27  * kevinsimperquit
08:41:10  <saghul>hey there!
08:41:21  <saghul>good, you?
09:01:03  <indutny>good too
09:20:22  * calvinfojoined
09:24:47  * calvinfoquit (Ping timeout: 246 seconds)
09:32:32  * janjongboomjoined
09:36:39  * rmgquit (Remote host closed the connection)
09:56:38  * seldojoined
10:01:43  * seldoquit (Ping timeout: 264 seconds)
10:02:32  * sinclair|workquit (Quit: ChatZilla 0.9.90.1 [Firefox 27.0.1/20140212131424])
10:07:20  * rmgjoined
10:12:22  * rmgquit (Ping timeout: 246 seconds)
10:23:09  * bajtosquit (Quit: bajtos)
10:31:26  * cphooverjoined
10:45:24  * AlexisMochajoined
10:49:03  * cphooverquit (Quit: Leaving.)
11:01:27  * AlexisMochaquit (Read error: Connection reset by peer)
11:23:52  * hzjoined
11:25:07  * indexzeroquit (Quit: indexzero)
11:45:26  * euoiajoined
12:12:21  * cphooverjoined
12:13:12  * cphooverpart
12:20:01  * m76quit (Read error: Connection reset by peer)
12:20:10  * thlorenzjoined
12:29:19  * calvinfojoined
12:39:19  * calvinfoquit (Quit: Leaving.)
12:46:40  * ChristopherCjoined
12:58:57  * seldojoined
12:59:59  * euoiaquit (Ping timeout: 240 seconds)
13:03:37  * seldoquit (Ping timeout: 240 seconds)
13:11:07  * cphooverjoined
13:14:16  * AlexisMochajoined
13:22:00  * paulfryzeljoined
13:29:53  * jmar777joined
13:34:16  * rmgjoined
13:34:27  * jmar777quit (Remote host closed the connection)
13:38:55  * rmgquit (Ping timeout: 264 seconds)
13:39:24  * thlorenzquit (Remote host closed the connection)
13:56:31  * jmar777joined
14:19:14  * bajtosjoined
14:24:57  * m76joined
14:42:45  * ChristopherCquit (Quit: Leaving)
14:43:50  * kenperkinsjoined
14:46:31  * daviddiasjoined
15:03:53  * daviddiasquit (Remote host closed the connection)
15:04:26  * daviddiasjoined
15:08:28  * daviddiasquit (Ping timeout: 246 seconds)
15:14:35  * mikealquit (Quit: Leaving.)
15:15:21  * daviddiasjoined
15:22:30  * calvinfojoined
15:23:49  * daviddiasquit (Remote host closed the connection)
15:24:22  * daviddiasjoined
15:24:57  * benviequit (Read error: Connection reset by peer)
15:25:03  * calvinfoquit (Client Quit)
15:28:24  * mikealjoined
15:28:25  * daviddiasquit (Ping timeout: 246 seconds)
15:28:57  * benviejoined
15:32:52  * thlorenzjoined
15:46:13  * daviddiasjoined
15:49:14  * kpdeckerjoined
15:53:20  * daviddiasquit (Remote host closed the connection)
15:53:47  * daviddiasjoined
15:54:52  * kpdeckerquit (Quit: Leaving.)
16:01:19  * seldojoined
16:05:52  * seldoquit (Ping timeout: 246 seconds)
16:12:45  * bajtosquit (Quit: bajtos)
16:13:26  * mikealquit (Quit: Leaving.)
16:15:10  <isaacs>indutny: tjfontaine: Hey, kind of a weird thing happening. it looks like a user is getting an incorrect shasum from node 0.11
16:15:19  <isaacs>https://github.com/appium/appium/issues/2090
16:16:16  <isaacs>the correct shasum (3ec0...d63) is what my command line `shasum` reports, as well as node 0.10
16:16:53  <isaacs>but when he published with node 0.11, it created a different shasum. not sure what version exactly that he's using, or how that could happen, but it seems like something to get to the bottom of before shipping 0.12
16:17:32  <MI6>joyent/node: isaacs created branch npm-1.4.5 - http://git.io/agNoVA
16:17:42  * dap_joined
16:17:57  <isaacs>oh, wait, i wanna push 1.4.6 first. (minor bugfix, don't land ^ that)
16:27:05  <isaacs>there we go
16:27:05  <MI6>joyent/node: isaacs created branch npm-1.4.6 - http://git.io/DH86SQ
16:27:14  <isaacs>tjfontaine: ^ lgtm?
16:35:17  * benvie_joined
16:37:43  * benviequit (Ping timeout: 264 seconds)
16:39:40  * thlorenzquit (Remote host closed the connection)
16:41:43  * calvinfojoined
16:47:38  * indexzerojoined
16:52:13  * brsonjoined
16:54:48  <indutny>isaacs: looking
16:56:24  <indutny>isaacs: I'm getting the same hash
16:56:32  <indutny>just downloaded the file
16:56:38  <indutny>and tried it with node v0.10.26
16:56:38  <indutny>and
16:56:43  <indutny>0.11.13-pre
16:58:33  <indutny>do you have a reduced test case that will reproduce it?
16:58:37  <indutny>could it be a partial download
16:58:39  <indutny>or a tls problem?
16:59:09  <indutny>I remember that there was one with v0.10
16:59:14  <indutny>with similar error
17:00:24  <indutny>brb
17:00:33  <isaacs>indutny: well, it's probably not a partial download
17:00:40  <isaacs>indutny: i get the same hash with 0.10 and 0.11
17:00:52  <isaacs>indutny: but the guy who published it, got a DIFFERENT hash when he generated the file
17:00:56  <isaacs>soooo spooooooky
17:01:06  <isaacs>can't reproduce. probably can just ignore for now.
17:05:31  * bradleymeckjoined
17:07:05  <indutny>haha
17:07:14  <indutny>isaacs: I seen this previously with npm
17:07:23  <indutny>that's why I was talking about incomplete downloads
17:07:31  <indutny>it was basically downloading some garbage
17:07:38  * mikealjoined
17:07:55  <indutny>so some pieces were incorrect and shorter
17:07:55  <indutny>anyway
17:07:59  <indutny>yeah, let's ignore it
17:08:00  <indutny>:D
17:10:17  * thlorenzjoined
17:10:26  * bajtosjoined
17:12:07  * thlorenz_joined
17:12:11  * thlorenzquit (Read error: Connection reset by peer)
17:13:43  * m76quit (Ping timeout: 264 seconds)
17:14:03  <isaacs>it could be that the file read stream didn't read the file all the way when he was generating the tgz
17:14:08  <isaacs>er, generating the shasum from the tgz
17:14:19  <isaacs>but i don't want to go through every byte from the end and see if i ever get that shasum
17:16:57  * kenperkinsquit (Remote host closed the connection)
17:17:37  * kenperkinsjoined
17:21:35  * AlexisMochaquit (Ping timeout: 261 seconds)
17:21:56  * AlexisMochajoined
17:32:58  * mikealquit (Quit: Leaving.)
17:36:03  <indutny>haha
17:36:33  <indutny>tjfontaine: you around?
17:39:25  * calvinfoquit (Quit: Leaving.)
17:47:18  <trevnorris>indutny: hey dude, i'm going to need help on some super strange c++ whatnot, have a moment?
17:47:25  <indutny>sure
17:47:35  <indutny>I'm terribly procrastinating anyway :P
17:47:36  <indutny>shoot
17:48:11  <trevnorris>i'm getting a segfault, and when I trace the function call w/ gdb the memory address assigned to the variable changes when an operation occurs
17:48:41  <trevnorris>like this:
17:48:43  <trevnorris>(gdb) p wrap
17:48:43  <trevnorris>$1 = (node::AsyncWrap *) 0x7fffffff9cc0
17:48:51  <trevnorris>do some operation
17:48:54  <trevnorris>(gdb) p wrap
17:48:54  <trevnorris>$3 = (node::AsyncWrap *) 0x1879e70
17:49:02  <indutny>define "some operation"
17:49:12  <indutny>also at what line of code?
17:49:22  * rmgjoined
17:49:29  <trevnorris>wrap->async_flags_ = 0
17:49:47  <indutny>interesting
17:49:51  <indutny>is first address valid?
17:49:56  <indutny>seems to be a on-stack thing
17:50:13  <indutny>also, have you tried debugging it with lldb, does the same thing happen?
17:50:19  <trevnorris>yes. if I change the value at that address using gdb then it doesn't segfault
17:50:50  <indutny>well
17:51:00  <indutny>so
17:51:04  <indutny>where is that handle allocated?
17:51:12  <indutny>where did it get 0x7fffffff9cc0 address?
17:52:05  <trevnorris>it's using Wrap<TCPWrap>(wrap) when the class is instantiated. so it's pushing a void* to the object that's retrieved later
17:52:05  <trevnorris>then this uses Unwrap<AsyncWrap>(wrap) to get the address of a parent class
17:52:16  <trevnorris>here's the code: https://github.com/trevnorris/node/blob/al-pass-provider/src/async-wrap-inl.h#L279-L283
17:52:28  <indutny>so 0x7fffffff9cc0 is a result of Unwrap<> ?
17:52:33  <trevnorris>yes.
17:52:38  <indutny>I bet you should dig there :)
17:52:42  <indutny>it seems to be incorrect
17:52:48  <trevnorris>but when I do an operation on the address, the address changes
17:53:07  <indutny>no surprise
17:53:16  <indutny>you seem to be touching some stuff on-stack
17:53:31  <indutny>who knows, what happens next
17:53:38  <trevnorris>but, if I do (gdb) set ((AsyncWrap *) 0x7fffffff9cc0)->async_flags_ = 0
17:53:43  <indutny>ok
17:53:44  <trevnorris>the program doesn't segfault
17:54:17  <trevnorris>oh, also, when I print out *(TCPWrap *)wrap it gives me:
17:54:18  <trevnorris>default_callbacks_ = warning: can't find linker symbol for virtual table for `node::StreamWrapCallbacks' value
17:54:18  <trevnorris>warning: found `v8::internal::HandleScope::~HandleScope()' instead
17:54:40  <indutny>this isn't really bad
17:54:47  <trevnorris>ok, just wanted to make sure
17:54:48  <indutny>what if you'll add fprintf(stdout, "%p\n", wrap);
17:54:54  <indutny>right after Unwrap()
17:54:59  <indutny>and execute it without gdb?
17:55:01  <trevnorris>then the value of wrap changes
17:55:05  <indutny>on read?
17:55:08  <trevnorris>yeah
17:55:21  <indutny>can I try reproducing it?
17:55:48  <trevnorris>sure. just grab https://github.com/joyent/node/pull/7145
17:55:51  <trevnorris>i'll gist the test
17:56:00  <indutny>ok
17:56:10  <indutny>sorry, laptop's batter is running out of charge
17:56:12  <indutny>< 10 %
17:56:19  <indutny>will return to it in a couple of hours
17:56:22  <trevnorris>thanks
17:56:24  <indutny>if you won't resolve it yourself :)
17:56:26  <trevnorris>here's the gist https://gist.github.com/trevnorris/9647495
17:56:34  <trevnorris>heh, i've been working on this for a couple days
17:56:38  <trevnorris>don't think i'll be able to
18:00:52  * calvinfojoined
18:03:57  * mikealjoined
18:05:46  * m76joined
18:06:17  * Qardjoined
18:15:13  <bradleymeck>did anyone do work on https://github.com/joyent/node/issues/3818 yet?
18:24:14  * groundwaterquit (Quit: ZNC - http://znc.in)
18:26:05  * groundwaterjoined
18:31:22  * thlorenz_quit (Remote host closed the connection)
18:43:12  * stagasjoined
18:46:14  * janjongboomquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:51:12  * thlorenzjoined
19:06:11  * emeryquit (Quit: ZNC - http://znc.in)
19:07:24  * janjongboomjoined
19:07:40  * daviddiasquit (Remote host closed the connection)
19:08:07  * daviddiasjoined
19:09:14  * emeryjoined
19:10:06  * daviddia_joined
19:10:14  * daviddia_quit (Remote host closed the connection)
19:10:39  * daviddiasquit (Read error: Connection reset by peer)
19:10:41  * daviddia_joined
19:12:07  * indexzeroquit (Quit: indexzero)
19:14:52  * daviddia_quit (Ping timeout: 246 seconds)
19:24:18  * daviddiasjoined
19:24:26  * daviddiasquit (Remote host closed the connection)
19:24:54  * daviddiasjoined
19:26:32  * jmar777quit (Remote host closed the connection)
19:27:47  * daviddiasquit (Read error: Connection reset by peer)
19:28:01  * daviddiasjoined
19:28:10  * c4milojoined
19:33:41  * daviddiasquit (Remote host closed the connection)
19:34:07  * daviddiasjoined
19:34:19  * jmar777joined
19:36:18  * daviddia_joined
19:36:37  * daviddiasquit (Read error: Connection reset by peer)
19:42:42  <trevnorris>tjfontaine: ping
19:43:13  * bradleymeckquit (Ping timeout: 240 seconds)
19:44:35  * bradleymeckjoined
19:44:39  <indutny>ok, back
19:44:40  <indutny>bradleymeck: not that I aware of
19:44:45  <indutny>bradleymeck: better ask tjfontaine, though
19:44:50  <indutny>he holds the keys
19:44:52  <indutny>literally :D
19:44:58  * janjongboomquit (Ping timeout: 246 seconds)
19:46:37  <trevnorris>indutny: mind taking a quick look at this? https://gist.github.com/trevnorris/9649758
19:46:54  <indutny>ha
19:46:56  <indutny>the same?
19:47:15  <trevnorris>indutny: so, in Unwrap the void* pointer being returned in src is different than the pointer if I manually run object->GetAlignedPointerFromInternalField(0)
19:47:33  <trevnorris>and they resolve to different ContextifyScript instances, I guess
19:47:38  <trevnorris>i have no idea what is going on
19:48:35  <indutny>ok
19:48:45  <indutny>does those classes have virtual methods?
19:48:46  <trevnorris>yeah. so in source void* pointer = object->GetAlignedPointerFromInternalField(0); which returns (gdb) p pointer
19:48:46  <trevnorris>$18 = (void *) 0x7fffffffd0f0
19:48:54  * bradleymeckquit (Client Quit)
19:48:59  <indutny>ok, that explains it, I think...
19:49:16  * bradleymeckjoined
19:49:24  <indutny>trevnorris: I think it tries to resolve vtable
19:49:28  <indutny>but fails to do it...
19:49:31  <indutny>hm..
19:49:34  <trevnorris>but in gdb object->GetAlignedPointerFromInternalField(0) == 0x1656e90
19:49:34  * daviddia_quit (Remote host closed the connection)
19:49:56  <indutny>trevnorris: could you try stepping into Unwrap
19:50:01  * daviddiasjoined
19:50:01  <indutny>and entering "disasm"
19:50:10  <trevnorris>sure
19:50:32  * daviddiasquit (Read error: Connection reset by peer)
19:50:54  * daviddiasjoined
19:51:28  <trevnorris>indutny: updated w/ that: https://gist.github.com/trevnorris/9649758
19:51:35  * c4miloquit (Read error: Connection reset by peer)
19:51:47  <indutny>one sec
19:51:50  * c4milojoined
19:51:52  <indutny>is it a debug build?
19:51:57  * daviddiasquit (Remote host closed the connection)
19:52:00  <trevnorris>yeah
19:52:15  <indutny>ok, seems to be returning what GetAlignedPointerFromInternalField returns
19:52:22  <hueniverse>Is there a known way to check is a path is absolute in a platform agnostic way?
19:52:25  * daviddiasjoined
19:52:37  <hueniverse>testing for [0] === '/' breaks on windows
19:52:39  <indutny>trevnorris: could you disasm the parent method?
19:52:44  <indutny>trevnorris: f 1
19:52:46  <indutny>trevnorris: disasm
19:52:55  <trevnorris>sure
19:53:09  * stagas_joined
19:53:37  <indutny>btw
19:53:37  <indutny>#
19:53:38  <indutny># Fatal error in ../deps/v8/src/api.h, line 401
19:53:38  <indutny># CHECK(allow_empty_handle || that != __null) fa
19:53:41  <indutny>that's what I am getting
19:53:45  <indutny>with your branch
19:53:54  <indutny>is it what you get?
19:54:06  <trevnorris>nope. I'm just getting a segfault
19:54:20  <trevnorris>but I built with --gdb --without-snapshot --debug
19:54:24  <indutny>no
19:54:26  <indutny>that's not it
19:54:28  <indutny>(lldb) p env()->async_listener_unload_function()
19:54:28  <indutny>(v8::Local<v8::Function>) $1 = {
19:54:28  <indutny> v8::Handle<v8::Function> = {
19:54:28  <indutny> val_ = 0x0000000000000000
19:54:28  <indutny> }
19:54:29  <indutny>}
19:54:44  <indutny>somehow it isn't initialized
19:54:46  <trevnorris>yeah. I see that in gdb when I run it
19:55:34  <trevnorris>ok, I assume you're using that short test case in the gist? https://gist.github.com/trevnorris/9647495
19:56:06  <indutny>yes
19:56:10  * stagasquit (Ping timeout: 246 seconds)
19:56:18  * stagas_changed nick to stagas
19:56:26  <indutny>so
19:56:27  <indutny>about disasm
19:56:37  <indutny>oh
19:56:38  <indutny>I see it
19:56:51  <trevnorris>just updated the gist w/ the disasm
19:56:52  * daviddiasquit (Ping timeout: 246 seconds)
19:57:09  <indutny>0x0000000000dcfef3 <+163>: add $0x10,%rdi
19:57:12  <indutny>here the magic happens
19:57:52  <othiym23>hueniverse: a cheesy heuristic way of doing that is to call path.resolve on a path and see if it's the same / has the same prefix as the original path
19:57:59  <trevnorris>ok. magic?
19:58:03  <indutny>yes
19:58:07  * daviddiasjoined
19:58:15  <indutny>trevnorris: compiler decides to add $10 to pointer returned by Unwrap
19:58:32  <indutny>0x10
19:58:43  <indutny>ah
19:58:47  <indutny>perhaps it is a field
19:59:02  <indutny>yeah
19:59:05  <indutny>ctx->sandbox_
19:59:05  <indutny>ok
19:59:09  <indutny>so everything looks fine
19:59:13  <indutny>I guess the stack corruption happens
19:59:17  <indutny>do you have valgrind installed?
19:59:22  <trevnorris>yeah
19:59:28  <indutny>could you please run it through it?
19:59:32  <trevnorris>sure
20:01:26  * daviddiasquit (Remote host closed the connection)
20:01:52  * daviddiasjoined
20:02:11  <hueniverse>othiym23: sounds reasonable
20:03:39  <trevnorris>hueniverse: oh, can't make it tomorrow. have an interview to do.
20:03:46  * budrosejoined
20:03:53  <trevnorris>first one actually. strange they trust me to do it.. :P
20:04:08  <indutny>heh
20:04:52  <trevnorris>indutny: https://gist.github.com/trevnorris/9649758#file-valgrind-out
20:05:15  * daviddiasquit (Read error: Connection reset by peer)
20:05:53  * daviddiasjoined
20:06:05  <indutny>trevnorris: ok
20:06:08  <indutny>this isn't informative :)
20:06:12  <trevnorris>heh
20:06:14  <indutny>so
20:06:20  <indutny>let's try doing following thing
20:06:29  <hueniverse>trevnorris: np. lmk when you can
20:06:36  <trevnorris>will do. :)
20:06:39  * bajtosquit (Quit: bajtos)
20:06:54  * brsonquit (Write error: Broken pipe)
20:06:57  <indutny>trevnorris: could you reproduce it one some server?
20:07:02  <indutny>so I could tmux into it
20:07:04  <trevnorris>sure
20:07:09  * brsonjoined
20:07:17  <indutny>trevnorris: we have at least one ubuntu server if you need it
20:08:00  * m76quit (Excess Flood)
20:08:27  * m76joined
20:08:31  * AlexisMochaquit (Write error: Broken pipe)
20:08:53  * budrosepart
20:14:28  <bradleymeck>is there a proper way to fix "calling a private constructor of class 'v8::HandleScope'" in 0.11.x (master really)?
20:15:00  <bradleymeck>guess ill reread v8.h again
20:15:17  * janjongboomjoined
20:15:32  <indutny>bradleymeck: you need to pass isolate to it
20:16:27  <bradleymeck>indutny: getcurrent?
20:16:31  <bradleymeck>or a new one?
20:16:51  * jmar777quit (Read error: Connection reset by peer)
20:17:07  <indutny>bradleymeck: current should be fine, args.GetIsolate() too
20:17:18  * jmar777joined
20:17:19  <indutny>trevnorris
20:17:23  <indutny>going to drink some bear
20:17:26  <indutny>oops
20:17:27  <indutny>beer
20:17:35  <indutny>whatever
20:17:39  <trevnorris>or bear. i don't judge :)
20:17:43  <indutny>let me know if you'll have time for your thingy
20:17:49  <trevnorris>it's building now
20:18:06  * indexzerojoined
20:19:12  * calvinfoquit (Quit: Leaving.)
20:19:17  <bradleymeck>now to figure out arguments...
20:19:34  <indutny>to what?
20:20:15  <bradleymeck>complaining about v8::internal::Arguments now instead of old v8::Arguments
20:20:56  <bradleymeck>FunctionCallbackInfo now?
20:21:12  <trevnorris>yup
20:21:39  <indutny>bradleymeck: yeah, better take a look at doc/api/addons.markdown
20:24:24  * calvinfojoined
20:29:55  * WalrusPony1joined
20:30:07  <bradleymeck>indutny: fixed but "Symbol not found: _node_module_register"
20:30:47  <bradleymeck>can't find it in grep...
20:31:51  <bradleymeck>its in the binaries... but not in a .h or anything
20:32:25  <trevnorris>indutny: have it running one the smartos server. also segfaults.
20:32:51  <trevnorris>indutny: did you want it running on linux specifically?
20:32:59  * WalrusPonyquit (Ping timeout: 255 seconds)
20:33:44  <trevnorris>I don't have access to the ubuntu server
20:33:53  <trevnorris>tjfontaine: mind throwing my public key on the ubuntu server?
20:34:58  <bradleymeck>where does it get that '_' prefix O-o
20:36:04  * daviddiasquit (Ping timeout: 246 seconds)
20:44:31  * jmar777quit (Remote host closed the connection)
20:51:11  * daviddiasjoined
20:54:41  * daviddia_joined
20:57:06  * rmgquit (Remote host closed the connection)
20:57:13  * daviddiasquit (Ping timeout: 240 seconds)
21:01:59  * paulfryzelquit (Ping timeout: 240 seconds)
21:02:12  * paulfryzeljoined
21:02:31  * stagasquit (Read error: Connection reset by peer)
21:06:12  * c4miloquit (Remote host closed the connection)
21:07:51  * paulfryzelquit
21:08:53  * cphooverquit (Quit: Leaving.)
21:19:37  * bradleymeckquit (Ping timeout: 240 seconds)
21:19:37  <indutny>trevnorris: nope
21:21:16  * rmgjoined
21:21:38  * bradleymeckjoined
21:22:10  <trevnorris>indutny: ok. well, i'm in tmux and running the thing now.
21:22:35  <indutny>what server? :)
21:22:53  <trevnorris>smartos.nodejs.org
21:25:19  * EhevuTovjoined
21:26:35  * daviddiasjoined
21:29:27  * daviddia_quit (Ping timeout: 265 seconds)
21:29:55  <trevnorris>indutny: here, you'll see that the the void* returned to gdb is different than the pointer returned to void* pointer. and if you compare against the address for the env_ variable. the one from the pointer variable is incorrect
21:32:01  <trevnorris>indutny: here, I've output the disasm from Unwrap and from AsyncWrap::RemoveAsyncQueue, and some other output: https://gist.github.com/trevnorris/9651777
21:37:43  <trevnorris>indutny: what I really don't get is that if I remove from source and manually wrap->async_flags_ = 0; then the application will finish normally.
21:40:51  * rendarquit
21:43:00  <trevnorris>indutny: now, I did put in a crazy ass hack in tcp_wrap.cc (search for "parent_context" variable) but the execution is synchronous so figured it would be fine.
21:50:10  * seldojoined
21:50:35  * EhevuTovquit (Quit: This computer has gone to sleep)
21:51:54  * EhevuTovjoined
21:51:54  <indutny>trevnorris: back
21:52:17  <indutny>trevnorris: is tmux session still alive?
21:52:39  <trevnorris>yeah, under my user (trevnorris) so just su in and tmux a
21:52:43  <indutny>ok
21:52:48  <trevnorris>though, I have a freaky customized tmux config
21:52:51  <trevnorris>sorry about that :P
21:54:08  <indutny>np
21:54:25  * seldoquit (Ping timeout: 240 seconds)
21:56:44  * rmgquit (Remote host closed the connection)
21:57:36  <indutny>heh
21:57:38  <indutny>seems to be hanging
21:58:08  <trevnorris>i jumped in real quick to see what you were doing. hopefully that didn't screw anything up.
21:58:18  <trevnorris>saw you were just watching the memory address?
21:58:37  <indutny>trevnorris: yeah, I tried to
21:58:39  <indutny>trevnorris: so
21:58:42  * thlorenzquit (Remote host closed the connection)
21:58:45  <indutny>how would you scroll up?
21:58:50  <indutny>with your tmux thing
21:58:52  <indutny>^A and ?
21:58:55  <trevnorris>ctrl+a <tab>
21:59:01  <indutny>ok
21:59:04  <mmalecki>indutny: on mac it's fn + up for me
21:59:06  <indutny>thanks
21:59:12  <indutny>mmalecki: really?
21:59:14  <trevnorris>it's in vim mode, also
21:59:19  * seldojoined
21:59:25  * c4milojoined
21:59:28  <mmalecki>indutny: yeah. it's linux on mac but still
21:59:54  <indutny>doesn't work
21:59:56  <indutny>on tmux on smartos
22:00:09  <trevnorris>sec. let me jump in
22:00:28  <indutny>np
22:01:06  <indutny>erm
22:01:13  <indutny>it segfaults in different place
22:01:30  <trevnorris>yup. that time it segfalted because env_ == 0
22:01:42  <trevnorris>ran into that before as well.
22:02:42  <trevnorris>man you're fast at that
22:03:01  <indutny>seems to be segfaulting there
22:03:12  * m76quit (Read error: Connection reset by peer)
22:03:14  <indutny>anyway
22:03:22  <indutny>could you please demonstrate me the problem?
22:03:44  <trevnorris>sure.
22:04:52  <indutny>oooh
22:04:53  <indutny>I see
22:04:55  <indutny>trevnorris: ^
22:05:00  <trevnorris>ok
22:05:07  <indutny>mind if I'll take over?
22:05:11  <trevnorris>feel free
22:06:11  <indutny>thanks
22:07:25  <trevnorris>_removeAsyncQueue is added to the *Wrap classes
22:07:35  <indutny>yeah, I se
22:07:36  <indutny>see
22:07:53  <trevnorris>if you want it, give me 2 mins and I'll have gdb give you the full js stack as well.
22:08:06  <trevnorris>just need to include a build and run option
22:08:40  <indutny>trevnorris: well, not really
22:08:44  <trevnorris>ok
22:08:50  <indutny>trevnorris: so, is it calling that function on activeContext?
22:08:54  <indutny>it seems to be a plain js object
22:09:22  <indutny>could it be it?
22:09:27  <trevnorris>well, it's going through all the object in activeContext._asyncQueue
22:09:37  <indutny>well
22:09:43  <indutny>it calls method on it
22:09:47  <trevnorris>_asyncQueue contains all the instantiated objects during that time
22:09:55  <trevnorris>the TCPWrap will have been one of those
22:10:14  <indutny>trevnorris: who sets removeAsyncQueue
22:10:24  <indutny>hm...
22:10:24  <indutny>I see
22:10:27  <indutny>so if it has it
22:10:34  <indutny>it is a wrapped C++ object
22:10:37  <trevnorris>yup
22:12:34  <trevnorris>how the hell do you type that fast?
22:12:39  <indutny>trevnorris: could you please rebuild it?
22:12:42  <indutny>trevnorris: don't know
22:12:44  <trevnorris>sure
22:12:46  <indutny>thanks man
22:13:28  <trevnorris>heh
22:13:47  <bradleymeck>unsure how to make a tmpfile in the bundler, should we use the std c lib functions I guess?
22:14:06  * mrhoorayjoined
22:14:36  <indutny>yep
22:14:37  <indutny>that's it
22:14:40  <indutny>trevnorris: so basically
22:14:54  <indutny>you are wrapping child class
22:14:58  <indutny>and trying to unwrap parent
22:15:02  <indutny>that won't work with vtables
22:15:05  <indutny>and virtual methods
22:15:14  <indutny>you should unwrap the child class there
22:15:30  <indutny>trevnorris: and should be aware of it
22:16:03  <indutny>trevnorris: is it clear?
22:16:13  <trevnorris>yeah. now i'm just thinking about how to do that.
22:17:39  <indutny>heh
22:17:52  <indutny>this is a good question indeed
22:18:07  <indutny>AddMethods
22:18:11  <indutny>it should be generic
22:18:22  <indutny>AddMethods<Base>(...)
22:18:30  <indutny>and should add RemoveAsyncQueue<Base>
22:18:41  <trevnorris>so, basically, the pointer was just offset incorrectly because the "size" of the class was different than expected? guess i'm just thinking in terms of a struct. all that c++ virtual magic confuses me.
22:18:42  <indutny>though, you'll need to preallocate methods
22:18:49  <indutny>trevnorris: no, because of vtable
22:18:54  <trevnorris>ok
22:18:54  <trevnorris>thanks
22:19:01  <indutny>trevnorris: basically
22:19:07  <indutny>when class has virtual methods
22:19:12  <indutny>each object has a vtable
22:19:16  <indutny>at the 0 offset of it
22:19:26  <indutny>and there are many vtables
22:19:28  <indutny>for each subclass
22:19:33  <indutny>and therefore pointer to a subclass
22:19:46  <indutny>is a pointer to class + offset
22:20:54  <indutny>anyway
22:21:07  <trevnorris>ok. mostly get it. anyways. thanks a ton for the help.
22:21:12  <indutny>np
22:21:14  <indutny>you are welcome
22:21:15  <trevnorris>watching you do that was way helpful.
22:21:24  <indutny>let me know, if I could help you with anything else
22:21:32  <trevnorris>will do.
22:21:33  <indutny>tjfontaine: yt?
22:21:41  <trevnorris>oh, there is one thing I would like your feedback on.
22:21:45  <indutny>sure
22:21:47  <indutny>shoot
22:21:50  <trevnorris>basically, it was a quick hack to get something working.
22:21:56  <trevnorris>let me show you in the tmux session
22:22:09  <indutny>sure
22:22:10  <indutny>one sec
22:22:27  <indutny>trevnorris: ok, I'm there
22:22:40  <trevnorris>because execution here is sync I thought this way of doing things would be fine
22:23:18  <indutny>I dislike it :)
22:23:21  <trevnorris>where basically I set the active tcp_wrap to be passed to AsyncWrap as the "parent" in the async chain.
22:23:25  <indutny>it should be in env
22:23:32  <trevnorris>ok. I can do that
22:23:35  <indutny>ah
22:23:38  <indutny>this is just a WIP
22:23:39  <indutny>nvm
22:24:07  <indutny>looks good
22:24:07  * bradleymeckquit (Quit: bradleymeck)
22:24:15  <trevnorris>ok. cool.
22:24:27  <indutny>though, in final version I'll probably try to replace it with an on-stack class instance
22:24:28  <trevnorris>yeah, it was just a proof of concept to see if the idea was possible
22:24:35  <trevnorris>ok
22:24:44  <indutny>which will restore value in destructor
22:24:56  <indutny>RAII
22:25:12  * trevnorrisreading wikipedia now
22:25:58  <indutny>it may sounds complicated
22:26:01  <indutny>but in fact it is simple
22:26:17  <indutny>class A { A() { initialize } ~A { deinitialize } }
22:26:19  <indutny>then in code
22:26:24  <indutny>{ A a; .... }
22:26:41  <indutny>and deinit will be called on any path out of this block
22:26:51  <indutny>so in case of your thing
22:26:56  <indutny>it would probably be
22:27:15  * rmgjoined
22:27:57  <indutny>class CurrentContext { CurrentContext(Environment* env, Ctx* ctx) : env_(env), prev_(env->current_context()) { env->set_current_context(ctx); } ~CurrentContext() { env->set_current_context(ctx); } ...fields... }
22:28:36  <trevnorris>interesting.
22:28:37  <trevnorris>ok
22:29:44  <trevnorris>man, javascript is child's play compared to this crap.
22:30:16  <indutny>the same thing
22:30:20  <indutny>it is just a design pattern
22:30:56  <trevnorris>sorry, I meant the whole c++ class inheritance virtual member vtable magic crap
22:31:16  <indutny>aaah
22:31:18  <indutny>yeah
22:31:20  <indutny>it is a total crap
22:31:36  <indutny>that's why I usually try to avoid virtual methods
22:31:42  <trevnorris>heh, yeah.
22:32:57  <trevnorris>so, i assume the HandleWrap destructor is virtual because some of its children have virtual methods?
22:33:05  <trevnorris>because it itself doesn't have any virtual methods
22:36:25  * rmgquit (Ping timeout: 240 seconds)
22:37:27  <indutny>trevnorris: note that you'll need to preallocate methods
22:37:49  <indutny>https://github.com/joyent/node/blob/master/src/node_crypto.cc#L116
22:37:51  <indutny>like this
22:38:03  <indutny>though
22:38:06  <indutny>you may not
22:38:09  <indutny>because it is inline
22:38:11  <indutny>yeah
22:38:15  <indutny>better try without it for first time
22:38:25  <indutny>should wok fine
22:40:57  <trevnorris>awesome. thanks dude.
22:42:58  * daviddiasquit (Remote host closed the connection)
22:43:27  * daviddiasjoined
22:46:25  * calvinfopart
22:54:30  * kenperkins_joined
22:57:49  * kenperkinsquit (Ping timeout: 246 seconds)
23:01:39  * daviddiasquit (Remote host closed the connection)
23:02:15  * daviddiasjoined
23:02:30  <indutny>trevnorris: np
23:06:13  * brsonquit (Ping timeout: 246 seconds)
23:06:37  * daviddiasquit (Ping timeout: 265 seconds)
23:06:44  * brsonjoined
23:09:27  <indutny>tjfontaine: where are ya, ma?
23:09:28  <indutny>man
23:10:11  <othiym23>indutny: I think he's traveling today
23:10:15  <indutny>oh
23:10:16  <indutny>ok
23:10:18  <indutny>thanks man
23:10:20  <othiym23>for the Node roadshow thinger
23:10:24  <othiym23>np d00d
23:12:26  * daviddiasjoined
23:16:59  <trevnorris>othiym23: you going to the paypal breakfast or whatever? I'm getting to the point where I just blindly accept these invites as long as they're local.
23:25:15  <othiym23>trevnorris: that's an hour commute for me each way, or I'd do it
23:25:35  <othiym23>trevnorris: are you going to the Netflix thing tonight?
23:25:43  <trevnorris>othiym23: heh, at minimum. getting in and out of that place is like the traffic funnel of death
23:25:44  <othiym23>groundwater is, but again that's a hefty commute
23:25:51  <trevnorris>othiym23: Netflix thing?
23:25:52  <othiym23>maybe for the next one
23:26:09  <othiym23>yeah, Lyle Troxell set up a talk series at Netflix
23:26:28  <trevnorris>oh. don't have it on my calendar so nope.
23:26:46  <othiym23>fair enough
23:36:52  * indexzeroquit (Quit: indexzero)
23:37:25  * sh1mmerjoined
23:41:17  * mrhoorayquit
23:42:10  * Qardpart
23:49:08  * daviddiasquit (Remote host closed the connection)
23:49:36  * daviddiasjoined
23:55:10  <trevnorris>indutny: it looked like you were using a command to search for text in all files in vim. what was that command?