Fixed with https://github.com/rakudo/rakudo/commit/5658f4da07b44d492a3d35d57fa76939822d2c66
Thanks for the report! > On 7 Apr 2022, at 11:28, David Emanuel da Costa Santiago <deman...@gmail.com> > wrote: > > > Thanks for the information! > > I opened a bug in rakudo: > > https://github.com/rakudo/rakudo/issues/4853 > > > Regards, > David Santiago > > > Às 05:27 de 07/04/22, yary escreveu: >> For what it's worth, I'm on a mac, promise_test.raku hangs for me once in a >> while also. >> Welcome to Rakudo(tm) v2021.04. >> Implementing the Raku(tm) programming language v6.d. >> Built on MoarVM version 2021.04. >> Trying to reduce it, I would like to find a program that reliably tickles >> this bug and hangs every time... this variation does not crash for me (I ran >> it 100x) >> ### close_much.raku ### >> my Channel $ch .= new; >> my @proms = (1..2000).map: { >> start react { >> whenever $ch.closed { done } >> } >> }; >> $ch.close; >> await Promise.allof(@proms); >> say $*VM; >> ### >> this does not crash for me >> ### supply_to_many.raku ### >> my Channel $ch .= new; >> my $p1 = Supply.interval(3); >> my @proms = (1..2000).map: { >> start react { >> whenever $p1 { $ch.close } >> whenever $ch.closed { done } >> } >> }; >> await Promise.allof(@proms); >> say $*VM; >> ### >> This gives a sensible error "Cannot send a message on a closed channel" >> ### close_then_send.raku ### >> my Channel $ch .= new; >> # Close first, send next >> $ch.close; >> $ch.send("Hi!"); >> ### >> This does not crash for me, for different combinations of $senders & >> $receivers (1000,1) (1,1000) (1000,1000) >> ### config_send_recv.raku ### >> my Channel $ch .= new; >> my Supply $p1 .= interval(1); >> my ($senders, $receivers) = (2000,2); >> my Int $count = 0; >> my @sends = (1..$senders).map: { >> start react { >> whenever $p1 -> $interval { >> $ch.send($_); >> $ch.close if ++$count == $senders; >> } >> whenever $ch.closed { done } >> } >> }; >> my @proms = (1..$receivers).map: { >> start react { >> whenever $ch.closed { >> done; >> } >> whenever $ch -> $data { >> print "$_=$data|"; >> } >> } >> }; >> await Promise.allof(@proms,@sends); >> say $*VM; >> ### >> I didn't succeed - fun to try! >> -y >> On Tue, Apr 5, 2022 at 3:55 PM William Michels via perl6-users >> <perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote: >> Thanks for the bash loop. I'm seeing a few hangs, also some errors >> returned saying: >> "Unhandled exception in code scheduled on thread 4" >> (MacOS 11.11) >> On Tue, Apr 5, 2022 at 12:47 PM David Emanuel da Costa Santiago >> <deman...@gmail.com <mailto:deman...@gmail.com>> wrote: >> Hi William, >> when it fails or hangs it doesn't print the last line. >> Please check attached file for output of the stack. >> Since the failures are random, it's easier to invoke it in a loop: >> bash$ for i in $(seq 100); do raku test.raku; done >> If nothing is wrong with the code, i'll open a bug in the github. >> Regards, >> David Santiago >> Às 21:37 de 05/04/22, William Michels escreveu: >> > No problems so far. >> > >> > say $*VM; #add as last line, returns: >> > moar (2021.06) >> > >> > On Tue, Apr 5, 2022 at 11:06 AM David Emanuel da Costa Santiago >> > <deman...@gmail.com <mailto:deman...@gmail.com> >> <mailto:deman...@gmail.com <mailto:deman...@gmail.com>>> wrote: >> > >> > Hi, >> > >> > >> > >> > I'm trying to learn about promises, supplies and >> channels. So i made >> > this code: >> > >> > """ >> > >> > my $p1 = Supply.interval(5); >> > my $p2 = Supply.interval(2); >> > my Channel $ch = Channel.new; >> > >> > my $prom = start react { >> > whenever $p1 -> $interval { >> > say "5"; >> > } >> > >> > whenever $p2 -> $interval { >> > say 2; >> > } >> > >> > whenever $ch.closed { >> > done; >> > } >> > >> > whenever $ch -> $data { >> > say "Data: $data"; >> > } >> > } >> > >> > my $prom2 = start react { >> > whenever $p1 -> $interval { >> > $ch.send("5.2"); >> > $ch.close; >> > } >> > whenever $ch.closed { >> > done; >> > } >> > } >> > >> > my @proms = ($prom, $prom2); >> > await Promise.allof(@proms); >> > >> > """ >> > >> > >> > >> > I don't see anything wrong with this but most of the >> times runs fine, >> > sometimes hangs, sometimes throw exception. Am i doing >> something that i >> > shouldn't be doing? >> > >> > $ raku --version >> > Welcome to Rakudo™ v2022.03-130-g8f7cc0847. >> > Implementing the Raku® Programming Language v6.d. >> > Built on MoarVM version 2022.03-13-ga3476e286. >> > >> > >> > >> > Regards, >> > David Santiago >> >