github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:08
patrickz joined
00:10
patrickz left
00:12
patrickb left
01:03
lucasb left
01:40
synopsebot left
03:42
quotable6 left,
benchable6 left,
bloatable6 left,
sourceable6 left,
statisfiable6 left,
greppable6 left,
shareable6 left,
releasable6 left,
nativecallable6 left,
coverable6 left,
notable6 left,
committable6 left,
unicodable6 left,
reportable6 left,
squashable6 left,
bisectable6 left,
coverable6 joined,
releasable6 joined,
benchable6 joined,
notable6 joined,
reportable6 joined,
bisectable6 joined
03:43
sourceable6 joined,
squashable6 joined
03:44
committable6 joined,
quotable6 joined,
greppable6 joined,
nativecallable6 joined,
statisfiable6 joined
03:45
bloatable6 joined,
shareable6 joined,
unicodable6 joined
04:45
releasable6 left,
bisectable6 left,
sourceable6 left,
shareable6 left,
coverable6 left,
bloatable6 left,
benchable6 left,
unicodable6 left,
evalable6 left,
nativecallable6 left,
reportable6 left,
tellable6 left,
committable6 left,
squashable6 left,
notable6 left,
greppable6 left,
quotable6 left,
statisfiable6 left
04:46
releasable6 joined,
benchable6 joined,
coverable6 joined,
shareable6 joined,
tellable6 joined,
nativecallable6 joined,
evalable6 joined,
unicodable6 joined,
quotable6 joined
04:47
greppable6 joined,
sourceable6 joined,
bloatable6 joined,
notable6 joined,
reportable6 joined,
squashable6 joined,
bisectable6 joined
04:48
statisfiable6 joined,
committable6 joined
05:44
Kaiepi left,
Kaiepi joined
06:36
domidumont joined
06:39
Kaiepi left
06:48
domidumont left
07:07
domidumont joined
|
|||
nine | Some times you just can't seem to make progress... Running the otherwise working code with MVM_SPESH_LOG ends in this: MoarVM oops: Too many levels of inlining popped | 08:08 | |
08:58
zakharyas joined
09:05
zakharyas left
09:07
zakharyas joined
10:00
sena_kun joined
10:08
zakharyas1 joined
10:11
zakharyas left
|
|||
nine | This is interesting: the sp_guardconc that blows up is the first one after a nativecallinvoke. And one that's running for quite a while with many other calls (even to the same NativeCall site) in between. | 10:15 | |
Furthermore tc->cur_frame changes from before entering that call to after it returns. Could be moved by the GC. The frame is on the heap after all | 10:17 | ||
nwc10 | gdb hardware watchpoint time? | ||
(whcih I assume you were already doing. just wanted to say something, because this stuff is hard and I can't help) | 10:18 | ||
nine | But the GC seems innocent. When I increase the nursery size from the puny to 1 GiB tc->cur_frame stays the same from before to after. But it's effective_spesh_slots is cleared. | 10:22 | |
So, it's rr time! | 10:23 | ||
nwc10 | every pirate's favourite debugging tool | 10:33 | |
nine | So the native function does a callback. For this we start a new runloop which processes the call. The call does a rebless which causes a MVM_spesh_deopt_all. That deopt is what clears the spesh_cand and effective_spesh_slots on the frame of the outer runloop. | 10:38 | |
This would be fine, but the callback_handler restores tc->interp_cur_op and tc->interp_bytecode_start after the callback to the values they had before, essentially negating the deopt changes. Only that now we're missing the spesh info on the frame. | 10:39 | ||
I wonder why we actually need to restore those values... | 10:43 | ||
10:52
sena_kun left
11:03
MasterDuke left
11:07
sena_kun joined
12:26
zakharyas1 left
12:32
lucasb joined
12:52
sena_kun left
|
|||
nine | MVM_SPESH_INLINE_DISABLE=1 makes the issue go away! | 12:53 | |
13:07
sena_kun joined
14:13
zakharyas joined
14:53
sena_kun left
14:56
vrurg_ left
15:01
vrurg joined
15:05
brrt joined
|
|||
brrt | \o | 15:06 | |
15:07
sena_kun joined
15:11
Kaiepi joined
15:13
Kaiepi left,
Kaiepi joined
15:31
Ven`` joined
16:04
zakharyas left
16:10
Ven`` left
16:13
Ven`` joined
16:18
brrt left
|
|||
nwc10 | .tell brrt o/ | 16:20 | |
tellable6 | nwc10, I'll pass your message to brrt | ||
16:23
Kaiepi left
16:24
Kaiepi joined
16:31
Kaeipi joined,
Kaiepi left
16:36
Kaiepi joined
16:38
Kaeipi left
16:39
Kaiepi left
16:52
sena_kun left
17:01
domidumont left
17:02
Kaiepi joined
17:07
sena_kun joined
|
|||
timotimo | o/ | 17:33 | |
sena_kun | timotimo: hey! | 17:35 | |
timotimo: how are you? | |||
timotimo | not fantastic | 17:36 | |
how about you? | |||
sena_kun | timotimo: so so, I guess... having a final exam with lots of complex topics to pass, but things are doable anyway. | 17:37 | |
timotimo | as long as your creeps are pumping energy into the controller, you'll gain global control level, which persists across respawns | 17:38 | |
sena_kun | timotimo: I hope things will become better for you. | ||
timotimo | haha, wrong channel | ||
sena_kun | _creepy_ | 17:39 | |
timotimo | i should catch up all my local checkouts, and make a new JSON::Fast release | ||
japhb | timotimo: What's new in JSON::Fast land? Which is to say, what would the release gain us? | 17:46 | |
timotimo | bug fix for some specific unicode trouble | ||
japhb | Ah, nice | 17:47 | |
timotimo | i believe the starfield_scroller.p6 doesn't even have a moving player thingie yet, though? | 17:49 | |
wrong window again | 17:50 | ||
18:17
sena_kun left,
sena_kun joined
18:28
MasterDuke joined
|
|||
nine | Seems like I added enough hacks so the deopt will affect the outer frame of the callback. But it still leads to very strange errors | 18:41 | |
18:52
sena_kun left
19:07
sena_kun joined
20:32
Kaiepi left,
Kaiepi joined
|
|||
nine | Well, one thing is sure: the nativecallinvoke op needs to be marked :deoptallpoint and :maycausedeopt as that's exactly what can happen in a callback | 20:34 | |
Alas that does not fix my issue :/ It doesn't even change anything about the "Can't find deopt all idx" I'm seeing with the frame that contains the nativecallinvoke | 20:37 | ||
20:41
Kaiepi left
20:42
Kaiepi joined
20:52
sena_kun left
|
|||
nine | Finally! | 21:04 | |
tc->cur_frame->return_address = cur_op; before the call to MVM_nativecall_invoke seems to do the trick. Deopt needs that return address | 21:05 | ||
21:07
sena_kun joined
|
|||
nine | Feels like I have an 80 % understanding of all the parts involved and I've got a pile of hacks that turn this segfaulting test into a passing one. I guess that's good enough to call it a day :) | 21:12 | |
sena_kun | nine++ | 21:13 | |
21:17
Ven`` left
22:14
MasterDuke left
22:54
sena_kun left
23:05
brrt joined
23:08
sena_kun joined
23:31
sena_kun left
23:43
brrt left
23:54
Kaiepi left
|