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:07 reportable6 joined 00:16 kjp left, pamplemoussecach joined 00:23 kjp joined 00:49 pamplemoussecach left 00:54 pamplemoussecach joined 01:05 pamplemoussecach left 02:05 notable6 left, bisectable6 left, committable6 left, coverable6 left, linkable6 left, quotable6 left, statisfiable6 left, bloatable6 left, tellable6 left, reportable6 left, squashable6 left, benchable6 left, unicodable6 left, greppable6 left, sourceable6 left, nativecallable6 left, evalable6 left, shareable6 left, releasable6 left, tellable6 joined 02:06 shareable6 joined, statisfiable6 joined, evalable6 joined, greppable6 joined, reportable6 joined, committable6 joined 02:07 benchable6 joined, quotable6 joined, squashable6 joined, sourceable6 joined, releasable6 joined, nativecallable6 joined, notable6 joined, coverable6 joined 02:08 bloatable6 joined, unicodable6 joined, bisectable6 joined, linkable6 joined 02:52 pamplemoussecach joined, pamplemoussecach left 04:19 coverable6 left, bloatable6 left, notable6 left, unicodable6 left, greppable6 left, nativecallable6 left, benchable6 left, linkable6 left, reportable6 left, quotable6 left, tellable6 left, committable6 left, bisectable6 left, statisfiable6 left, releasable6 left, sourceable6 left, squashable6 left, evalable6 left, shareable6 left, shareable6 joined 04:20 sourceable6 joined, committable6 joined, unicodable6 joined, nativecallable6 joined, squashable6 joined, notable6 joined, reportable6 joined 04:21 evalable6 joined, tellable6 joined, greppable6 joined, linkable6 joined, quotable6 joined, benchable6 joined, bisectable6 joined 04:22 bloatable6 joined, coverable6 joined, releasable6 joined, statisfiable6 joined 04:29 vrurg_ left 04:30 vrurg joined 06:06 reportable6 left 06:07 reportable6 joined
Nicholas good *, * 06:14
09:06 notable6 left, benchable6 left, quotable6 left, bisectable6 left, bloatable6 left, unicodable6 left, committable6 left, sourceable6 left, tellable6 left, linkable6 left, reportable6 left, squashable6 left, evalable6 left, coverable6 left, nativecallable6 left, shareable6 left, greppable6 left, statisfiable6 left, releasable6 left, committable6 joined, releasable6 joined, sourceable6 joined, shareable6 joined 09:07 tellable6 joined, statisfiable6 joined, benchable6 joined 09:08 squashable6 joined, unicodable6 joined, notable6 joined, evalable6 joined, nativecallable6 joined, coverable6 joined, quotable6 joined 09:09 greppable6 joined, bloatable6 joined, reportable6 joined, bisectable6 joined, linkable6 joined 09:23 sena_kun joined 10:23 squashable6 left, benchable6 left, coverable6 left, bloatable6 left, tellable6 left, reportable6 left, bisectable6 left, notable6 left, shareable6 left, unicodable6 left, evalable6 left, committable6 left, nativecallable6 left, statisfiable6 left, linkable6 left, greppable6 left, quotable6 left, sourceable6 left, releasable6 left, evalable6 joined 10:24 coverable6 joined, notable6 joined, sourceable6 joined, squashable6 joined 10:25 committable6 joined, benchable6 joined, greppable6 joined, unicodable6 joined, nativecallable6 joined, shareable6 joined, bloatable6 joined 10:26 quotable6 joined, bisectable6 joined, statisfiable6 joined, tellable6 joined, releasable6 joined, reportable6 joined, linkable6 joined 11:26 coverable6 left, bisectable6 left, nativecallable6 left, shareable6 left, committable6 left, notable6 left, bloatable6 left, sourceable6 left, quotable6 left, tellable6 left, linkable6 left, evalable6 left, squashable6 left, greppable6 left, benchable6 left, statisfiable6 left, reportable6 left, unicodable6 left, releasable6 left, linkable6 joined 11:27 benchable6 joined, squashable6 joined, nativecallable6 joined, bisectable6 joined, shareable6 joined 11:28 committable6 joined, quotable6 joined, coverable6 joined, bloatable6 joined, greppable6 joined, tellable6 joined, unicodable6 joined 11:29 statisfiable6 joined, notable6 joined, sourceable6 joined, evalable6 joined, reportable6 joined, releasable6 joined 12:07 reportable6 left 12:10 reportable6 joined 13:27 pamplemoussecach joined 13:43 pamplemoussecach left
vrurg I had no idea, how unsafe our unicode ops are... 14:53
japhb Unsafe in what way? 15:04
16:17 linkable6 left, evalable6 left 16:18 evalable6 joined 16:19 linkable6 joined 16:25 discord-raku-bot left 16:26 discord-raku-bot joined 17:52 pamplemoussecach joined 18:07 reportable6 left 18:09 reportable6 joined, pamplemoussecach left 18:11 pamplemoussecach joined 18:12 pamplemoussecach left 18:14 pamplemoussecach joined 18:18 pamplemoussecach left 18:30 squashable6 left 18:31 squashable6 joined
vrurg japhb: hash is used inside 19:43
github.com/MoarVM/MoarVM/issues/1717 19:44
20:10 sena_kun left 20:11 sena_kun joined
timo so we may have to lock against simultaneous attempts to create the property_codes_by_seq_names and property_codes_by_names_aliases hashes? 20:25
ah, you also pointed out a spot in unicodey.pm6 where we do bindkey something into the $name2pref hash? 20:27
not sure if that hash is tiny or big 20:28
20:29 sena_kun left
timo brilliant, i got a crash reproduced 20:42
takes a lot of attempts 20:43
now the setting up of the property codes lookup hashes is protected by a mutex 20:58
Geth MoarVM: 9bc1beed70 | (Timo Paulssen)++ | 3 files
protect the two property code lookup hashes being set up with a mutex
21:00
timo vrurg: please grab this patch and see if your application still manages to crash
vrurg timo: Oh, I was about to complain that it is to be fixed at MoarVM. :)
The testing might take a week or two. Normally it fails like once in 3 days or so. 21:01
timo yeah
you can't up the load on this program?
vrurg Hence negative proof is better be ~3 times longer period.
timo if the problem is what i am fixing, it'd help to restart the program after it has successfully handled a few requests
vrurg Nah, it is VERY specific and a private property of my employee. 21:02
I'm stupid. The tools is cron-started. I can just change the schedule. 21:03
timo :D 21:04
you can run it in a tigh loop too perhaps
i'll give you my reproducer script too
use nqp; my $lmao = Promise.in(0.01); my $o; await do for ^1000 { start { await $lmao; $o = nqp::unipropcode(<ASCII ASCIIHexDigit AboveLeft Braille C CB changes_when_lowercased 3-Heth 3-Beth>.pick) } }; 21:05
just `rakudo -I. -Mdo_it -e ''` in a loop until it exits with nonzero
even though i made it do a lot less sleeping, it still takes very very long to crash sometimes 21:07
now it was two in very short succession :D
MoarVM oops: insert conflict, changeswhencasefolded is 1649993372, 38 != 96
MoarVM oops: insert conflict, prepended_concatenation_mark is 755562829, 92 != 6
vrurg It's so crazy day, I barely manage to share myself between tasks... Gonna try your script. 21:15
timo that's okay! 21:16
ith the patch i've run it for a couple of minutes and it's entirely too warm to heat up my cpu to 75degC for any extended amount of time uggghhh :)
without the "mvm oops" of course
vrurg Segfault for the first run on unpatched moar. Trying the second one. 21:25
timo oh wow segfault? not even a moarvm oops but a full blown segfault? 21:28
vrurg Right. 21:31
But the second run ā€“ it just runs so far.
timo do you happen to have a backtrace from that core dump or something? this is for your production script rather than my reproduction script? 21:32
vrurg There is no debug info. But the top frame is in MVM_uni_hash_insert 21:33
Invoked from MVM_unicode_name_to_property_code
timo good to know, i'll have a look that way 21:37
ah yes, that's one of the functions i've put a lock into
lizmat timo: the bindkey in unicodey is inside a protect block, so shouldn't be a race condition ? 21:40
timo i haven't looked at that yet :) :)
you mean the only way to ever get this crash is by going past unicodey.pm6 and straight to nqp code? 21:41
vrurg timo: don't forget, I'm still testing the unpatched version. Just wanna make sure it does fail for me with your test.
lizmat github.com/rakudo/rakudo/blob/mast...y.pm6#L155
timo aha 21:42
but the problem is the call to nqp::unipropcode
vrurg Unicode ops are used across NQP and Rakudo. The only valid protection is in their bodies.
timo that's why you can still get the race and explosion
lizmat fair enough, but then a protect block here wouldn't help either, so indeed a MoarVM solution is needed
timo ayup, the very one i've implemented i would dare claim :) 21:43
vrurg lizmat: But the protect is still needed there because $name2pref is getting updated.
timo i'm not sure what we are updating name2pref for exactly 21:44
lizmat yeah, that's rakudo land
vrurg A little improvement to the test made it fail more reliable. Two insert conflicts in a row ā€“ I'm convinced! ;) Moving on to trying the patch. 21:48
*reliably 21:53
22:09 linkable6 left, evalable6 left 22:11 evalable6 joined, linkable6 joined
vrurg 1900 repetitions of the patched version against as maximum as 72 for the unpatched one. I think the computer simulation proves the theory. ;) 22:12
timo that's a pretty good ratio of time-of-implementation to impact-of-fix i think
vrurg Not to mention that normally it fails within 30-40 repetitions.
timo: Absolutely!
timo thanks for bringing it up because i am not good at keeping up with our bug trackers 22:13
vrurg With this respect I always recall my three weeks spent on lost closures for precompiled code in BEGIN. Only to come up with a single-line patch. :) 22:14
timo sadly, it's not a "life hack" to just point me at every bug now because it just randomly happened that i saw the problem so quickly here (actually the golf to nqp::unipropcode was 99% of the work necessary)
phew
that is a rough one
vrurg This is a kind of teamwork I like. :) Thanks a lot, those `$ is not a currency sign` errors I am receiving once in a while are so annoying. 22:15
I wouldn't be surprised is another problem with `symbol not found in a module` errors would also be gone because that could be a memory corruption as a side effect. 22:16
timo aye, very unfortunate error reporting there
vrurg Anyway, thanks again! I'm going to re-focus on other tasks. 22:18
timo hey how much do you need to change in vikna to benefit from the resumption improvements we got from new-disp? do you have the opportunity to work on vikna more this year? 22:19
i don't actually have a real strong use case / need for vikna right now 22:23
it's just kinda cool that vikna more or less forced this whole piece of work to get started 22:24
vrurg timo: No spare time for the project, unfortunately. 22:52
I think it can be adapted for all the latest changes. But the biggest matter is to make use of C for canvas. 22:54
japhb vrurg: What are you using now? 22:55
vrurg Raku. :) 22:56
A lot of nqp::.
japhb Vikna is terminal-based, yes?
vrurg Right.
japhb Did you do it bespoke, or base it on Terminal::Print?
vrurg Up to some extent. Only the very basic functionality like getting the right ANSI codes. 22:57
Ah, and keyboard input.
japhb Interesting. Terminal::Print's compositing has had a fair amount of (pure Raku) tuning, so it's definitely capable of animation, though I remember something about Vikna's default compositing being more complex than Terminal::Print does out of the box. 23:00
vrurg japhb: consider overlapping windows, Z-order. 23:01
japhb Nod. I'm adding Z order in Terminal::Widgets (which is based on Terminal::Print) 23:03
vrurg What I haven't manage to done properly is synchronous drawing of frames and their client windows. 23:04
What about background scrolling/drawing of planes?
japhb Terminal::Print has a group of modules based around Terminal::Print::Animation that render (optionally in parallel) and composite their children recursively in order. This requires keeping said children in "z order" if you're overlapping. 23:07
That extra effort is part of why Terminal::Widgets will handle the Z reordering natively.
vrurg So, you could probably implement it all, eventually. 23:08
Vikna was a good experiment. But is unlikely to become a living thing. 23:09
japhb Of Vikna? Or of Vikna's rendering engine?
I thought that the cool bit of Vikna was the dispatch model?
Terminal::Widgets is using the HTML DOM "trickle down / bubble up" event model 23:10
Partially because it's reasonable to understand, and partly because I discovered that lots and lots of Supplies and Channels (my first event model design) caused a laggy UI that I didn't understand enough to be able to optimize. :-) 23:11
23:11 evalable6 left, linkable6 left 23:12 linkable6 joined
japhb (I wonder how many of my architectural decisions come down to "I'm not smart enough to make this awesome, so let's do something I *can* understand"?) 23:12
23:12 evalable6 joined
vrurg I seemingly almost failed to manage the supply/channel model too. Though it only affected the sync thing about frames/clients. 23:13
The big problem was in maintaining clipping masks. 23:14
Ok, I'll be afk for at least an hour.
japhb \o