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:22 linkable6 joined 01:29 frost joined 05:16 sourceable6 left, benchable6 left, coverable6 left, releasable6 left, bisectable6 left, squashable6 left, linkable6 left, bloatable6 left, reportable6 left, nativecallable6 left, notable6 left, shareable6 left, greppable6 left, evalable6 left, tellable6 left, quotable6 left, unicodable6 left, committable6 left, statisfiable6 left 05:17 sourceable6 joined 05:18 tellable6 joined 05:19 notable6 joined, coverable6 joined, reportable6 joined, committable6 joined, unicodable6 joined, squashable6 joined, bisectable6 joined, benchable6 joined 05:20 bloatable6 joined, shareable6 joined, quotable6 joined 06:02 reportable6 left 06:05 reportable6 joined 06:17 linkable6 joined 06:19 releasable6 joined 07:11 frost left 07:17 nativecallable6 joined, evalable6 joined 07:18 statisfiable6 joined 07:19 greppable6 joined 07:21 patrickb joined 07:28 frost joined 08:50 evalable6 left, linkable6 left
lizmat misses the moarning banter 09:11
dogbert17 yes, it's very silent today, perhaps people are fighting their coffee machines 09:32
both Nine and Nicholas are missing and they both tend to show up quite early in the moarning 09:39
lizmat I think jnthnwrthngtn is working on their presentations for the TRC 09:44
lizmat has done that part :-)
dogbert17 sounds like you're well prepared then 09:45
jnthnwrthngtn moarning o/ 09:46
lizmat: You're waaay ahead of me, then :)
lizmat yeah, that rarely happens :-)
jnthnwrthngtn I'm...not only doing TRC prep this week, but also trying to finish up a $dayjob task that I put off for the last couple of weeks because I was having too much fun with new-disp. Oh, plus dental work, and as if that wasn't already enough, I have to go to the interior ministry now this week too. 09:47
nine cancels his anticipation of new-disp goodies for this week 09:49
lizmat is writing Javascript for the first time in a *looong* time 09:50
09:51 patrickb left 09:52 patrickb joined, linkable6 joined 09:53 evalable6 joined
jnthnwrthngtn lizmat: Enjoying the improvements? 09:55
lizmat well... I'm glad I don't need to cater for different browsers anymore 09:56
Altai-man lizmat, what are you writing?
jnthnwrthngtn I was more thinking the langauge improvements, but yes, this is also welcome :)
dogbert17 is the a way to get hold of all output from a 'make test' run, not just the condensed version we usuually get? 09:57
lizmat working on the logs server :-)
nine dogbert17: yes, there is 09:58
dogbert17 nine: please elaborate :)
nine dogbert17: build.opensuse.org/package/view_fi...f?expand=1
Of course, simply having TAP::Harness::Archive installed would suffice. I just wanted to avoid the build dependency for the RPM package. 09:59
dogbert17 the reason I'm asking is that I get some random test failures when running 'MVM_SPESH_NODELAY=1 make test TEST_JOBS=<more jobs than you have CPU's> 10:02
but I can't see what's happening due to the lack of detail
10:04 patrickb left, patrickb joined 10:06 patrickb left, patrickb joined 10:08 patrickb left, patrickb joined 10:10 patrickb left, patrickb joined 10:12 patrickb left, patrickb joined 10:14 patrickb left, patrickb joined 10:16 patrickb left, patrickb joined 10:18 patrickb left, patrickb joined 10:20 patrickb left, patrickb joined 10:22 patrickb left, patrickb joined 10:24 patrickb left, patrickb joined 10:26 patrickb left, patrickb joined 10:28 patrickb left, patrickb joined 10:30 patrickb left, patrickb joined 10:32 patrickb left, patrickb joined
dogbert17 nine: it worked and now I can, for example, see the following: 10:33
dogbert@dogbert-VirtualBox:/tmp$ cat t/05-messages/02-errors.t
===SORRY!===
Cannot find method 'push_code_object' on object of type Perl6::World
I ran 'MVM_SPESH_NODELAY=1 make test TEST_JOBS=10' my vm only has 8 cores allocated 10:35
10:38 patrickb left, patrickb joined 10:40 patrickb left, patrickb joined 10:42 patrickb left, patrickb joined 10:46 patrickb left, patrickb joined
nine What a weird error 10:48
10:49 Kaipi is now known as Kaiepi 10:50 Kaiepi left, Kaiepi joined
nine Apparently I can reproduce it sometimes when running TEST_JOBS=40 make spectest in another shell 10:51
10:55 patrickb left, patrickb joined 10:57 patrickb left, sena_kun joined, patrickb joined 10:59 patrickb left, patrickb joined 11:00 patrickb left 11:01 patrickb joined 11:02 patrickb left 11:03 patrickb joined 11:04 patrickb left 11:05 patrickb joined 11:06 patrickb left 11:07 patrickb joined 11:09 patrickb left, patrickb joined 11:11 patrickb left, patrickb joined 11:13 patrickb left, patrickb joined 11:15 patrickb left, patrickb joined
dogbert17 yes, it's very strange 11:17
11:19 patrickb left, patrickb joined 11:23 patrickb left 11:24 patrickb joined 11:25 patrickb left 11:26 patrickb joined 11:29 patrickb left 11:30 patrickb joined 11:31 patrickb left, patrickb joined 11:33 patrickb left, patrickb joined 11:35 patrickb left, patrickb joined 11:37 patrickb left, patrickb joined 11:39 patrickb left, patrickb joined 11:41 patrickb left, patrickb joined 11:43 patrickb left, patrickb joined 11:45 patrickb left, patrickb joined 11:49 patrickb left, patrickb joined 11:51 patrickb left, patrickb joined 11:53 patrickb left, patrickb joined 11:55 patrickb left, patrickb joined 11:57 patrickb left, patrickb joined 11:59 patrickb left, patrickb joined 12:01 patrickb left, patrickb joined 12:03 reportable6 left 12:04 reportable6 joined 12:07 patrickb left, patrickb joined 12:09 patrickb left, patrickb joined 12:11 patrickb left, patrickb joined 12:13 patrickb left 12:14 patrickb joined 12:17 patrickb left 12:18 patrickb joined 12:19 patrickb left 12:20 patrickb joined 12:21 patrickb left 12:22 patrickb joined 12:23 patrickb left 12:24 patrickb joined 12:25 patrickb left 12:26 patrickb joined 12:27 patrickb left 12:28 patrickb joined 12:29 patrickb left 12:30 patrickb joined 12:36 patrickb left, patrickb joined 12:38 patrickb left, patrickb joined 12:40 patrickb left, patrickb joined 12:46 patrickb left
lizmat m: say "hi" # just checking 13:13
camelia hi
dogbert17 Nine: I managed to get --ll-exception output for the weird error. Dunno if it helps though. 13:15
Cannot find method 'push_code_object' on object of type Perl6::World
at gen/moar/World.nqp:2536 (/home/dogbert/repos/rakudo/blib/Perl6/World.moarvm:stub_code_object) 13:16
from gen/moar/World.nqp:2527 (/home/dogbert/repos/rakudo/blib/Perl6/World.moarvm:create_code_object)
from gen/moar/World.nqp:2518 (/home/dogbert/repos/rakudo/blib/Perl6/World.moarvm:create_code_obj_and_add_child)
from gen/moar/World.nqp:2503 (/home/dogbert/repos/rakudo/blib/Perl6/World.moarvm:create_thunk)
from gen/moar/Actions.nqp:5933 (/home/dogbert/repos/rakudo/blib/Perl6/Actions.moarvm:trait_mod:sym<is>)
sena_kun just saw this error with `❌ TST: ===SORRY!=== Error while compiling /mnt/data/pakku/.cache/NCurses/NCurses-0.6.3-githubazawawi-/t/02-basic.t` 13:18
nine dogbert17: Perl6::World is indeed wrong there. That method is found on Perl6CompilationContext (a lexically defined class inside Perl6::World) 13:29
dogbert17 on my system it's enough to run 'while MVM_SPESH_NODELAY=1 ./rakudo-m -c --ll-exception -Ilib t/04-nativecall/02-simple-args.t; do :; done' for a while 13:41
nine I wonder if there's a way to golf this. 13:44
dogbert17 FWIW, if I run with --stagestats it says 'Stage start' but crashes before writing 'Stage parse' 13:45
jnthnwrthngtn Is it sensitive to inlining, for example? 13:49
nine jnthnwrthngtn: looks like 13:56
15 minutes with loops in 18 konsole tabs have not produced a single error with inlining disabled 14:07
at the same time the one loop with inlining enabled threw multiple
Nicholas rr!
jnthnwrthngtn
.oO( What's a pirate's favorite debugger? )
14:08
Nicholas (I found something in Perl 5 by having a shell loop that repeated until there was a failure)
dogbert17 where's timo, he usually like to tout the virtues of rr
Nicholas good *, timo :-) 14:09
timo :) 14:12
nine Good news: turning on the spesh log seems to fix this issue! 14:13
timo so, could be timing related? 14:21
nine That's my guess. Odd though that MVM_SPESH_BLOCKING=1 doesn't make it reliable either 14:23
Which...usually indicates that it's not timing, but memory contents 14:24
14:31 frost left
timo right. oof. 14:33
well, we do malloc some in the spesh log process
like when we turn mvm strings into c strings
wanna try removing those from the spesh logging code to see if that does anything? 14:34
nine Well, the first hard step seems to be reproducing it in a debug build 14:38
ah, finally :) At least that 14:39
At least it breaks with MVM_SPESH_INLINE_LOG=1. However, the case where it failed and 2 cases where it succeeded log exactly the same information about both push_code_object (the callee) and stub_code_object (the failing caller). And push_code_object actually gets inlined into stub_code_object 15:10
Nicholas rr!
nine 372 successfull runs in rr and counting... 15:11
timo did you try the chaos mode that rr has?
nine just turned that on
timo should have pointed it out earlier
nine FWIW I don't think I've ever seen chaos mode really helping. I have had some success with --num-cpu-ticks= though 15:15
sena_kun The number of modules having difficulties with new-disp (including some false positives, alas) decreased from 62 to 37! 15:37
nine Run 660 failed in rr! 15:40
jnthnwrthngtn Just 37...wow 15:51
nine Does anyone have any hypotheses about how we could up with a Perl6::World instead of a Perl6CompilationContext object in that dispatch that I could have a closer look at in that rr session? 15:53
lizmat since Perl6CompilationContext is a defined inside Perl6::World, an off-by-one in lookup of parents ? 15:55
nine The line that's failing is self.context().push_code_object($code); with method context() { $!context } defined in HLL::World 15:56
I find it a bit odd that there's nothing about method context in the inline log 15:57
jnthnwrthngtn nine: Does the code-gen look OK in the spesh log? 16:02
nine: Also, was there a deopt shortly before the effort? 16:03
uh, I'm not sure what word I wanted but "effort" was not it :D 16:05
oh, probably error
nine jnthnwrthngtn: haven't managed to get a spesh log yet :/ 16:33
Backtrace is: #0 lang_meth_not_found (tc=0x2130e70, arg_info=...) at src/disp/boot.c:513 #1 0x00002d2f3838126b in run_dispatch (tc=0x2130e70, record=0x5d65160cae98, disp=0x214a7f4, capture=0x7ab1593ee8f0, thunked=0x7ffd9e2e8ebc) at src/disp/program.c:482 #2 0x00002d2f3838912b in MVM_disp_program_record_end (tc=0x2130e70, record=0x5d65160cae98, thunked=0x7ffd9e2e8ebc) at src/disp/program.c:2468 #3 16:36
0x00002d2f382cc932 in handle_end_of_dispatch_record (tc=0x2130e70, thunked=0x7ffd9e2e8ebc) at src/core/callstack.c:353 #4 0x00002d2f382ccf3a in MVM_callstack_unwind_frame (tc=0x2130e70, exceptional=0 '\000', thunked=0x7ffd9e2e8ebc) at src/core/callstack.c:463 #5 0x00002d2f382c883f in remove_one_frame (tc=0x2130e70, unwind=0 '\000') at src/core/frame.c:996 #6 0x00002d2f382c8e06 in MVM_frame_try_return
(tc=0x2130e70) at src/core/frame.c:1122 #7 0x00002d2f3828aa96 in MVM_interp_run (tc=0x2130e70, initial_invoke=0x2d2f3841ebbe <toplevel_initial_invoke>, invoke_data=0x21e92e0, outer_runloop=0x0) at src/core/interp.c:570
Does that look sensible (except for missing newlines)?
The MVM_frame_try_return surprises me a little since we are kina in the middle of stub_code_object 16:37
s/kina/kinda/
jnthnwrthngtn Well, we're probably returning from a dispatcher (implemented in bytecode), and the lang-meth_not_found dispatcher (in C) thunks off that 16:38
So that bit is fine
If we're in this place, we're recording a new dispatch program
If we're in this place, we're recording a new dispatch program 16:39
There's a few possible hypotheses from that
nine Yeah, the frame we're returning from looks very dispatchy 16:40
jnthnwrthngtn An interesting question is if we're just after a deopt
You can probably reverse breakpoint the deopt impl and see if the frame below the dispatch-y one is the same
The other interesting thing is to look at the frame below the one we're currently returning from, which is the one with the dispatch instruction in it that we were trying to handle 16:41
Firstly, is it specialized?
Second, we should be just after a dispatch instruction; look at the bytecode of the frame and see what the instruction is before, and also what registers were passed. Do they look sane? 16:42
nine There was indeed a deopt in stub_code_object
jnthnwrthngtn If there was a deopt and the values to the dispatch look bogus (e.g. wrong invocant) then it's possible we're looking at a deopt bug *but* that doesn't at all explain why this only happens sometimes 16:43
nine We deopted because of a failed sp_guardconc. Wanted a concrete Str, got a Block type object 16:45
Or rather a Block STable
Oh, no, it's actually a defined Block. Got confused there 16:46
jnthnwrthngtn Hmm. Does a Block getting to that point instead of a Str make any sense whatsoever? 16:47
Or is the deopt likely "garbage in, deopt out"/
nine Looking at stub_code_object it's actually expecting a Str that makes no sense. Also it looks like the failing sp_guardconc is pretty close to the end of the function, most notably after the inlined call to push_code_object 16:49
That's the bytecode of the frame with the failing sp_guardconc: gist.github.com/niner/23cf8d105dae...a28b0aef04 16:52
Ignore the arrow, we're actually at line 92 according to the register numbers I see
(rr) p GET_UI16(cur_op, -10)
$33 = 38
(rr) p GET_UI16(cur_op, -8)
$34 = 29
dinner& 16:53
[Coke] nine: did a build with your commits intead of my patches, all good. 17:15
also: 'set TEST_JOBS=1' 'nmake test' everything passes except psuedohash. 17:16
so it looks like the nativecall tests for new-disp on windows do not like being run at the same time as other tests. 17:21
It's not all of them, and I don't think the specific failures are the same each run. 17:22
nine [Coke]: do those test failures still happen after one successful run? 17:24
[Coke] yes. i did a test with jobs=1, then jobs=10; first all passed, then many NC fails. 17:28
(with psuedohash failing always)
nine Is that unique to new-disp or does it actually happen on master as well?
the NC failures
[Coke] uild of master hung for me today. will retry
... building fine now, weird 17:32
17:40 sena_kun left 17:53 Kaiepi left 17:59 Kaiepi joined 18:02 reportable6 left
[Coke] master *feels* slower on testing. should have timed it all 18:03
master TEST_JOBS=1 seems fine on nativecalll.
next... 18:04
no failure on pseudohash on master, btw. so that might e exacerbated y new-disp 18:06
nine Yes, pseudohash is known to fail 18:07
[Coke] concurrent nativecall failures are a new-disp regression 18:10
getting a debugger attached there will be harder, i think 18:11
te test files tht fail fail enitrely, with a wstat of 65280 18:19
18:54 MasterDuke joined 20:04 reportable6 joined
jnthnwrthngtn wonders how it's managed to regress those on Windows but not on Linux... 20:13
Nicholas I see pseudohash fail on linux on new-disp
jnthnwrthngtn Yes, I know about that; I meant the nativecall ones 20:14
Nicholas ah OK. Sorry to be confused
jnthnwrthngtn I wasn't especially clear, to be fair :)
20:48 Altai-man left 21:11 Altai-man joined 21:41 squashable6 left 21:44 squashable6 joined 22:13 squashable6 left 23:16 squashable6 joined