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.
Nicholas good *able6, #moarvm 07:17
lizmat good moarning :-) 09:16
jnthnwrthngtn moarning o/ 10:21
Nicholas \o 10:23
are you feeling better today?
jnthnwrthngtn Throat certainly feels less swollen. 10:26
And nose a bit less stuffy.
Brain feels like it's in backwards though. 10:27
lizmat consider using <== instead of ==> ? 10:37
jnthnwrthngtn :D 10:38
fwiw, suspect I'll be quite busy with current $dayjob thing for this/next week, but will have moar Raku time after that :)
nine jnthnwrthngtn: will you be able to review? 10:40
jnthnwrthngtn nine: Yes 10:41
And answer questions, as I have been. Just not writing much code. :) 10:42
At least that means I'm introducing less bugs!
nine fewer even :D
Nicholas I was going to say that too 10:43
but then I felt it rather optimisitc
countable bugs would imply finite bugs. It might be possible to find them all.
nine Well, no. Countable does not imply finite. "A countable set is either a finite set or a countably infinite set." according to Wikipedia. You are however absolutely right about the impossibility to find (and thus fix) all bugs, since every bugfix has a non-zero chance for introducing new bugs. So while lim(#bugs) -> 0, the number should actually never reach 0. 10:59
Geth MoarVM/fix_unwind_missing_frame: 9d794f8cad | (Stefan Seifert)++ | 2 files
Fix unwind missing a frame after special return

When we tried to add a special return handler onto the call stack and we had to allocate a new callstack region for this call stack record, the unwind following the execution of the special return handler missed a frame. This was because when we called MVM_callstack_unwind, on top of the callstack there was a region record instead of a frame. MVM_callstack_unwind however assumes that a region record instead of a frame. MVM_callstack_unwind however assumes that there is a frame on top and so didn't actually unwind the frame.
Fix by cleaning up the callstack before running a special return or unwind handler.
11:00
nine jnthnwrthngtn: while testing this ^ fix, I set MVM_CALLSTACK_DEFAULT_REGION_SIZE to 1024 to trigger the conditions more often. Since there's handling for allocations exceeding this default size, setting it so low should be safe, shouldn't it? Because some tests start to fail when I do 11:03
jnthnwrthngtn nine: I'd think so, and those failures are worth a look too. 11:12
nine on it
nine Reduced region size may trigger it but what I then see looks more like a classic spesh issue (uninitialized register after deopt). The register in question should be written to by a PHI node and carries the appropriate deopt usage markers. The other side of the PHI (just one version) doesn't. So PEA optimized away the writer. 14:30
The PHI node is a converted return_o of an inlinee
nine I could fix this particular segfault by copying the deopt_users from the PHI's target to the source in rewrite_returns. Don't know if that's a sensible fix though. 17:08
The other spec test failures with reduced region default size are all around signature unpacking. Unfortunately they are high level errors, so not as easy to debug. 17:10
See errors like "Too many positionals passed to 'foo'; expected 2 arguments but got 3 in sub-signature", "Type check failed in binding to parameter '$value'; expected Int but got Str ("x")", "Unexpected named argument 'her' passed in sub-signature of parameter c"
lizmat nine: that feels like a bitmap got overridden somehow 17:59
patrickb nine: Unsure if it's relevant, but "Too many positionals passed to 'foo'; expected 2 arguments but got 3 in sub-signature" reminded me of github.com/croservices/cro-http/issues/128 18:10