Issue #17742 has been updated by wanabe (_ wanabe).


I think that it is fixed by 3acc81d9.
```
$ cat test.rb 
10.times do
  r = 100.times.map { Ractor.new{ Ractor.yield(receive.inspect) } }
  r.each{|x| x.send(rand) }
  s = r.map{|x| x.take }.min_by(&:size)
  puts s
  if s.size < 10
    puts "NG"
    exit(1)
  end
end
puts "OK"


$ git checkout 3acc81d9~; make -j6 miniruby
(snip)

$ ./miniruby -v0 -W0 test.rb 
ruby 3.1.0dev (2021-02-10T10:42:00Z save ad2c7f8a1e) [x86_64-linux]
1.0
NG

$ git checkout 3acc81d9; make -j6 miniruby
(snip)

$ ./miniruby -v0 -W0 test.rb
ruby 3.1.0dev (2021-02-10T10:44:47Z save 3acc81d9e4) [x86_64-linux]
0.546287565846683
0.872517066423101
0.6116641504914
0.162459674285925
0.95763200302244
0.970595118290251
0.297374935301547
0.59711433534198
0.71000638880677
0.722584124112161
OK

```

----------------------------------------
Bug #17742: Random.rand gets wrong after using Ractor and requiring benchmark
https://bugs.ruby-lang.org/issues/17742#change-91053

* Author: andras / frontfoo.com (Andras Horvath)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
Dear All,

I use Ruby v3.0.0 on Ubuntu 18.04 x64 compiled from source the recommended way and when I run the following code:

require "benchmark"; r = []; 3.times.map{ r << Ractor.new{ p receive } }; r.map{|x| x.send(rand) }; rand

Then the "rand" method gets messed up. Running simply "rand" give weird values like 0.00000 or 1.0 or 0.3.

The same issue happens when running from pry or the installed irb shell or even when running from command line with the -e option.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>