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:03
reportable6 left,
reportable6 joined
00:11
frost joined
02:15
frost left
02:16
MasterDuke left
03:10
AlexDaniel left
03:12
AlexDaniel joined
03:35
AlexDaniel left
05:22
coverable6 left,
greppable6 left,
notable6 left,
statisfiable6 left,
benchable6 left,
shareable6 left,
bisectable6 left,
unicodable6 left,
quotable6 left,
committable6 left,
bloatable6 left,
linkable6 left,
releasable6 left,
reportable6 left,
evalable6 left,
nativecallable6 left,
sourceable6 left,
tellable6 left,
squashable6 left,
sourceable6 joined,
releasable6 joined,
notable6 joined,
benchable6 joined,
quotable6 joined,
squashable6 joined,
linkable6 joined,
committable6 joined
05:23
unicodable6 joined,
reportable6 joined,
coverable6 joined
05:24
tellable6 joined,
statisfiable6 joined,
bloatable6 joined,
nativecallable6 joined
05:25
evalable6 joined,
shareable6 joined,
greppable6 joined,
bisectable6 joined
05:26
squashable6 left
05:28
squashable6 joined
|
|||
nine | So those were legit? Cool :) | 05:57 | |
06:02
reportable6 left
06:03
reportable6 joined
|
|||
nine | jnthnwrthngtn: is the lack of break; for case MVMDispOpcodeGuardNoResumptionCaller and MVMDispOpcodeUpdateResumeState in MVM_disp_program_run intentional? | 06:17 | |
07:05
patrickb joined
07:25
AlexDaniel joined
07:49
AlexDaniel left
08:00
AlexDaniel joined
08:23
AlexDaniel left
08:33
AlexDaniel joined
08:40
AlexDaniel left
09:00
frost joined
09:06
AlexDaniel joined
10:09
linkable6 left,
evalable6 left
10:11
evalable6 joined,
linkable6 joined
10:22
Kaiepi left
10:23
Kaiepi joined
|
|||
jnthnwrthngtn | nine: Well, some of them were skating on thin ice: they invoked a relatively complex process that - if it gives a certain return value - should not have resulted in any allocations taking place. However, static analysis can't reasonably know that property, and there's a relatively high risk of a future change resulting in allocations happening, at which point we'd risk breakage. | 10:26 | |
So I decided on balance it's better to add them. Anything that gets really hot will end up with the dispatch program compiled into ops anyway. | |||
And parts of it spesh'd away | |||
And won't hit this. | 10:27 | ||
10:42
discord-raku-bot left
10:56
discord-raku-bot joined
12:02
reportable6 left
12:03
reportable6 joined
|
|||
jnthnwrthngtn | Time for round 3 of trying to figure out the bug, except I've also found a new way to make ASAN go boom early in the build | 12:27 | |
nine: Hm, that looks suspect; will look at it, though later (nothing in NQP uses resumption) | 12:31 | ||
Ah, turns out the reason I didn't see the ASAN blow-up before isn't because it's new, but because it only happens when MVM_SPESH_DISABLE=1 is set. So the opposite direction to the effect that flag normally causes... | 12:38 | ||
13:03
linkable6 left,
evalable6 left
13:06
linkable6 joined,
evalable6 joined
|
|||
jnthnwrthngtn | nine, sena_kun Even after I install the kernel module and install a newer rr (--version says 5.4.0) it still doesn't work for me; the error has changed to "[FATAL /build/rr-D6ACZo/rr-5.4.0/src/PerfCounters_x86.h:94:compute_cpu_microarch()] AMD CPU type 0x20f10 unknown" | 13:06 | |
Did you do a bleeding edge source install or some such? | |||
github.com/rr-debugger/rr/commit/9...67e9930ece seems to be the commit I need | 13:07 | ||
ah, yes, the release was before then | 13:08 | ||
sena_kun | jnthnwrthngtn, did you apply the patch from the wiki page? | ||
jnthnwrthngtn | sena_kun: The kernel module? | 13:09 | |
Yes | |||
But for rr itself I just installed the latest package, which it seems is too old. I guess I need to do a source build | |||
sena_kun | :/ | ||
jnthnwrthngtn | Did you get it working on your newest machine, btw? (Pretty sure it's the same CPU as I have.) | ||
sena_kun | perhaps, would be great if it works | ||
for the record I did not try it, as I don't debug C usually. | 13:10 | ||
so not so much info, sorry | |||
jnthnwrthngtn | Seems a source build works. Now i need to figure out hwo to use it :) | 13:17 | |
nine | jnthnwrthngtn: yes, running it on a 5950X | 13:18 | |
jnthnwrthngtn: rr record whatever-you-want-to-record ; rr replay | 13:19 | ||
then you're in gdb and have now the power of reverse-continue, reverse-next and reverse-step :) | |||
13:19
frost left
|
|||
nine | What I mostly do is watch -l foo->bar[1]->borked and reverse-continue | 13:20 | |
jnthnwrthngtn | Ah, I thought it wasn't working, but didn't realize it puts me at the start of execution and I needed to `continue` to get to the segv of interest :) | 13:23 | |
Brilliant. I thought this one should be good with rr, and indeed, it points right at the problem | 13:29 | ||
Geth | MoarVM/new-disp: d2d2628aa2 | (Jonathan Worthington)++ | src/6model/reprs/MVMCFunction.c Clear cur_args_callsite when adapting legacy args Otherwise we will try to GC mark the args buffer according to the legacy layout. |
13:34 | |
jnthnwrthngtn | nine++ sena_kun++ for rr help | 13:35 | |
Geth | MoarVM/new-disp: 54bdf4595d | (Jonathan Worthington)++ | src/6model/reprs/MVMCFunction.c Clear cur_args_callsite when adapting legacy args Otherwise we will try to GC mark the args buffer according to the legacy layout. |
13:48 | |
jnthnwrthngtn | Hmm, using rr record on the NQP runner seems not to work out? | 13:51 | |
(can't continue past the execve) | 13:57 | ||
patrickb | jnthn: The runner generated in the build dir uses execve, while the installed one doesn't. You could just debug the installed executable | 14:05 | |
tellable6 | patrickb, I'll pass your message to jnthn | ||
patrickb | jnthnwrthngtn: ^ | 14:11 | |
jnthnwrthngtn | patrickb: Ah, interesting, thanks. There's also a workaround with rr too that I ended up using | 14:22 | |
nine | what's the workaround? | 14:28 | |
jnthnwrthngtn | Use `when` to get teh current event number, then `rr reply -g X` where X is the value when gives you plus something big enough to get over the execve (unless you're looking for something super early in MoarVM execution, -g 2000 is plenty enough) | 14:30 | |
ops, *replay | |||
Unless the amount of work the runner does changes, you can just throw on the -g 2000 argument, I think | |||
The first step (run it until it hits the execve and using when) is just to get a reasonable guess at the number | 14:32 | ||
Sadly, the reverse debugger doesn't tell me much more about the bug I was hunting; it confirms a GC run scribbles over the arg name MVMString object, which fits what I already knew | 14:34 | ||
Argh, I found it :/ | 14:37 | ||
That was silly | |||
Geth | MoarVM/new-disp: 7a8c13942a | (Jonathan Worthington)++ | src/core/callsite.c Make sure to mark and cleanup all interns The `max_arity` is an inclusive endpoint, not an exclusive one. |
14:38 | |
jnthnwrthngtn | I nabbed the code from the interns cleanup, which already had the off-by-one, and didn't notice | 14:39 | |
With the explosive build fixed, it's back to the explosive tests. | 14:47 | ||
Nicholas | ASAN is excited by t/nqp/053-knowhow.t and t/nqp/090-findmethod.t | 15:03 | |
jnthnwrthngtn | Yes, those are the very ones I'm looking at. It's bizzare. | 15:33 | |
It seems we somehow try to return from the same frame twice... | 16:02 | ||
16:18
linkable6 left,
evalable6 joined,
evalable6 left
16:19
evalable6 joined,
linkable6 joined
|
|||
jnthnwrthngtn | Ah, which in turn is 'cus there's a stray flattening call stack record | 16:28 | |
Geth | MoarVM/new-disp: 4a26415193 | (Jonathan Worthington)++ | src/core/callstack.c Don't leave flattening records behind Otherwise, we'll be expecting bytecode frame records, won't find them, and will end up not leaving a bytecode frame when we expect to do so. Fixes the ASAN excitement in a couple of NQP tests. |
17:01 | |
jnthnwrthngtn | Now there's only one failing NQP test file for something that I've yet to decide should survive anyway | 17:02 | |
GC stressing shows up a few more failures in tests that don't show up in the build, curiously | 17:04 | ||
timo | an exciting read, the backlog for today and yesterday | 17:09 | |
Nicholas | curious, yes. | 17:34 | |
For me, ASAN is bored again. t/nqp/097-hll.t fails 39, 40, 41, 42 then aborts with lang-meth-call cannot work out how to dispatch on type '(null)' | |||
but I assume that you know that. | |||
timo | who putted a null in there | 17:40 | |
Nicholas | given the 4 preceding test failures, I suspect that it's just confused. | 17:41 | |
timo | foncused | 17:43 | |
jnthnwrthngtn | Reuse code they said. There'll be less bugs they said. | 17:47 | |
Nicholas | They were wrong. There would be fewer :-) | 17:48 | |
Nicholas ducks | |||
Geth | MoarVM/new-disp: 0eab228b36 | (Jonathan Worthington)++ | 3 files Distinguish cases of dispatch run record unwinding When we are unwinding it becaues of a success, we want to remove any flattening record that lies underneath it, because the invocation is completed. This was fixed in the previous commit. Unfortunately, this code was also used when we want to drop a dispatch run record because we didn't meet the guards - in which case we're going to try another dispatch program or record a new one, and in this case we certainly do not want to throw away the args flattening frame, because we need the flattened args for the next thing we try, and the eventual dispatch target. |
17:51 | |
jnthnwrthngtn | Well, arguably this was half a bug in that it was right in half the cases :) | 17:53 | |
Anyway, yay, now NQP builds and passes tests with the FSA debug and small nursery and GC debug checks | |||
And yes, the NQP test that fails is the one where I'm pondering whether to toss out the mechanism in question entirely | |||
It can stay failing until I make my mind up :) | 17:54 | ||
Nicholas | how full is your beer fridge? Does that test need to worry? | ||
jnthnwrthngtn | The beer fridge is very full due to a restock earlier this week. It was a challenge to fit it all in, especially keeping it sorted by type of beer. | ||
The NQP test that fails is lower priority than doing the Rakudo build fixing at this point, I think | 17:55 | ||
And with GC stressing that now says segfault | 17:56 | ||
Nicholas | That sounds like the right trade off, as I can assume that you know what the implications of that test (failing) means | ||
jnthnwrthngtn | Yeah, I need to decide what to do about method calls where we don't find the method | 17:58 | |
And it's not quite so simple as "the Raku dispatch throws the Raku error" because then we get inter-lang calls wrong | |||
Without the GC stressing and stuff Raku's build now reaches the point I expected it to break. | |||
+++ Compiling blib/Perl6/BOOTSTRAP/v6c.moarvm | 17:59 | ||
lang-meth-call cannot work out how to dispatch on type 'Attribute' | |||
.oO( This is not the greatest bug in the world...this is just Attribute... ) |
|||
Nicholas | oh noes | 18:00 | |
jnthnwrthngtn | That happens because in the bootstrap we didn't yet set up the dispatchers, so it's a timing/ordering problem, though maybe solvable by temporarily using the NQP dispatcher in place of the Rakudo one, because it knows enough | ||
I'll try it, but right now I want a) dinner, b) to make the beer fridge less crowded | 18:01 | ||
18:02
reportable6 left
18:05
reportable6 joined
|
|||
timo | i'm sorry, nqp dispatcher, but you know to much ... *blam* | 18:08 | |
20:24
[Coke] left,
[Coke] joined
|
|||
nine | The word attribute will never be the same | 20:28 | |
Though...I like the song and the video, so it's ok :) | 20:29 | ||
japhb | OK, now I'm wondering what video you're talking about, and whether I'd already heard the song and forgotten it or never heard it. | 21:11 | |
21:39
patrickb left
23:43
cognominal left
|