It's a bit tricky to get a proper backtrace dump out of gdb for this,
but what I'm seeing is this:
this source file calls sink on a value from outside the protected lock,
which runs the FETCH of the SetHash, which calls nqp::existskey on the
internal elems hash.
That part is explosive, presumably
It's a bit tricky to get a proper backtrace dump out of gdb for this,
but what I'm seeing is this:
this source file calls sink on a value from outside the protected lock,
which runs the FETCH of the SetHash, which calls nqp::existskey on the
internal elems hash.
That part is explosive, presumably
This runs reliably when you let the lock-protected block return
something unrelated to the hash:
#!/usr/bin/env perl6
use v6.c;
my $lock = Lock.new;
my $set = SetHash.new;
await (^12).map: {
start {
for (^1000) {
$lock.protect: { $set<1> = True }
$lock.protect
This runs reliably when you let the lock-protected block return
something unrelated to the hash:
#!/usr/bin/env perl6
use v6.c;
my $lock = Lock.new;
my $set = SetHash.new;
await (^12).map: {
start {
for (^1000) {
$lock.protect: { $set<1> = True }
$lock.protect