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:06 reportable6 left 00:08 reportable6 joined 00:10 Geth left 00:11 Geth joined, lizmat joined, RakuIRCLogger joined 00:56 vrurg_ left, vrurg joined 02:14 RakuIRCLogger left 03:14 bisectable6 left, evalable6 left, notable6 left, reportable6 left, benchable6 left, bloatable6 left, sourceable6 left, releasable6 left, linkable6 left, statisfiable6 left, quotable6 left, unicodable6 left, coverable6 left, nativecallable6 left, squashable6 left, greppable6 left, tellable6 left, committable6 left, shareable6 left, releasable6 joined, quotable6 joined, coverable6 joined 03:15 unicodable6 joined, bloatable6 joined, bisectable6 joined, benchable6 joined 03:16 shareable6 joined, nativecallable6 joined 03:17 statisfiable6 joined 03:38 frost joined 04:14 evalable6 joined 04:15 notable6 joined 04:16 linkable6 joined, tellable6 joined 04:21 frost left 04:27 frost joined 05:14 sourceable6 joined 05:16 greppable6 joined, committable6 joined 05:17 squashable6 joined 07:07 reportable6 joined 08:11 Shane__ left 09:23 Geth left, Geth joined 10:24 RakuIRCLogger joined 11:40 Geth left, Geth joined 11:42 frost left 11:44 Geth left, Geth joined 12:07 reportable6 left 12:08 reportable6 joined 13:25 statisfiable6 left, bisectable6 left, releasable6 left, nativecallable6 left, benchable6 left, reportable6 left, bloatable6 left, greppable6 left, shareable6 left, squashable6 left, unicodable6 left, committable6 left, coverable6 left, linkable6 left, quotable6 left, sourceable6 left, evalable6 left, notable6 left, tellable6 left, committable6 joined 13:26 squashable6 joined, bloatable6 joined, nativecallable6 joined, greppable6 joined 13:27 quotable6 joined, reportable6 joined 13:28 releasable6 joined, coverable6 joined, statisfiable6 joined 14:26 bisectable6 joined, linkable6 joined 14:27 sourceable6 joined, shareable6 joined, unicodable6 joined, tellable6 joined 15:16 Shane__ joined
nine I've made some progres on "No such private method 'SET-SELF' on Map". Looks like it's a frame walker/multi level inlining issue. Apparently at the current position where we look up ::?CLASS, we are multiple inlining levels deep. When looking for the correct inlined frame for the current position, we take the first, but at least in this case, the last matching one would be more appropriate. 15:17
15:27 notable6 joined
dogbert11 so you have now found a reliable way to repro the problem? 15:32
nine Not really reliable. Depends a lot on timing and I'm pretty sure hash order to end up with the right stack of inlinees. But at least I cought one gdb run in my net 15:33
I added a check to MVM_frame_find_lexical_by_name which abort()s if we find ::?CLASS in one of Map's methods. 15:34
dogbert11 so there's something wrong with the logic which retrieves the correct frame then? 15:42
nine Yes. I hope simply reversing the direction of search will be all that's required. But it'll take quite a bit of code reading to confirm that 15:54
An open question is if this only affects JITed code or if it could also happen in interpreted code. 16:04
Huh...if I read merge_graph correctly, we already add an inlinee's inlines to the inliner's inlines table before adding an entry for the inlinee itself. I.e. those indexes should already be ordered in a way to have the most nested first. With this, just looking for the first matching entry in ascending order would be correct. 16:12
So why doesn't this work in this case?
Just got the failure with disabled JIT, which is unsurprising, considering my finding ^^^ 16:13
Aaaah I've got it! 16:31
What happens is: we inline Map.keys which is just: Seq.new(Rakudo::Iterator.Mappy-keys(self)). Originally the spesh cand for keys does not have any inlines, so none can get stacked up front. 16:32
After inlining we run optimize_bb over the inlined graph to get a more optimized version. optimize_bb will then encounter those dispatches, try to optimize them and succeed at inlining. But those inlinees get added to the table after the original inlinee for keys. 16:33
So when we're looking for ::?CLASS, we'll find keys first, even though we really are in Mappy-keys. 16:34
This is a new-disp regression. Before, spesh was smart enough, not to try to inline calls in code we've just inlined: github.com/MoarVM/MoarVM/commit/bc...ca0edR2701 16:35
This protection got lost in translation.
lizmat nine++ 16:41
17:08 linkable6 left
nine 40 minutes without failure in the configuration that reproduced the issue pretty reliably in a minute or two. I think this fix may just work :) 17:15
dogbert11 nine++ 17:45
Geth MoarVM: 059c013b09 | (Stefan Seifert)++ | src/spesh/optimize.c
Fix frame walker finding wrong value after multi level inlining

The frame walker expects a spesh cand's inlinees to be sorted depth first. This has the benefit of the walker being able to just iterate over the inlinees and take the first one that covers the current bytecode position.
In the failing case we'd inlined Map.keys which is just: ... (20 more lines)
17:57
lizmat will do the bump 17:58
nine thanks :)
18:08 reportable6 left
MasterDuke nine++ nice one. whereas the nqp build is actually getting sigkilled when i try to use the new sp_getarg_u i added... 18:12
18:28 evalable6 joined, benchable6 joined 20:09 reportable6 joined, linkable6 joined
Geth MoarVM/master: 4 commits pushed by (Vittore F. Scolari)++, niner++ 20:24
lizmat bumpy time again ? 20:25
Geth MoarVM: 596b42154f | (Daniel Green)++ | 4 files
Add an MVM_nativecall_encode_string function

And have MVM_nativecall_unmarshal_string just call it with the right arguments. This lets us use MVM_nativecall_encode_string in some other NativeCall code that was partially duplicating the functionality in MVM_nativecall_unmarshal_string.
20:31
MoarVM: 4bf970a9df | (Daniel Green)++ | 3 files
Fix potential invalid free in nativecall

When using mimalloc this particular memory comes from libc's malloc(), so we have to use libc's free().
MoarVM: 278a705ebc | MasterDuke17++ (committed using GitHub Web editor) | 4 files
Merge pull request #1673 from MasterDuke17/fix_potential_invalid_free_with_mimalloc_in_nativecall
MasterDuke how about now 20:32
lizmat ok! 20:36
20:42 sena_kun left 20:43 sena_kun joined
lizmat bumped 20:54
MasterDuke nice 21:24
22:24 [Coke] left 22:29 [Coke] joined
Geth MoarVM: MasterDuke17++ created pull request #1681:
Fix spesh of named uint parameters
22:47
23:41 discord-raku-bot left, discord-raku-bot joined