github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:04 patrickz joined 00:08 patrickb left 00:14 patrickz left 01:23 AlexDani` joined 01:24 AlexDaniel left 01:32 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined 02:29 lucasb left 02:45 vesper11 left, Guest38485 left 02:46 Guest38485 joined, vesper11 joined 04:54 squashable6 left 04:55 squashable6 joined 07:10 domidumont joined
Geth MoarVM/fix_deopt_all_in_native_callback: 18d378fc57 | (Stefan Seifert)++ | 9 files
WIP
08:50
08:56 sena_kun joined 09:21 zakharyas joined 09:22 patrickb joined 09:32 zakharyas left 09:34 zakharyas joined 10:14 zakharyas left 10:25 zakharyas joined 10:53 sena_kun left 11:07 sena_kun joined 12:36 lucasb joined 12:37 zakharyas left 12:54 sena_kun left 13:08 sena_kun joined 13:40 squashable6 left 13:41 squashable6 joined 13:49 zakharyas joined 14:24 zakharyas left 14:25 zakharyas joined 14:27 zakharyas left 14:28 zakharyas joined 14:39 zakharyas left 14:41 zakharyas joined 14:53 sena_kun left 15:07 sena_kun joined
nine So...I got rid of those hangs in tests, and now there's only a single test file failing with a segfault, albeit one in JIT compiled code 15:24
Guest38485 sounds like progress 15:27
16:19 domidumont left 16:22 zakharyas left 16:44 patrickb left 16:53 sena_kun left
nine So, I looked at the disassembly of the place where that segfault occurs and tried to match it to blocks generated by the lego JIT. Looks like it's blowing up in a get_spesh_slot macro because tc->cur_frame->effective_spesh_slots (which ends up in rdx) is NULL 17:03
That's why it blows up in mov rdx,QWORD PTR [rdx+0x48] 17:04
jnthn Is tc->cur_frame->spesh_cand set?
nine So it's quite possible that this is another deopt issue
spesh_cand is 0 17:05
dinner&
jnthn Yeah, sounds like it somehow remained in the JIT code after a deopt
Rather than leaving the JIT code
nine jnthn: in case you didn't follow in the past week: this whole thing started because I discovered an issue with deopt all in nested runloops (NativeCall callbacks) 17:06
17:08 sena_kun joined
jnthn No, was on a trip so couldn't really follow closely 17:11
nine Long story short: the deoptimization didn't really propagate out of the nested runloop, leading to exactly what I'm now seeing: getspeshslot failing due to a NULL effective_spesh_slots. I added a couple of hacks and got it to work without the JIT, fixed up a couple of JIT issues and this is now the last one 17:30
17:43 domidumont joined, domidumont left 18:54 sena_kun left 19:08 sena_kun joined 20:53 sena_kun left 21:09 sena_kun joined 22:43 sena_kun left 22:44 brrt joined
brrt \o 22:44
brrt wonders if nine is aware of the stack-manipulation mechanism that makes the JIT return to the interpreter 22:45
... and I note that the pointers we maintain for that assume a non-nested runloop 22:47
23:53 brrt left