From: mame@... Date: 2018-12-23T03:23:24+00:00 Subject: [ruby-core:90678] [Ruby trunk Bug#15453][Rejected] Ruby 2.5 on Darwin appears to return different result Issue #15453 has been updated by mame (Yusuke Endoh). Status changed from Open to Rejected Your program is actually not deterministic. The result of `Array#sort_by!` may differ depending upon the platform. See the rdoc: ``` * The result is not guaranteed to be stable. When the comparison of two * elements returns +0+, the order of the elements is unpredictable. ``` A* is of course robust against the tie breaking. The reason why your program does not work correctly, is just because your program is buggy. Read the textbook carefully. You can reproduce the bug on Linux by replacing the line of `sort_by!` with: queue.sort_by! { |p, cost, estimate| [cost + estimate, rand()] } Good luck. ---------------------------------------- Bug #15453: Ruby 2.5 on Darwin appears to return different result https://bugs.ruby-lang.org/issues/15453#change-75848 * Author: akanet (Vincent Woo) * Status: Rejected * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- Hi everyone, I'm not sure if this is the right place to report, but I hit a shocking result recently. I was developing on my OSX machine on ruby 2.5.1 and also on a linux x64 machine and noticed I was getting different results for a totally deterministic ruby script (attached). On Darwin: ~~~ Vincents-MBP:~ vwoo$ ruby --version ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17] Vincents-MBP:~ vwoo$ ruby test.rb .=.|=.|.|=.|=|=. .|=|=|||..|.=... .==|....||=..|== =.|....|.==.|==. =|..==...=.|==.. =||.=.=||=|=..|= |.=.===|||..=..| |..==||=.|==|=== .=..===..=|.|||. .======|||=|=.|= .===|=|===.===|| =|||...|==..|=.| =.=|=.=..=.||==| ||=|=...|==.=|== |=.=||===.|||=== ||.|==.|.|.||=|| 1445 [[10, 10, :torch], 49, 0] ~~~ On Linux: ~~~ vwoo@ubuntu:~$ ruby --version ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] vwoo@ubuntu:~$ ruby test.rb .=.|=.|.|=.|=|=. .|=|=|||..|.=... .==|....||=..|== =.|....|.==.|==. =|..==...=.|==.. =||.=.=||=|=..|= |.=.===|||..=..| |..==||=.|==|=== .=..===..=|.|||. .======|||=|=.|= .===|=|===.===|| =|||...|==..|=.| =.=|=.=..=.||==| ||=|=...|==.=|== |=.=||===.|||=== ||.|==.|.|.||=|| 1032 [[10, 10, :torch], 45, 0] ~~~ I believe the Linux result to be correct (and I have validated it against other Linux machines). This appears to happen on 2.5.3 as well. I built Darwin ruby with ruby-install and Apple clang 10. Any help debugging would be very appreciated! ---Files-------------------------------- test.rb (1.97 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: