On Fri Apr 22 08:55:46 2016, jns...@gellyfish.co.uk wrote:
> The code:
> 
> sub sleep_sort (*@list where .all >= 0) {
> 
> my $channel = Channel.new;
> 
> await @list.map: -> $delay {
>   Promise.start({
>     sleep $delay / 1000;
>     $channel.send($delay);
>   });
> 
> };
> 
> $channel.close;
> 
> return $channel.list;
> }
> 
> say sleep_sort(3,2,1,5,4) for (1 ... 10000);
> 
> 
> And gives rise to this back trace:
> #0  0x00007ffff73e8a98 in raise () from /lib64/libc.so.6
> No symbol table info available.
> #1  0x00007ffff73ea69a in abort () from /lib64/libc.so.6
> No symbol table info available.
> #2  0x00007ffff79ac867 in uv_mutex_destroy ()
>    from /home/jonathan/.rakudobrew/moar-nom/install/lib/libmoar.so
> No symbol table info available.
> #3  0x00007ffff7930c9d in gc_free ()
>    from /home/jonathan/.rakudobrew/moar-nom/install/lib/libmoar.so
> No symbol table info available.

Looks like the mutex missing unlock bug that I fixed in Rakudo commit 
48c2af6d059. Also, I've run the code in question (all 10,000 iterations of it) 
a bunch of times and not seen any failures. For good measure, I've also added 
it as a stress test in S17-channel/stress.t.

/jnthn

Reply via email to