00:29:39  * AtumTquit (Remote host closed the connection)
00:34:40  * cloudshuquit (Quit: Connection closed for inactivity)
06:42:09  * Guest59_quit (Ping timeout: 248 seconds)
07:16:48  * xaxxonjoined
08:47:28  * xaxxonquit (Quit: xaxxon)
10:25:10  * mylesborinsquit (Quit: farewell for now)
10:25:40  * mylesborinsjoined
12:51:44  * AtumTjoined
15:03:58  * caitpquit (Ping timeout: 264 seconds)
15:07:16  * caitpjoined
15:43:39  * xaxxonjoined
15:49:20  * xaxxonquit (Quit: xaxxon)
16:14:26  <caitp>devsnek: my understanding of the "kAuto" policy is that v8 will perform RunMicrotasks on its own after finishing a top level JSEntry
16:14:38  <devsnek>thats what i understand too
16:14:40  <caitp>with other policies requiring you to do it manually
16:14:52  <devsnek>i'm just getting weird behaviour
16:15:04  <caitp>but as for whether the program exits or not, there's probably a mix of responsiility between your app and v8
16:15:19  <devsnek>when i try to .Get a persistent
16:15:21  <caitp>(I don't really know, but I'd say take a look at d8.cc)
16:15:34  <devsnek>there's a cast error when it tries to cast from v8::Isolate to v8::internal::Isolate
16:15:39  <devsnek>which is like really weird
16:17:19  <caitp>I guess I don't 100% know what you're asking, and I'm not the embedder expert in here either, but when in doubt always look at d8.cc :p
16:17:29  <caitp>or node, or chromium
16:19:24  <devsnek>its an error i've never seen before
16:19:36  <devsnek>i've done a bit of c++ in node
16:21:03  <caitp>well I mean, as an emedder you shouldn't eb seeing v8::internal::Isolate anyways, any time it's handed to you it should be ToLocal()'d
16:21:14  <caitp>I don't really know how you're ending up in that situation
16:21:22  <caitp>passing an API value to an internal method?
16:21:28  <devsnek>no the error is happening internally
16:21:39  <devsnek>i do `my_persistent.Get(isolate)`
16:21:47  <devsnek>and then inside the source for Persistent::Get
16:21:51  <devsnek>it aborts when it tries to cast
16:22:31  <devsnek>https://www.irccloud.com/pastebin/j4tWrQfO/
16:23:16  <devsnek>i suppose thats actually at the internal Context::New(isolate, persistent) call
16:25:14  <caitp>I see
16:27:08  <caitp>you might want to try breaking in v8::internal::Isolate::TearDown
16:27:23  <caitp>to see if you're hitting that before trying to deref the isolate?
16:27:46  <devsnek>hmm ok
16:27:59  * devsnekgoogles how to set breakpoint in lldb
16:28:38  <devsnek>can i just type like breakpoint set v8::internal::Isolate::TearDown
16:28:43  <devsnek>will it recognise that
16:30:18  <caitp>I usually do just `b <symol>` or `b <file>:<line>`
16:35:15  <devsnek>caitp: it goes into promises here https://github.com/devsnek/ivan/blob/master/lib/ivan.js#L35
16:35:28  <devsnek>called here https://github.com/devsnek/ivan/blob/master/src/ivan.cc#L171
16:35:51  <devsnek>i'm worried that its hitting the dispose stuff
16:41:35  <caitp>well, the breakpoint in Isolate::TearDown should tell you if the isolate is being UAF'd, right?
16:43:22  <caitp>if the breakpoint hits, you could use _v8_internal_Print_StackTrace() in lldbb to see where that's getting hit from
16:44:33  <devsnek>fancy stuff
16:55:19  * RT|Chatzillaquit (Quit: ChatZilla [Firefox])
17:14:10  <devsnek>breakpoint never hits :(
17:14:27  <caitp>hmm
17:14:48  <caitp>that eliminates one class of problems at least right
17:15:01  <devsnek>i suppose...
17:15:21  <devsnek>i wish yang guo was on irc he always knows how to fix stuff
17:15:51  <caitp>you could try tweeting at him but I think they all deserve to have a real weekend
17:16:01  <devsnek>yea
17:17:23  <caitp>so, lets see..
17:29:08  <caitp>ok, I think I see the problem
17:29:14  <devsnek>oh god i hope so
17:30:44  <caitp>well the crash is during your module_.Get(isolate) call --- and the Isolate is fine
17:30:54  <caitp>so I'm guessing the module_ persistent is never initialized
17:30:55  <devsnek>right
17:30:58  <devsnek>uhhhh
17:31:02  <caitp>but it's hard to see why
17:31:07  <devsnek>it definitely is
17:31:49  <devsnek>there would be a different crash if it was empty
17:33:07  <devsnek>i can try logging that
17:34:40  <devsnek>caitp: IsEmpty is false
17:34:41  <caitp>I believe you that it's created, but I mean, the invalid access is happening dereferencing it
17:34:49  <devsnek>referencing the isolate
17:34:53  <devsnek>dereferencing*
17:34:53  <caitp>so like, whatever it's pointing to is trash
17:35:05  <devsnek>the error is `*p`
17:35:08  <caitp>yes
17:35:25  <caitp>and the `*p` is your dereferenced Persistent<Module>
17:35:31  <caitp>or rather
17:35:32  <devsnek>oshiz
17:35:48  <devsnek>so tf is going on here then
17:36:03  <caitp>I think `that` is a Module*, and *p is dereferencing the internalized version of that
17:36:20  <caitp>which appears to be trash
17:36:58  <caitp>adam, sathya and georg are the people I'd probably ask
17:37:19  <devsnek>not doing reviews adam?
17:38:11  <caitp>doesn't seem unlikely
17:38:21  <devsnek>i don't remember his last name
17:38:34  <devsnek>but there's an adam on chromium-reviews whose status is "not doing reviews"
17:38:57  <caitp>yeah that's the one
17:39:12  <caitp>I guess he's out
17:39:23  <devsnek>do you know about global vs persistent usage
17:39:28  <devsnek>global is persistent + move semantics right
17:39:35  <caitp>my api knowledge is pretty limited
17:39:46  <caitp>pretty much only run into it when writing C++ unit tests
17:41:49  <devsnek>i'll do some debugging around where i set the persistent
17:41:52  <devsnek>ugh
17:52:20  <devsnek>caitp: i figured it out
17:52:26  <devsnek>i feel like an idiot
17:52:39  <caitp>nice
17:52:53  <devsnek>you know my ModuleWrap::New?
17:53:21  <devsnek>https://www.irccloud.com/pastebin/4hsrGBvQ/evil.diff
17:53:40  <devsnek>i forgot to pass it to the FunctionTemplate 🤦‍♂️
17:54:42  <caitp>so it was an empty callack and your thing creating the persistent was never getting called?
17:54:53  <devsnek>yep
17:55:35  <caitp>yeah, I don't totally get the point of the null callack
17:55:46  <caitp>so that seems like an easy mistake to make
17:56:35  <devsnek>i feel so dead
17:56:40  <caitp>I'd rather ASSERT(callback != nullptr) and have a separate static method for creating a null-callback FunctionTemplate if embebdders really need that
17:56:52  <devsnek>its actually weirding me out
17:57:17  <devsnek>i was always doing ASSIGN_OR_RETURN_UNWRAP(&obj, that);
17:57:34  <devsnek>which should have bit the unwrap being a nullptr and returned before anything ran
17:58:58  <caitp>well anyway, cool you figured it out
17:59:16  <devsnek>thanks for helping out
19:21:27  * plutoniixjoined
19:21:35  * plutoniixquit (Max SendQ exceeded)
19:22:41  * plutoniixjoined
22:59:26  * RT|Chatzillajoined
23:04:41  * AtumT_joined
23:07:49  * AtumTquit (Ping timeout: 260 seconds)
23:18:05  * AtumTjoined
23:19:33  * AtumT_quit (Ping timeout: 264 seconds)