Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:02 reportable6 left 00:03 reportable6 joined 00:26 dogbert12 left 01:15 dogbert12 joined 01:20 dogbert12 left 01:22 dogbert12 joined 01:40 dogbert12 left 01:53 frost joined 03:19 dogbert12 joined 03:22 dogbert17 joined 03:24 dogbert12 left 03:28 dogbert11 joined 03:29 dogbert17 left 03:33 dogbert11 left 03:37 frost left 04:12 dogbert11 joined 04:17 dogbert11 left 05:16 dogbert11 joined 05:20 dogbert17 joined 05:22 dogbert11 left 05:58 dogbert17 left 06:02 reportable6 left 06:03 reportable6 joined 06:16 dogbert17 joined 06:20 dogbert17 left, dogbert11 joined 06:26 dogbert11 left 06:41 patrickb joined 06:52 patrickb left, patrickb joined 07:35 dogbert11 joined 07:38 patrickb left, patrickb joined 07:40 patrickb left, patrickb joined 07:42 patrickb left, patrickb joined 07:43 patrickb left, patrickb joined 07:53 dogbert11 left 08:01 dogbert11 joined 08:35 frost14 joined 08:41 frost14 left 08:42 frost46 joined 08:43 frost46 left, frost24 joined 08:45 frost24 left 08:57 frost joined 09:57 coverable6 left, shareable6 left, reportable6 left, unicodable6 left, notable6 left, committable6 left, bloatable6 left, quotable6 left, linkable6 left, nativecallable6 left, tellable6 left, sourceable6 left, squashable6 left, statisfiable6 left, benchable6 left, bisectable6 left, releasable6 left, evalable6 left, greppable6 left 09:58 sourceable6 joined, shareable6 joined, linkable6 joined, releasable6 joined 09:59 notable6 joined, unicodable6 joined, tellable6 joined, reportable6 joined, benchable6 joined, bloatable6 joined, statisfiable6 joined, bisectable6 joined, squashable6 joined 10:00 nativecallable6 joined, evalable6 joined, quotable6 joined, greppable6 joined, coverable6 joined, committable6 joined 10:51 squashable6 left 10:53 squashable6 joined 11:43 Geth joined 11:44 Geth left 11:45 Geth joined 12:02 reportable6 left 12:05 reportable6 joined 12:19 Geth left 12:22 Geth joined 12:23 Geth left, Geth joined 12:25 Kaipi joined, Kaiepi left 12:26 Kaipi left, Kaipi joined 13:10 Geth left, LizBot_ left 13:11 RakuIRCLogger left 13:14 RakuIRCLogger joined 13:15 Geth joined 13:17 frost left
lizmat PSA: if you like Geth to announce github events again, change the server name in the webhook to webhooks.liz.nl 13:52
Geth MoarVM/new-disp: a7981b98bb | (Jonathan Worthington)++ | src/6model/reprs/MVMCapture.c
Fix missing GC rooting in capture transforms
MoarVM/new-disp: 268c2badc5 | (Jonathan Worthington)++ | src/disp/boot.c
Fix use of moved collectables in lang* dispatchers
jnthnwrthngtn yay, it works
That was a replay from a push yesterday
Geth MoarVM/new-disp: d28b689f33 | (Jonathan Worthington)++ | src/core/callsite.c
Consistently use named args count function
MoarVM/new-disp: cbd493b0a5 | (Jonathan Worthington)++ | 3 files
GC mark interned callsites

We got away with this thanks to compunits only rarely getting collected, but now that we produce callsites regularly as a result of flattening that we then go on to intern, we really should do it.
jnthnwrthngtn lizmat++ # Geth resurrection
Sigh, why do I suddenly get "ASan runtime does not come first in initial library list" today when it worked fine yesterday... 14:27
Nicholas jnthnwrthngtn: that now gets me: 14:28
MoarVM panic: Zeroed owner in item added to GC worklist
somewhere in the NQP build
jnthnwrthngtn Hm, but not the ASAN panic? 14:30
nine jnthnwrthngtn: nqp built on a MoarVM with ASAN?
jnthnwrthngtn Yes
Turns out that nuking my install directory worked
I've no idea why
But yay working ASAN again
Nicholas that's not an ASAN panic. That's one of the #defines 14:31
jnthnwrthngtn Nicholas: Does it happen at the end of the build when buliding gen/moar/stage2/NQPP5QRegex.nqp
Nicholas Last lines where: 14:32
+++ Installing MOAR stage 2 files locally
+++ Compiling NQPP5QRegex.moarvm
jnthnwrthngtn Nicholas: I know, but with FSA_DEBUG on then ASAN I think should trip before it gets there. Recreating that now
Nicholas MoarVM panic: Zeroed owner in item added to GC worklist
jnthnwrthngtn Yeah, ok. I don't get zeroed owner, but bogus one, but the same kinda issue 14:33
grr, it doesn't 14:34
ahh, I think a) I found it, b) I know why at some point it looked like the same use after free bug I was hunting yesterday 14:43
Sigh, no. 15:14
Geth MoarVM/new-disp: 9668dfc167 | (Jonathan Worthington)++ | src/core/callsite.c
Avoid repeated dereferencing in intern cleanup
MoarVM/new-disp: 39ff70c663 | (Jonathan Worthington)++ | src/disp/program.c
Form capture before making dispatch record

Otherwise the allocation can cause us to see things in a state of incomplete setup, which can cause us to go doing incorrect marking.
jnthnwrthngtn Trying to track it down with the "GC on every allocation" option showed up the issue fixed in the second commit 15:42
However, dropping back to another debug level gets me back to the very same failure mode I had before 15:43
nine jnthnwrthngtn: have you ever tried the gcc plugin for finding GC issues? 15:46
jnthnwrthngtn nine: Not yet 15:48
It's static analysis?
nine yes
It takes a bit of effort to get up and running, so it's usually not worth it for finding a single issue. But with large amounts of new code it could pay off 15:50
15:54 dogbert11 left
jnthnwrthngtn Yeah, should certainly throw it at this. I'm still not quite sure if I'm looking at a straight GC issue; nothing trips in the right places 16:00
nine jnthnwrthngtn: I've ran it. Maybe worth a look: gist.github.com/niner/d2afe30b8246...6d14cb26b9 16:05
16:19 patrickb left
Geth MoarVM/new-disp: 5ce86d7a60 | (Jonathan Worthington)++ | src/disp/boot.c
Fix a missing MVMROOT found by static analysis

jnthnwrthngtn nine: That's legit, I think. Hopefully the commit quiets it. Sadly, not the one I'm hunting, it seems. 16:23
Fixing lots of things at least but sigh, this one is taking a while to hunt 16:26
nine Missing root for `result` in try_update_cache_entry (tc, entry_ptr, &unlinked_getlexstatic, _6); at src/disp/inline_cache.c:31 used in D.23824 = result; at src/disp/inline_cache.c:33 16:28
Missing root for `id` in _4 = MVM_disp_program_run (tc, dp, record); at src/disp/inline_cache.c:133 used in disp = MVM_disp_registry_find (tc, id); at src/disp/inline_cache.c:147
jnthnwrthngtn Hm, is that newly added in what you sent before, or? 16:31
huh, disp_registery_find can allocate?
oh, maybe that's not what it is saying 16:33
nine I'm trying to re-generate the list of functions that can alloc. Sadly my past self sucked at giving me hints about how I came up with the original one... 16:34
jnthnwrthngtn: no, it means that disp_program_run can allocate and the variable is used later on in that disp_registry_find call 16:35
The MVM_ROOT needs to be around the MVM_disp_program_run call
jnthnwrthngtn Ah, right 16:37
In theory it can't ever allocate unless it reaches a dispatch terminal
And if it reaches one of those it'll be successful
Still, better safe than sorry 16:38
nine groceries & 16:41
Geth MoarVM/new-disp: 4dd0c3055a | (Jonathan Worthington)++ | src/disp/inline_cache.c
Ensure we root in case dispatch program allocates

In theory it should not in any paths that don't lead to a successful dispatch outcome, but that feels like playing with fire, so add the roots anyway.
nine Missing root for `returner` in caller = MVM_callstack_unwind_frame (tc, _22, &thunked); at src/core/frame.c:1058 used in returner->caller = 0B; at src/core/frame.c:1060 16:48
Missing root for `frame` in _55 = remove_one_frame (tc, 1); at src/core/frame.c:1297 used in frame.247_57 = frame; at src/core/frame.c:1234 16:49
Missing root for `return_value` in _55 = remove_one_frame (tc, 1); at src/core/frame.c:1297 used in return_value.233_21 = return_value; at src/core/frame.c:1246
16:49 sena_kun left 17:11 dogbert11 joined 17:29 squashable6 left 17:31 squashable6 joined 18:02 Geth left, Geth joined, reportable6 left, reportable6 joined 19:08 linkable6 left 19:10 linkable6 joined 20:10 evalable6 left, linkable6 left 20:11 linkable6 joined 20:12 evalable6 joined 20:20 sena_kun joined
Geth MoarVM/new-disp: 4176a7f98c | (Jonathan Worthington)++ | src/core/frame.c
Fix two more missing GC rootings

Frame unwinding can now potentially lead to allocations if, for example, there is lazy deopt.
21:44 Util joined 22:09 Altai-man joined 22:13 Kaipi left 22:14 Kaipi joined 22:19 Kaipi left, Kaipi joined 22:23 Merfont joined 22:24 Kaipi left 22:27 Merfont left 22:32 Kaiepi joined 23:24 Altai-man left