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,
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,
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 }
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 }
FWIW it always did that, not a regression.
On 2017-10-05 21:10:39, j.david.l...@gmail.com wrote:
> This short program crashes reliably (with a segmentation fault) on my
> system:
>
> ```
> #!/usr/bin/env perl6
>
> use v6.c;
>
> my $lock = Lock.new;
> my $set = SetHash.new;
> await (^12).map: {
>
# New Ticket Created by David Lowe
# Please include the string: [perl #132225]
# in the subject line of all future correspondence about this issue.
# https://rt.perl.org/Ticket/Display.html?id=132225 >
This short program crashes reliably (with a segmentation fault) on my
system:
```