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