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:05 reportable6 joined 00:41 patrickb left 00:42 patrickb joined 01:07 linkable6 joined 02:08 patrickb left 04:07 evalable6 left, linkable6 left, evalable6 joined 05:07 evalable6 left 05:09 evalable6 joined 05:10 squashable6 left 06:03 reportable6 left 06:05 reportable6 joined 06:09 linkable6 joined 07:51 Colt left 08:12 squashable6 joined 08:14 Colt joined 11:19 patrickb joined 12:02 reportable6 left 12:05 reportable6 joined
MasterDuke well, now all tests pass with MVM_VECTOR_* macros using the fsa, as long as i set MVM_JIT_EXPR_DISABLE=1 12:09
but i get an insta-`Unhandled exception: Cannot find method 'say' on object of type NQPFileHandle` in the nqp build without that 12:10
github.com/MoarVM/MoarVM/blob/mast...#L248-L253 isn't correct, right? 13:27
because if FSA_SIZE_DEBUG is enabled, MVM_fixed_size_alloc returns the address of the `memory` field inside the MVMFixedSizeAllocDebug (up at line 196), not the address of the entire struct 13:30
and then MVM_fixed_size_realloc_at_safepoint returns the MVMFixedSizeAllocDebug instead of the address of the `memory` field 13:31
shouldn't it be this? gist.github.com/MasterDuke17/6065d...820f16249f 13:32
13:50 RakuIRCLogger left, lizmat_ joined, Geth left, TempIRCLogger left 13:51 lizmat left
nine MasterDuke: no, it's not as much wrong as it is confusing. That line should read void *new_p = MVM_fixed_size_alloc(tc, al, new_bytes); 14:23
Since the wrongly typed pointer is never dereferenced, it doesn't matter that much. A pointer is a pointer after all. But it's clearly misleading the reader 14:25
MasterDuke ah, true
hm. even though everything runs fine with MVM_JIT_EXPR_DISABLE=1, if i turn on FSA_SIZE_DEBUG i get an invalid free in MVM_fixed_size_realloc. well, maybe if i fix whatever is going on it'll also fix the expr jit... 14:31
nine Geth down? 16:28
github.com/MoarVM/MoarVM/commit/bd...6b168f6a47 Properly extend int return values of native calls to 64 bits 16:31
Native functions leave it to their caller to extend values with a size of less than a full register width (as the caller may alternatively simply access only the relevant part of the register). So we need to do that as well before we write the full register back into the VM register. The old native call JIT did this right already, so lets just salvage the code.
This takes care of the Cro::TLS test failures 16:32
lizmat_: can you please test Ecosystem::Archive with this fix applied?
16:50 evalable6 left, linkable6 left 16:52 linkable6 joined 17:48 lizmat_ left, lizmat joined, TempIRCLogger joined 17:49 Geth joined
lizmat nine: Geth is up again, sadly I don't have rights to re-send webhooks 17:50
18:02 reportable6 left
nine lizmat: please say that my commit fixed Ecosystem::Archive :) 18:11
lizmat building 18:12
nine: good news, indeed it does 18:27
shall I bump MoarVM accordingly ?
dogbert17 lizmat: go for it :) there's already another fix there waiting for a bump 18:31
lizmat oki
let's see if I can do this without screwing up -)
dogbert17 I suspect the bump will be a success 18:32
nine I have full confidence :) 18:37
The sad part is that I actually suspected exactly this kind of issue 2 days ago. But the reduced test cases I tried ran all correctly 18:38
dogbert17 nine++, another bug squashed 18:39
soon ther won't be any bugs left :)
*there
nine I've had a look at a t/spec/S32-num/complex.t (Issue #1607) but I just cannot reproduce it locally 18:44
dogbert17 oh no
MasterDuke had better luck
nine Oh, I just noticed that you were using a nursery of 52 not 50. Maybe that's it 18:45
MoarVM panic: Invalid owner in item added to GC worklist
dogbert17 yay 18:46
some bugs doesn't seem to get triggered if the nursery size is too low, e.g. 8k 18:49
nine Yes, they also don't get triggered with MVM_GC_DEBUG=3. That's why I have a local patch that extends an object's stay in the nursery to 15 GC rounds. But....you don't know what "slow" means until you tried that. 18:50
dogbert17 would it be possible to somehow protect the memory making up (fromspace ?) so that if someone tries to access something there the program goes kaboom? 18:52
using something like mprotect 18:53
lizmat so, after this, OO::Monitors is acting up again 18:55
dogbert17 ah, your nemesis module :)
lizmat so I nuke ~/.raku/precomp
no change
so I uninstall OO::Monitors and try to install it again
===> Testing: OO::Monitors:ver<1.1.1> 18:56
[OO::Monitors] ===SORRY!=== Error while compiling /Users/liz/.zef/store/OO-Monitors/8595BE0FFBD285610133E9324014AC5D91660646/t/BUILD.t
[OO::Monitors] Missing or wrong version of dependency 'gen/moar/stage2/NQPHLL.nqp' (from '/Users/liz/.zef/store/OO-Monitors/8595BE0FFBD285610133E9324014AC5D91660646/lib/OO/Monitors.pm6 (OO::Monitors)')
WAT ?
so I nuke ~/.zef/store/OO-Monitors 18:57
and then install of OO::Monitors works 18:58
dogbert17 strange 18:59
nine dogbert17: I think I actually did that mprotect thing once 19:03
dogbert17 cool 19:04
but I guess that there was a gotcha of some kind ?
nine dogbert17: look at the gc_torture branch
19:05 reportable6 joined
dogbert17 nine: will do 19:05
lizmat: I can confirm your problem, had oo-monitors cloned on my machine and got the same error when running its tests 19:07
lizmat so I figure that ~/.zef/store/OO-Monitors actually had a precomp in there 19:09
next time I will check before nuking 19:10
dogbert17 for me wiping the .precomp dir in the oo-monitors lib directory fixed the problem
lizmat dogbert17: in the zef store ? 19:11
ah, you had a local checkout of it 19:12
dogbert17 yes, a local checkout, I use it for testing a few modules that have been causing trouble in the past 19:14
19:20 TempIRCLogger left, TempIRCLogger joined
MasterDuke oh, this is interesting. so with FSA_SIZE_DEBUG enabled, MVM_fixed_size_realloc grabs a pointer 8 before the one you pass in github.com/MoarVM/MoarVM/blob/mast...loc.c#L225 20:26
however, this requires the passed in pointer to have originally been alloced by MVM_fixed_size_alloc*
whereas regular realloc can accept the NULL pointer, in which case it just acts like malloc 20:27
and the MVM_VECTOR_* macros can initialize things to NULL, and then call realloc on them, expecting it to act like malloc in that case. so converting them to use the fsa blows up FSA_SIZE_DEBUG 20:29
i guess i can just add an `if (p) { <existing path> } else { MVM_fixed_size_alloc() }` in the `#if FSA_SIZE_DEBUG` branch of MVM_fixed_size_realloc... 20:30
20:49 squashable6 left
nine sounds sensible 21:49
MasterDuke yeah, that seemed to work. but, i now get a `free(): invalid pointer` in MVM_gc_worklist_destroy... 22:08
so far this has been relatively straightforward. but before i start another more-involved-than-i-expected/hoped project, i guess i should see if people are going to be in favor of the outcome 22:09
i've been doing this on top of github.com/MoarVM/MoarVM/pull/1608, though the changes aren't actually dependent on it 22:10
so maybe i should ask if i do end up with another commit for that PR (or a separate PR), that does correctly convert the MVM_VECTOR_* macros to use the fsa, is that something likely to be merged? 22:12
22:16 linkable6 left 22:17 linkable6 joined 22:51 squashable6 joined