00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:00:52  <tjfontaine>so the question is what's causing it to evaluate `.stack` such that you're losing your .message
00:01:47  <trevnorris>we're not loosing our .message
00:01:52  <trevnorris>> var e = new Error('first');
00:01:57  <trevnorris>> e.message
00:02:00  <trevnorris>'first'
00:02:01  <bnoordhuis>trevnorris: re the backtrace thing, to make debugging easier for users
00:02:07  <bnoordhuis>it's disabled now though
00:02:11  <tjfontaine>it's lost in the sense that .stack is already been called and you won't get your custom message
00:02:15  <bnoordhuis>in v0.10 that is, not in master
00:03:24  <trevnorris>tjfontaine: yeah. the stack message is being generated only once, when the Error is instantiated. that's what you're saying right?
00:04:07  <trevnorris>bnoordhuis: hm? like in this specific case, or is there a bigger "backtrace" thing used in node?
00:04:39  <tjfontaine>`.stack` is being evaluated before `.message =`, but that doesn't seem possible from lib/ so I'm guessing this must be in src/
00:05:08  * qmx|awaychanged nick to qmx
00:05:11  <trevnorris>bnoordhuis: i'm not sure why the backtrace thing is even necessary. i changed it to throw in the returned function, not with the backtrace and it gave the same info, plus some.
00:06:28  <tjfontaine>oh I'll be damned, DEBUG is set in this test :)
00:06:42  <tjfontaine>things you should look at before trying to find the problem
00:07:44  <trevnorris>tjfontaine: i'm confused. .stack is evaluated on instantiation.
00:08:22  <trevnorris>tjfontaine: check this https://gist.github.com/trevnorris/5192265
00:08:45  <trevnorris>i'd have imagined that the stack trace would have shown 'a' being thrown from blahblah()
00:08:55  <trevnorris>but it shows it was thrown from where it was instantiated.
00:09:07  <tjfontaine>yes, that's common way to capture debugging info
00:09:26  <tjfontaine>which is why that rethrow is there
00:10:00  <trevnorris>yeah. and like you pointed out. the stack is evaluated with "MarkOneShotGetter" from "captureStackTrace"
00:10:08  <trevnorris>so the stack will never be reevaluated.
00:10:26  <tjfontaine>ya, but where is `.stack` being called here? :P
00:11:47  <trevnorris>hm? in captureStackTrace they're getting the stack with "var stack = %CollectStackTrace(obj..."
00:11:55  <tjfontaine>no, I mean in fs
00:11:57  * kazuponjoined
00:12:09  <trevnorris>it's not.
00:12:25  <tjfontaine>we don't set .message later anywhere else?
00:12:38  <trevnorris>yeah. we set .message later, but never use .stack.
00:12:57  <trevnorris>but only in that one spot (realize that's what you were asking)
00:12:58  <tjfontaine>so where are we using .stack now?
00:13:04  <tjfontaine>ok
00:13:05  <trevnorris>we aren't
00:13:34  <tjfontaine>so v8 just doesn't allow delayed message anymore I guess
00:13:42  <trevnorris>exactly
00:13:48  <trevnorris>as of commit 076470e5 (3.16.6)
00:14:12  <tjfontaine>well if you knew that why did you send me bouncing around on all this :P
00:14:15  <trevnorris>(well, um. that's from the official git mirror)
00:14:33  <trevnorris>oh, sorry. i didn't realize that until half way through this myself.
00:14:48  <trevnorris>then I guess I didn't communicate it :(
00:16:00  <tjfontaine>what a weird set of osx failures, I've never seen the write's fail like that before http://jenkins.nodejs.org/job/node-pullrequest/66/DESTCPU=ia32,label=osx/tapTestReport/
00:16:29  <MI6>joyent/libuv: piscisaureus created tag node-v0.5.6 - http://git.io/4RW6tg
00:16:44  <trevnorris>bnoordhuis: so will it be disabled in master anytime soon? i have a fix for it now.
00:18:03  * kazuponquit (Ping timeout: 245 seconds)
00:18:58  <trevnorris>oh wait, nm.
00:23:57  <trevnorris>tjfontaine: just to confirm this stupidity: http://code.google.com/p/v8/issues/detail?id=2559
00:24:39  <tjfontaine>right ENOTABUG
00:24:56  <tjfontaine>so it's just a matter of changing wtf
00:25:30  <trevnorris>well, either it doesn't show the message, or it doesn't show the correct stack trace.
00:27:55  <trevnorris>so setting .message later is set in not a few places. anyone have an idea how to deal with this?
00:30:52  <bnoordhuis>aww. apparently clang doesn't support register void** rbp asm("%rbp");
00:31:05  <bnoordhuis>at least, not the version that ships with xcode
00:31:44  <trevnorris>is that 3.2?
00:32:26  <bnoordhuis>Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)
00:32:30  * piscisaureus_quit (Read error: Operation timed out)
00:33:00  <bnoordhuis>but no worries, __asm__ __volatile__ ("mov %%rbp, %0" : "=g" (rbp)); works
00:33:22  <trevnorris>wtf. glad you know that
00:34:19  <trevnorris>and thanks for the review.
00:34:24  <bnoordhuis>np
00:34:25  <tjfontaine>bnoordhuis: two runs in a row your ciphers patch had http://jenkins.nodejs.org/job/node-pullrequest/DESTCPU=ia32,label=osx/lastCompletedBuild/tapTestReport/ added the writefloat writedouble failure, but I'm not sure why
00:34:32  <bnoordhuis>err?
00:34:50  <trevnorris>oh,
00:34:54  <bnoordhuis>that's so unrelated i can't even think of a good analogy
00:35:10  <trevnorris>yeah. that's a known issue, but nothing to do with the ciphers patch...
00:35:25  <bnoordhuis>ah, the nan bug?
00:35:41  <bnoordhuis>tjfontaine: what compiler does it use?
00:35:52  * mikealquit (Quit: Leaving.)
00:36:39  * trevnorrisquit (Quit: Leaving)
00:45:14  <sblom>Feedback on http://github.com/joyent/node/pull/5709 ?
00:45:40  <sblom>(Fixes 4 unit tests on my machine--looks like our Jenkins server doesn't see any of these particular failures.)
00:47:48  <sblom>Erm,
00:47:49  <sblom>https://github.com/joyent/node/pull/5079
00:48:06  <sblom>finger-paste fail.
00:55:35  <tjfontaine>bnoordhuis: clang
00:56:25  <tjfontaine>I wonder what's changed such that it starts popping up now? or the test is actually now writing floats and doubles
01:00:58  <bnoordhuis>tjfontaine: there's a bug in ia32 clang w.r.t. nan handling
01:01:15  <tjfontaine>right, but why am I just now hitting it on osx?
01:01:28  <bnoordhuis>i don't know. you tell me :)
01:02:00  <tjfontaine>hehe
01:02:15  <tjfontaine>i will whence I return home
01:12:33  * dominictarrquit (Read error: Connection reset by peer)
01:12:54  * dominictarrjoined
01:14:35  * kazuponjoined
01:17:11  * wolfeidauquit (Read error: Connection reset by peer)
01:17:19  * wolfeidaujoined
01:17:19  * abraxasjoined
01:19:52  * kazuponquit (Ping timeout: 272 seconds)
01:20:07  * dominictarrquit (Read error: Connection reset by peer)
01:20:33  * dominictarrjoined
01:29:02  * loladiroquit (Quit: loladiro)
01:29:13  * sblomquit
01:40:11  <bnoordhuis>/Users/bnoordhuis/src/v8/tmp/stacktrace(0x10ebff000): Trace(v8::Arguments const&)(0x10ec01570 0x10ec01581)
01:40:14  <bnoordhuis>/Users/bnoordhuis/src/v8/out/x64.debug/libv8.dylib(0x10ec0a000): v8::internal::MaybeObject* v8::internal::HandleApiCallHelper<false>(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>, v8::internal::Isolate*)(0x10ec82ff0 0x10ec83405)
01:40:18  <bnoordhuis>/Users/bnoordhuis/src/v8/out/x64.debug/libv8.dylib(0x10ec0a000): v8::internal::Builtin_Impl_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>, v8::internal::Isolate*)(0x10ec82fb0 0x10ec82fe3)
01:40:22  <bnoordhuis>/Users/bnoordhuis/src/v8/out/x64.debug/libv8.dylib(0x10ec0a000): v8::internal::Builtin_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>, v8::internal::Isolate*)(0x10ec7c710 0x10ec7c78c)
01:40:26  <bnoordhuis>Stub:CEntryStub(0x25834db062a0:0x25834db062ee)
01:40:29  <bnoordhuis>LazyCompile:~hop(0x25834db2d400:0x25834db2d423)
01:40:31  <bnoordhuis>LazyCompile:~next(0x25834db2d320:0x25834db2d343)
01:40:34  <bnoordhuis>^ my stack walker works :)
01:42:04  <cjd>that is awesome
01:42:51  <bnoordhuis>https://gist.github.com/bnoordhuis/5192966 <- gist
01:42:54  <cjd>there's a gnu thing which does it
01:43:08  <bnoordhuis>you mean backtrace_symbols()?
01:43:26  <cjd>maybe
01:43:34  <cjd>"libunwind" comes vaguely to mind
01:43:40  <bnoordhuis>oh right, that too
01:43:48  <bnoordhuis>but neither understands v8 stack frames
01:43:51  <bnoordhuis>this one does :)
01:44:17  <cjd>aha
01:45:14  <cjd>I tried libunwind but scrapped it because it couldn't resolve line numbers and offsets are unfun
01:45:22  <cjd>esp. when everybody compiles it themselves
01:45:57  <bnoordhuis>wasn't that due to lack of debug symbols?
01:46:14  <cjd>I had debug symbols, perhaps I wasn't using the right functions
01:46:15  <bnoordhuis>i guess that's the next step for my stack walker but that means pulling in libelf and libdw
01:46:17  <cjd>might look into it again
01:46:54  <cjd>I haven't had a segfault report in a long time but I get occasional assertion fails
01:47:21  <bnoordhuis>we get them all the time in node
01:47:25  <bnoordhuis>mostly due to bad add-ons
01:47:29  <cjd>/nod
01:47:44  <bnoordhuis>but people still open issues in the bug tracker :(
01:47:53  <cjd>yeap
01:47:56  <bnoordhuis>i'm hoping this will make it easier to weed out bogus bug reports
01:48:25  <cjd>CLOSED: TAINTED ADDON, NOT GPL <evil grin>
01:49:17  <bnoordhuis>more like the other way around :)
01:49:24  <cjd>heh
01:49:46  <bnoordhuis>okay, time i went to bed. have fun
01:49:48  <cjd>gn
01:54:20  * bnoordhuisquit (Ping timeout: 252 seconds)
02:00:16  * benoitcquit (Excess Flood)
02:04:40  * dominictarrquit (Quit: dominictarr)
02:06:55  * defunctzombie_zzchanged nick to defunctzombie
02:09:04  * benoitcjoined
02:14:04  * brson_quit (Quit: leaving)
02:18:37  <tjfontaine>ircretary: tell bnoordhuis upon reflection on the ride home I know what changed, and it was me :)
02:18:37  <ircretary>tjfontaine: I'll be sure to tell bnoordhuis
02:26:14  * defunctzombiechanged nick to defunctzombie_zz
02:34:29  * stagasquit (Read error: Connection reset by peer)
02:36:05  <cjd>ircretary: tell bnoordhuis maybe useful https://github.com/mirrors/gcc/blob/master/libbacktrace/backtrace.h
02:36:05  <ircretary>cjd: I'll be sure to tell bnoordhuis
02:37:22  * benoitcquit (Excess Flood)
02:37:56  * stagasjoined
02:38:19  * kazuponjoined
02:40:34  * benoitcjoined
02:41:17  * bradleymeckquit (Quit: bradleymeck)
02:44:06  * kazuponquit (Ping timeout: 272 seconds)
02:53:51  * loladirojoined
02:55:11  * bradleymeckjoined
02:56:13  * bradleymeckquit (Client Quit)
02:57:28  * stagas_joined
02:58:26  * loladiroquit (Ping timeout: 252 seconds)
02:58:40  * stagasquit (Ping timeout: 272 seconds)
02:59:06  * bradleymeckjoined
02:59:22  * stagasjoined
03:00:22  * bnoordhuisjoined
03:00:30  * loladirojoined
03:01:51  * ericktjoined
03:01:53  * stagas_quit (Ping timeout: 246 seconds)
03:05:38  * bnoordhuisquit (Ping timeout: 272 seconds)
03:14:28  * dapquit (Quit: Leaving.)
03:22:19  * bradleymeckquit (Quit: bradleymeck)
03:38:07  * mikealjoined
03:52:15  * benoitcquit (Excess Flood)
03:58:08  * benoitcjoined
04:00:11  * kazuponjoined
04:00:12  * AvianFluquit (Remote host closed the connection)
04:02:57  * AvianFlujoined
04:16:03  * arlolrajoined
04:16:22  * mikealquit (Quit: Leaving.)
04:17:06  * mikealjoined
04:17:45  * mikealquit (Read error: Connection reset by peer)
04:17:48  * mikeal1joined
04:30:33  * mikeal1quit (Quit: Leaving.)
04:31:10  * mikealjoined
04:31:35  * mikealquit (Client Quit)
04:32:58  * c4miloquit (Remote host closed the connection)
04:36:11  * qmxchanged nick to qmx|away
04:41:30  * arlolraquit (Quit: Linkinus - http://linkinus.com)
04:42:27  * trevnorrisjoined
04:42:54  * loladiroquit (Quit: loladiro)
04:43:31  * mikealjoined
04:48:09  * loladirojoined
04:55:56  * ericktquit (Quit: erickt)
04:57:57  * benoitcquit (Excess Flood)
05:02:09  * benoitcjoined
05:14:50  * AvianFluquit (Read error: Connection reset by peer)
05:15:19  * AvianFlujoined
05:18:53  <trevnorris>ircretary: hi
05:18:53  <ircretary>trevnorris: Hello :)
05:19:42  <tjfontaine>I do love node and the module ecosystem at times
05:20:13  <tjfontaine>being able to server.on('NotFound', function (req, res) { proxy.proxyRequest(req, res); })
05:20:18  <tjfontaine>it's just so simple
05:23:36  <trevnorris>with the upgrade to 3.17, module authors will need access to the isolate. you guys think they should just get it via "Isolate* isolate = Isolate::GetCurrent()", or should node_isolate be exposed in node.h?
05:24:16  <tjfontaine>when you say Isolate::GetCurrent() you mean the v8 getter?
05:24:36  <tjfontaine>or a new node getter?
05:25:31  <tjfontaine>I would probably vote for node::GetIsolate() as compared to people having the static node_isolate
05:28:39  <trevnorris>Isolate::GetCurrent() is a new api which allows you to get the isolate of the current context. and since node only has one isolate, it will always point to node_isolate.
05:29:00  <trevnorris>(it's new since 3.14, i think...)
05:29:42  <trevnorris>cool. i'll need to update the docs showing these steps so authors don't get deprecation warnings all over the place.
05:29:48  <tjfontaine>well
05:30:41  <tjfontaine>I don't think v8::Isolate::GetCurrent is ideal, I would say node::GetIsolate makes more sense, as generally the compiler would be able to inline the latter
05:32:51  * AvianFluquit (Remote host closed the connection)
05:35:29  <tjfontaine>trevnorris: for comparison consider uv_default_loop() vs uv.h expossing default_loop_ptr
05:39:41  <trevnorris>would it basically be: "Isolate* node::GetIsolate() { return node::node_isolate; }" ?
05:43:07  <tjfontaine>ya
05:44:13  <trevnorris>how would we expose that w/o also exposing node::node_isolate?
05:44:35  * defunctzombie_zzchanged nick to defunctzombie
05:45:58  <tjfontaine>by not including it in the namespace? or by specifying its visibility
05:46:50  <tjfontaine>by leaving it in node_internals and having node::GetIsolate in node.h :)
05:48:55  <trevnorris>oh, so simply including a header doesn't expose everything in the header? i'm such a newb...
05:50:09  <tjfontaine>well, at the very least if it's in node_internals.h it's less than public and you can change without worrying about who you screw over
05:51:01  <trevnorris>wait. what? node_object_wrap.h can get access to node::node_isolate by simply including node.h and using "extern v8::Isolate* node_isolate;" (at least that's what bn had me do)
05:52:53  <trevnorris>ok, i'm not going to worry about it. you c++ experts let me know what the best solution is and i'll just do it. :)
05:55:38  <trevnorris>tjfontaine: though there's been no consensus on what to do about the Error message thing. any ideas? i mean... we could go so far as to manipulate the stack string for DEBUG outputs, but...
05:59:17  <tjfontaine>manipulate it how?
06:02:43  <trevnorris>please don't laugh, but: "var st = err.stack.split('\n'); st[0] = 'Error: ' + err.message; err.stack = st.join('\n');"
06:02:58  <tjfontaine>stack is immutable
06:03:04  <tjfontaine>isn't it?
06:03:40  * mmaleckichanged nick to mmalecki[zzz]
06:03:54  <trevnorris>> var er = new Error; er.stack = 'hi'; throw er;
06:03:55  <trevnorris>hi
06:04:45  <tjfontaine>what an inconsistent api
06:05:32  <trevnorris>yeah... making life real fun right now.
06:06:09  <tjfontaine>I woudl imagine that you wouldn't be able to modify the stack in future releases
06:07:51  * wolfeidauquit (Remote host closed the connection)
06:08:09  * kevireillyquit (Remote host closed the connection)
06:08:33  <trevnorris>what I don't get is that .stack isn't anywhere in the ecmascript 262 standard I can find.
06:09:27  <trevnorris>here's the discussion on it's usage: http://mozilla.6506.n7.nabble.com/Error-stack-td106557.html
06:11:10  * benoitcquit (Excess Flood)
06:14:09  * benoitcjoined
06:14:23  * kevireillyjoined
06:18:14  * jguerreroquit (Quit: jguerrero)
06:22:30  <trevnorris>hm. well. didn't think that upgrading v8 would have gotten hung up on something like this.
06:27:31  <cjd>ahh the benefits of being a BDFL
06:28:14  <tjfontaine>trevnorris: I wouldn't necessarily call this a hang-up, it's just an annoyance that will have to be accepted or worked around, the hangup would be more on general perf :)
06:28:46  * wolfeidaujoined
06:57:31  <indutny>morning
06:58:40  * defunctzombiechanged nick to defunctzombie_zz
07:00:53  <trevnorris>tjfontaine: yeah. guess my ocd is getting the better of me here.
07:01:02  <trevnorris>but i'll make Errors my bitch https://gist.github.com/trevnorris/5194222
07:04:01  <trevnorris>one problem. sec.
07:06:27  <trevnorris>^ indutny: consider throwing in the above to make debugger error messages work properly? ;-)
07:06:51  <indutny>too hacky
07:07:26  * abraxasquit (Remote host closed the connection)
07:07:48  <trevnorris>lol. and so much more.
07:08:08  <kevireilly>trevnorris: 24 is just setting 23 again
07:08:10  <trevnorris>no, don't worry. i'd be worried about node if something like that made it in.
07:08:43  <kevireilly>isn't throwing errors in node a no no?
07:08:51  <trevnorris>kevireilly: yeah. that's actually an important thing.
07:09:06  <trevnorris>this specific hack is for the debugger.
07:09:13  <kevireilly>ah gotcha
07:09:50  <cjd>need to change the message on an error after it's thrown?
07:10:02  <trevnorris>cjd: yeah, for proper stack traces.
07:10:31  <cjd>err
07:10:46  <trevnorris>check out test-fs-readfile-error.js and fs.js function rethrow().
07:11:38  <trevnorris>for a better stacktrace when you're returning a function it's better to instantiate the error in the parent.
07:11:44  <trevnorris>then throw it in the return.
07:11:53  <trevnorris>otherwise you can't tell where the returned function came from.
07:12:53  * kristatejoined
07:12:54  <trevnorris>also w/o the functionality "assert.throws" can fail (since it sets the message later)
07:13:02  <cjd>I get the idea
07:13:06  <cjd>throw + rethrow
07:13:08  <cjd>yeah
07:13:35  <cjd>perhaps add a C++ tool to rethrow which digs down into the nasties of V8 and doctors up the exception?
07:14:00  <cjd>because rethrow is always bad but painfully common
07:14:20  <trevnorris>i dunno. waiting for someone like isaacs or indutny or bnoorduis to give me an idea. i'm all out. =P
07:14:33  <cjd>hmm
07:14:36  <trevnorris>*bnoordhuis
07:14:54  <cjd>do js errors actually work the same as C++ exceptions?
07:15:07  <cjd>unwinding the stack and dwarf and all that fun
07:15:13  <kevireilly>trevnorris: new Error('foo').stack gives you the backtrace
07:15:49  <trevnorris>kevireilly: yeah. and before 3.16.6 if you set the message before calling the .stack getter then it would use the new message in the stack trace.
07:15:54  <trevnorris>but they took it out.
07:16:22  <trevnorris>cjd: i dunno.
07:16:28  <cjd>ahh
07:16:44  <cjd>so you want partial stack but with altered message
07:16:49  <cjd>errno
07:16:56  <cjd>full stack, altered message
07:17:00  <cjd>there we go
07:17:08  <trevnorris>yeah.
07:17:30  <trevnorris>that's what i'm forcing here: https://gist.github.com/trevnorris/5194222
07:17:35  <cjd>mhm
07:17:45  <trevnorris>but i'd never want anything like that anywhere.
07:17:59  <cjd>meh
07:18:15  <cjd>IMO rigid design patterns do more damage than hacks
07:18:18  <cjd>*shrug*
07:18:36  <cjd>well
07:18:50  <cjd>promiscuity of information does the most damage
07:19:18  <cjd>so people complain about tabs and spaces while making everything globally reachable and singleton :|
07:20:14  <cjd>can you throw non-errors? :)
07:20:29  <trevnorris>http://www.devthought.com/2011/12/22/a-string-is-not-an-error/
07:21:23  <cjd>throw { stack:...., message:.... };
07:21:25  <cjd>:)
07:21:43  <cjd>but yeah, the subtleties would kill you
07:21:59  <kevireilly>damn there is a way to pass multiple items and i cant remember now
07:22:16  <cjd>stack is readonly?
07:22:19  <trevnorris>no
07:22:33  <cjd>so alter stack instead of message?
07:22:41  <trevnorris>neither is message. it's just that the stack string is generated at instantiation, but not after that.
07:23:20  <trevnorris>no slick way to do this. the problem is on v8's side.
07:23:52  <cjd>catch (e) { e.message = ...; e.stack = e.stack.replace(/old message/, e.message);
07:24:42  <cjd>somewhat similar to your solution
07:25:51  <trevnorris>heh. ecmascript 262 15.11.4.4 repeats the same step twice. oops
07:25:57  * kristatequit (Remote host closed the connection)
07:26:38  <trevnorris>screw it. i've spent too many hours on this stupidity.
07:26:55  <cjd>is there something wrong w/ changing the stack as a string?
07:27:01  <cjd>other than uglyness
07:28:13  <trevnorris>yeah. that wold all work internally and stuff. just stupid that other people who are using that technique will also hit the same problem
07:28:28  <cjd>yeah, rethrowing is bad
07:28:50  <cjd>java makes error types immutable for some reason..
07:28:59  <cjd>somethign about best practice
07:29:00  <trevnorris>unfortunately it's the only way to get a decent stack trace sometimes.
07:29:03  <trevnorris>ugh
07:29:35  <cjd>I'd say change the stack as a string, if someone doesn't like it then it's their problem :)
07:30:08  <cjd>spending days hacking through assembly generators doesn't put features in the user's hand
07:30:12  * `3rdEdenjoined
07:31:56  * rendarjoined
07:32:17  <indutny>isaacs: evening?
07:40:16  <trevnorris>ah ha! i see why AssertionError isn't printing the message. think I have a fix for it.
07:45:03  * csaohjoined
07:47:58  * csaohquit (Client Quit)
08:10:40  * zotjoined
08:16:52  * `3rdEden_joined
08:17:18  * `3rdEden_changed nick to `3E
08:33:12  * loladiroquit (Quit: loladiro)
08:35:00  * SquirrelCZECHquit (Ping timeout: 264 seconds)
08:35:37  * csaohjoined
08:45:12  <trevnorris>why would "assert.equal(Infinity,'')" output 'AssertionError: "Infinity"'? doesn't make sense to me to display non string values as strings in the assertion error msg.
08:45:48  <trevnorris>especially when "assert.equal(5,'')" outputs "AssertionError: 5"
08:46:05  <indutny>I bet it compares either numbers
08:46:07  <indutny>or strings
08:46:16  * rendarquit
08:46:16  <indutny>so that's why you see this error
08:46:20  <trevnorris>oh, duh.
08:46:34  <indutny>assert.equal(Infinity, 'Infinity')
08:46:39  <indutny>does not throw ^
08:47:01  <indutny>well, its actually doing ==
08:47:07  <indutny>nvm
08:47:13  * SquirrelCZECHjoined
08:47:44  <trevnorris>yeah. i have a fix for the no messages displayed for assertion testing problem. but those are causing an issue.
08:54:32  <trevnorris>indutny: you said to revert the last two dtrace commits? one is from you about postmortem stuff, and the other is a bunch of reverts from bn.
08:56:53  <trevnorris>are those the two i'm supposed to revert?
08:57:06  <indutny>yes
08:57:12  <indutny>my first
08:57:16  <indutny>and ben's second
08:57:23  * rendarjoined
08:57:26  <trevnorris>cool.
09:02:36  * kazuponquit (Remote host closed the connection)
09:08:19  * abraxasjoined
09:09:09  <trevnorris>indutny: must be tired. when I run "git revert f80f3c5f" there is no changeset.
09:10:11  <trevnorris>do I just need to cherry-pick all the commits he reverted?
09:15:52  * `3rdEdenquit (Remote host closed the connection)
09:16:00  * `3Echanged nick to `3rdEden
09:16:55  <trevnorris>dude. that is a shiz load of changes you had made.
09:35:55  * benoitcquit (Excess Flood)
09:38:41  * benoitcjoined
09:39:43  <trevnorris>indutny: had a discussion earlier w/ tjfontaine. want to know what you think.
09:39:45  <trevnorris>now that use of Isolates is required, need to update the docs, and users need access to node_isolate.
09:40:07  <trevnorris>I was thinking they could just "Isolate* isolate = Isolate::Current();" since node only uses one
09:40:18  <trevnorris>or just expose node::node_isolate.
09:40:28  <indutny>both could work
09:40:30  <trevnorris>tjfontaine was thinking "node::GetIsolate()"
09:40:35  <indutny>but Isolate::Current() is a little bit slower
09:40:38  <indutny>well
09:40:40  <indutny>not a little bit
09:42:13  <trevnorris>also, not sure when this happened, but you're supposed to adjust AdjustAmountOfExternalAllocatedMemory from the isolate now.
09:43:05  <trevnorris>ok. so tjfontaine was thinking basically "Isolate* node::GetIsolate() { return node::node_isolate; }"
09:43:19  <trevnorris>that worth it, or just expose the static
09:43:49  <indutny>yep
09:43:53  <indutny>better function
09:43:59  <indutny>so we can change it later
09:44:06  <indutny>without breaking changes
09:44:33  <trevnorris>cool. i'll throw that in along w/ doc changes.
09:44:52  <indutny>ok
09:46:12  <trevnorris>then need to go through and update everything that can accept an isolate (have only done the ones that threw deprecation warnings)
09:49:47  <trevnorris>indutny: will I need to use NODE_EXTERN in the declaration?
09:51:42  <indutny>I guess so
10:04:23  <wolfeidau>Has anyone had any luck working out why dtrace is having issues in 0.10 ?
10:04:56  <indutny>huh?
10:05:00  <indutny>wolfeidau: what issues?
10:06:32  * abraxasquit (Remote host closed the connection)
10:07:06  <wolfeidau>indutny: Not resolving function names when you use jstat from on a running process, works when the process is spawned by dtrace
10:07:18  <indutny>oh
10:07:32  <wolfeidau>indutny: Just resolves addresses :(
10:07:33  <indutny>that's pretty odd
10:07:39  <indutny>I use dtrace almost every day
10:07:43  <indutny>haven't seen this problem yet
10:07:48  <indutny>are you on smartos?
10:08:14  <wolfeidau>indutny: Yeah latest smartos with 0.10 compiled with dtrace enabled
10:08:34  <wolfeidau>indutny: I have a gist which illustrates the issue
10:08:41  <indutny>ok
10:08:49  <indutny>x64 or x86?
10:08:50  <wolfeidau>https://gist.github.com/wolfeidau/5141024
10:08:54  <indutny>err
10:08:57  <indutny>64 or 32bits
10:09:04  <wolfeidau>64 bit
10:09:15  <wolfeidau>I am running in vmware fusion on oSX
10:09:19  <indutny>interesting
10:09:24  <indutny>what if you'll try 32bit process?
10:09:40  <wolfeidau>indutny: Do i need to recompile node?
10:09:45  <indutny>yes
10:09:55  <wolfeidau>CFLAG ?
10:09:56  <LOUDBOT>THINK OF THE ENVIRONMENT BEFORE YOU PRINT THIS CHAT LOG
10:09:58  <indutny>its pretty odd that this is happening
10:10:08  <indutny>I bet its something with dtrace in your smartos version
10:10:18  <indutny>have you tried asking at #smartos?
10:10:26  <indutny>or #dtrace
10:10:30  <wolfeidau>indutny: Could be, yeah didn't get much response
10:10:37  <indutny>ah, well
10:11:49  <wolfeidau>It is anoying that it works when i spawn it from dtrace but not when observed, odd thing is some functions resolve
10:12:22  <indutny>odd, that I can't reproduce it
10:12:26  <indutny>let me try it
10:12:29  <indutny>just to be sure
10:13:38  <wolfeidau>indutny: I was getting it to a lesser degree on 0.8.x
10:13:54  <indutny>well, its missing some functions periodically
10:13:57  <indutny>but not whole stacks
10:14:18  <indutny>btw, its quite odd that addresses are that short in your traces
10:14:21  <indutny>0x750c55
10:14:22  <indutny> 0x752129
10:20:50  <indutny>it looks like 32bit address
10:20:56  * dsantiagoquit (Ping timeout: 260 seconds)
10:20:57  * davispquit (Ping timeout: 260 seconds)
10:21:00  <wolfeidau>indutny: dtrace -V is dtrace: Sun D 1.11
10:21:01  <wolfeidau>and uname -a SunOS 8d27df39-18c7-4635-af06-3e6dc73dfa80 5.11 joyent_20130307T214308Z i86pc i386 i86pc Solaris
10:21:01  <wolfeidau>indutny: I should open a ticket ?
10:21:02  <wolfeidau>indutny: Very interesting what you say about the addresses
10:21:02  <wolfeidau>indutny: What should they look like?
10:21:13  * russell_hquit (Ping timeout: 260 seconds)
10:21:15  <wolfeidau>indutny: Getting this message as well dtrace: 1 jstack()/ustack() string table overflow
10:21:16  * othiym23quit (Ping timeout: 260 seconds)
10:21:16  <indutny>but it might be just v8's ASLR
10:21:16  <indutny>well
10:21:17  <indutny>usually they're bigger
10:21:17  <indutny>like this 0x1b69ee10618e
10:21:17  <wolfeidau>aha
10:21:50  * dsantiagojoined
10:22:19  <wolfeidau>indutny: Yeah some traces I get no stacks others i get some
10:22:36  <wolfeidau>indutny: Sorry no names vs names
10:22:37  * russell_hjoined
10:22:43  <indutny>ok
10:22:44  <indutny>brb
10:23:43  * davispjoined
10:35:23  * trevnorrisquit (Quit: Leaving)
10:40:18  * benoitcquit (Excess Flood)
10:43:12  * benoitcjoined
11:00:48  * stagasquit (Ping timeout: 264 seconds)
11:08:33  * stagasjoined
11:09:44  * piscisaureus_joined
11:13:41  * dominictarrjoined
11:27:31  * mmalecki[zzz]changed nick to mmalecki
11:29:33  * stagas_joined
11:30:08  * sgallaghjoined
11:31:25  * hzjoined
11:31:35  * stagasquit (Ping timeout: 252 seconds)
11:31:43  * stagas_changed nick to stagas
11:39:29  * csaohquit (Quit: csaoh)
11:40:47  * benoitcquit (Excess Flood)
11:43:42  * benoitcjoined
11:48:28  * dominictarrquit (Quit: dominictarr)
11:59:50  * `3rdEdenchanged nick to `3E|BRB
12:13:28  * `3E|BRBchanged nick to `3rdEden
12:15:12  * csaohjoined
12:19:56  * othiym23joined
19:09:38  <piscisaureus_>test
19:21:58  <isaacs>bnoordhuis: neato
19:22:25  <isaacs>bnoordhuis: so it's sort of like the mdb ::jsstack and ::jsprint stuff, but in your program?
19:22:45  * defunctzombie_zzchanged nick to defunctzombie
19:23:45  <isaacs>tjfontaine: you in sf today?
19:27:33  * csaohquit (Quit: csaoh)
19:27:37  <trevnorris>you guys think there should be a note in the addon docs about the isolate change, or are updated examples enough?
19:28:37  * c4milojoined
19:30:10  * c4miloquit (Remote host closed the connection)
19:30:30  * c4milojoined
19:32:57  * perezdquit (Ping timeout: 258 seconds)
19:37:40  * bnoordhuisquit (Ping timeout: 252 seconds)
19:39:09  * perezdjoined
19:45:57  <indutny>hoya
19:58:41  * stagasjoined
19:59:13  * mmalecki[out]changed nick to mmalecki
19:59:38  <tjfontaine>isaacs: yes :)
20:01:25  * indexzerochanged nick to indexbrb
20:01:32  * indexbrbquit (Quit: indexbrb)
20:03:25  * bnoordhuisjoined
20:05:01  <trevnorris>bnoordhuis: so basically just replace the "extern Isolate..." with "Isolate.. GetCurrent" in object_wrap?
20:06:31  <tjfontaine>well within the node api seems like it should use the static
20:07:05  <tjfontaine>but for what people consume externally (addins) should use the GetCurrent, at least that's what I assume
20:14:11  <trevnorris>ok. so that means I should still use "extern v8::Isolate* node_isolate;" inside each function that needs it?
20:14:34  <tjfontaine>no, only once at the top of the file?
20:14:56  * perezdquit (Quit: perezd)
20:15:07  <tjfontaine>maybe c++ scoping is different in this regard
20:16:34  <trevnorris>tjfontaine: the build fails violently when I do that with a bunch of "src/node_buffer.cc:(.text._ZN4node[...]v]+0x1a): undefined reference..."
20:17:00  <trevnorris>well, at least i'm feeling violent towards it =P
20:17:17  <tjfontaine>is this code up somewhere?
20:17:35  <tjfontaine>or just what you have in your WIP
20:18:02  <trevnorris>it's in pr 5077
20:18:12  <trevnorris>i'm in the middle of a rebase right now, so not completely up-to-date
20:19:04  <trevnorris>ugh. and fucking github shows the commits out of order when you cherry-pick a commit, then rebase later.
20:19:26  * dominictarrjoined
20:20:20  <trevnorris>tjfontaine: specifically it's this one: http://git.io/5gprFw
20:20:26  <tjfontaine>trevnorris: if there's not a `using namespace node` or within a `namespace node {}` you'll need to qualify node::node_isolate
20:20:39  <tjfontaine>hmm it is in a namespace
20:21:19  <tjfontaine>ugh code in headers, how unpleasant
20:21:49  * AvianFluquit (Remote host closed the connection)
20:21:51  <tjfontaine>trevnorris: if you put your extern on line 39?
20:22:26  <trevnorris>yeah. just tried that. that works.
20:23:06  <tjfontaine>ok, so do you see why it does work?
20:23:10  <tjfontaine>vs what you were doing before?
20:24:10  <trevnorris>i understand namespacing, but not extern.
20:24:19  <trevnorris>also do we just not worry that users can access it from node.h via "node::node_isolate"?
20:25:04  <tjfontaine>I mentioned during the call today that we should really have a discussion about what is and isn't going to be a public api for addins
20:25:30  <trevnorris>sounds good to me.
20:26:01  <trevnorris>then would we need to do something similar to how v8 namespaced everything off limits in v8::internal?
20:26:05  <tjfontaine>trevnorris: suffice it to say there are ways to protect/hide it if that's what is wanted
20:26:11  <trevnorris>ok
20:28:23  * bnoordhuisquit (Ping timeout: 255 seconds)
20:33:38  * benoitcquit (Excess Flood)
20:38:16  * benoitcjoined
20:39:48  <piscisaureus_>tjfontaine hey
20:40:02  <tjfontaine>hey
20:40:08  <piscisaureus_>tjfontaine: did you test your nanosecond timer patch on windows?
20:40:19  <piscisaureus_>er, *nanosecond stat
20:40:25  <tjfontaine>yes, but I might have done it wrong?
20:40:28  <piscisaureus_>no
20:40:33  <piscisaureus_>I had one comment. Otherwise LGTM
20:40:53  <tjfontaine>ok, when I was doing it the 100s of nanoseconds thing was bothering my head
20:41:11  <tjfontaine>I was so used to having to / switching around to a * freaked me out :)
20:41:21  <piscisaureus_>yes, multiplying by 100 was they way to go :)
20:41:39  <piscisaureus_>The only comment I have is that you need to wrap ts in braces, e.g. so make it (ts)
20:41:46  <piscisaureus_>because this is a macro
20:41:51  <tjfontaine>nod
20:42:15  <piscisaureus_>After that you can land (if you have commit bits) or I can do it.
20:42:29  <tjfontaine>you'll have to do it
20:42:40  <piscisaureus_>That is - if bnoordhuis signed off the unix parts (it seems he did)
20:44:21  <tjfontaine>ok I pushed with the update macro
20:45:33  * luxigojoined
20:45:34  * kevireillyquit (Remote host closed the connection)
20:45:57  * kevireillyjoined
20:45:58  * dominictarrquit (Quit: dominictarr)
20:49:54  * wolfeidauquit (Remote host closed the connection)
20:49:56  <MI6>joyent/libuv: Timothy J Fontaine master * 499c797 : unix, windows: nanosecond resolution for uv_fs_[fl]stat Closes #739. - http://git.io/LEUp3w
20:50:21  <piscisaureus_>^-- tjfontaine: landed
20:50:24  <piscisaureus_>thanks!
20:50:30  <tjfontaine>piscisaureus_: no no, thank you! :)
20:50:54  <piscisaureus_>no no, thank you!
20:51:19  <piscisaureus_>The fact that I'm slow to review doesn't mean that I don't love it when people improve libuv
20:51:35  <tjfontaine>so long as that's what I did :)
20:51:39  <trevnorris>tjfontaine: so is there a way for me to kick off a sunos build on jenkins? in a few should have a fix for the dtrace thing.
20:51:58  <tjfontaine>trevnorris: have you pushed to your WIP?
20:52:25  <trevnorris>yeah. but it will fail. was a dumb ass and added my full path to one of the error .out files.
20:52:28  <trevnorris>so i'm fixing that now.
20:52:32  <tjfontaine>heh ok
20:53:25  * AvianFlujoined
20:56:53  * bradleymeckquit (Quit: bradleymeck)
20:59:00  <isaacs>did we stop installing header files with `make install`?
20:59:18  <indutny>I don't think so
20:59:29  <indutny>I'm using multiple installations
20:59:31  <isaacs>i didn't either...
20:59:33  <indutny>and every works just fine
20:59:47  * sgallaghquit (Remote host closed the connection)
21:00:33  <isaacs>huh. looks like we don't have them in the downloaded binaries.
21:01:32  <indutny>oh gosh
21:02:03  <isaacs>$ la x/usr/local/
21:02:03  <isaacs>bin/ lib/ share/
21:02:07  <isaacs>yep. we're not installing them
21:02:09  <isaacs>that's a bug
21:02:23  <isaacs>hard to build addons without node.h!
21:02:27  <isaacs>ohhh... wait.
21:02:30  <tjfontaine>node-gyp solves that
21:02:32  <isaacs>no, we have node-gyp doing that.
21:02:32  <tjfontaine>"solves"
21:02:33  <isaacs>right
21:12:38  * SquirrelCZECHquit (Quit: WeeChat 0.4.0)
21:13:30  * rje`sickdaychanged nick to rje
21:15:09  <MI6>joyent/libuv: indutny created branch feature-tcp-dualstack - http://git.io/GuxM2Q
21:15:39  * wolfeidaujoined
21:16:45  <indutny>oops
21:16:48  <indutny>gosh
21:18:19  <indutny>ircretary: tell bnoordhuis about https://github.com/joyent/libuv/pull/749
21:18:19  <ircretary>indutny: I'll be sure to tell bnoordhuis
21:28:27  <trevnorris>tjfontaine: pr 5077 is ready for sunos build test
21:29:22  * qmxchanged nick to qmx|away
21:29:30  <indutny>isaacs: so https://github.com/joyent/libuv/pull/749
21:29:35  <indutny>isaacs: and https://github.com/joyent/node/pull/5087
21:29:40  <indutny>you can try it out on your pc
21:29:45  <indutny>and see how well it works for you ;)
21:30:04  <indutny>also, as you can see I've almost not touched any test
21:33:43  * bnoordhuisjoined
21:38:19  * bnoordhuisquit (Ping timeout: 256 seconds)
21:45:01  * rendarquit
21:45:06  * c4miloquit (Remote host closed the connection)
21:56:26  * perezdjoined
21:58:57  * indexzerojoined
22:00:25  * dominictarrjoined
22:04:48  * bnoordhuisjoined
22:05:49  * bradleymeckjoined
22:06:40  * sblomquit (Ping timeout: 260 seconds)
22:07:30  <bnoordhuis>indutny: you don't need to have ircretary remind me of your PRs, i get github emails :)
22:10:57  <trevnorris>as part of the 3.17 updated i'm committing a change that adds node_isolate to all supported methods.
22:11:10  <trevnorris>only a few hundered additions so far =P
22:16:14  <bnoordhuis>trevnorris: there's a commit in the history that does that
22:16:26  <trevnorris>really?
22:16:31  * trevnorrisgoes looking...
22:17:03  <bnoordhuis>trevnorris: git show 51f6e6a | git apply -R probably
22:17:05  <indutny>bnoordhuis: I like annoying you
22:17:12  <indutny>through all possible ways
22:17:19  <indutny>sad that you don't have jabber account
22:17:23  <indutny>at least, I don't know it
22:17:25  <bnoordhuis>i don't get annoyed easily. i have kids
22:17:49  <bnoordhuis>not to mention a liberal arts wife
22:18:37  <trevnorris>bnoordhuis: that has a lot of em. but missing all the "HandleScope scope(node_isolate);" changes.
22:18:42  <MI6>joyent/libuv: Brian Mazza v0.10 * 77cb29a : unix: make uv_timer_init() initialize repeat uv_timer_get_repeat() shoul - http://git.io/90Wxjg
22:19:02  <trevnorris>also the "Local<*>::New(isolate"
22:19:41  <trevnorris>wait. scratch that last one
22:21:00  <trevnorris>bnoordhuis: thanks. that saved me a lot of work.
22:21:20  <bnoordhuis>np
22:22:12  * loladiroquit (Quit: loladiro)
22:27:26  <tjfontaine>well jankins seems to be pretty good at destroying jenins in someway
22:35:09  * c4milojoined
22:35:16  <trevnorris>i love the whole automated building thing, but haven't found it extremely intuitive to navigate.
22:35:36  <tjfontaine>jenkins is pretty much like democracy in that regard
22:35:56  <tjfontaine>it sucks, but better than everything else
22:36:03  <trevnorris>lol
22:38:09  * dsantiagoquit (Quit: Leaving...)
22:39:24  <bnoordhuis>piscisaureus_: you should schedule a day or two review PRs, there's a ton that are waiting for review by a windows programmer
22:39:35  <bnoordhuis>*to review
22:39:54  <piscisaureus_>bnoordhuis: I was actually planning to
22:40:09  <bnoordhuis>okay, good
22:47:27  * AvianFluquit (Remote host closed the connection)
22:49:53  * dsantiagojoined
22:56:29  <isaacs>piscisaureus_, bnoordhuis: What's the status of uv_cork/uncork?
22:56:55  <bnoordhuis>isaacs: i have the writev stuff working however...
22:57:09  <bnoordhuis>it speeds up some benchmarks by 5% and decimates others :/
22:57:21  <tjfontaine>trevnorris: dtrace: failed to compile script src/v8ustack.d: line 228: failed to resolve V8DBG_SMISHIFTSIZE: Unknown variable name (http://jenkins.nodejs.org/job/node-pullrequest/74/DESTCPU=x64,label=smartos/console)
22:57:28  <tjfontaine>trevnorris: that's a familiar error as well
22:57:30  <bnoordhuis>isaacs: related: https://github.com/joyent/libuv/issues/746
22:57:38  <isaacs>yeah, i see that
22:58:45  <bnoordhuis>tl;dr needs further investigation
23:01:14  <MI6>libuv-master: #57 UNSTABLE osx (2/183) smartos (5/183) windows (5/184) linux (3/183) http://jenkins.nodejs.org/job/libuv-master/57/
23:06:57  <trevnorris>tjfontaine: =P
23:07:25  <trevnorris>tjfontaine: why is that error only showing up on sunos?
23:07:38  <tjfontaine>trevnorris: because that's the only place dtrace ustack is enabled?
23:07:58  <trevnorris>hm. don't know anything about dtrace. wonder if I can enable it on linux...
23:08:26  <tjfontaine>trevnorris: indutny should know the solution for this one, I'm pretty sure we hit it before
23:08:38  <trevnorris>indutny: ^
23:08:41  <indutny>trevnorris: no way
23:08:47  <indutny>there's dtrace4linux
23:08:48  <indutny>but
23:08:53  <indutny>no ustack helpers
23:09:00  <trevnorris>bummer. ok
23:09:07  <bnoordhuis>don't forget about oracle's unbreakable linux!
23:09:14  <tjfontaine>there's also systemtap
23:09:33  <tjfontaine>bnoordhuis: has fooled around with that
23:09:50  <bnoordhuis>yes. stap is still rather hit and miss
23:10:04  <bnoordhuis>you'll need a recent kernel and a recent version of the tools
23:10:44  <bnoordhuis>or install fedora 18, it just works there
23:10:59  <bnoordhuis>no surprise, of course - the stap guy works for red hat
23:11:14  * bnoordhuisstops rambling
23:13:39  <indutny>it works on fedora?
23:13:44  <indutny>ustack helper?
23:14:27  <bnoordhuis>the systemtap equivalent of it yes
23:15:18  <trevnorris>bnoordhuis: is "Local<Value>::New(node_isolate, Undefined(node_isolate));" overkill? i see Undefined() w/ and w/o out it
23:15:52  <bnoordhuis>trevnorris: that's probably because the patch doesn't apply 100% anymore
23:16:15  <bnoordhuis>Undefined(node_isolate) is preferred
23:16:25  <trevnorris>yeah. been resolving conflicts. but still way simpler than making all those changes again...
23:16:33  <trevnorris>you must have some mad sed skillz
23:17:06  <bnoordhuis>trevnorris: git apply -R -C0 and inspect the diff very carefully afterwards :)
23:17:15  <tjfontaine>haha
23:19:41  * bradleymeckquit (Quit: bradleymeck)
23:29:07  <MI6>joyent/node: Bert Belder v0.10 * bf83251 : windows: enable watching signals with process.on('SIGXYZ') This reverts - http://git.io/QeyYhg
23:30:05  * perezdquit (Quit: perezd)
23:35:42  <bnoordhuis>piscisaureus_: -Timothy J Fontaine <tjfontaine@gmail.com> <- ?
23:35:53  <piscisaureus_>bnoordhuis: duplicate
23:35:57  <bnoordhuis>oh
23:36:17  <MI6>joyent/node: Iskren Ivov Chernev v0.10 * 2f4a62c : doc: fix streams2 SimpleProtocol example A non-existing variable `b` was - http://git.io/MtdFMg
23:36:22  <piscisaureus_>I tested some libuv release tooling on the node authors and mailmap and this what came out of it :)
23:39:32  * `3rdEdenquit (Quit: nite)
23:42:17  * mikealjoined
23:44:24  * qmx|awaychanged nick to qmx
23:45:14  * benoitcquit (Excess Flood)
23:48:40  <trevnorris>finally. all entries replaced.
23:49:12  <trevnorris>bnoordhuis: http://git.io/KaydwQ
23:51:19  <trevnorris>sob. forgot a few...
23:52:17  * benoitcjoined
23:57:47  <trevnorris>ok. now they're all done =P
23:58:40  * mikealquit (Quit: Leaving.)
23:59:50  <trevnorris>bnoordhuis: holy hell. how do you see crap like that so fast?