[#70257] [Ruby trunk - Feature #11420] [Open] Introduce ID key table into MRI — ko1@...

Issue #11420 has been reported by Koichi Sasada.

11 messages 2015/08/06

[ruby-core:70472] [Ruby trunk - Bug #9172] siphash faulty on arm little endian with word align - missing code

From: v.ondruch@...
Date: 2015-08-20 06:00:42 UTC
List: ruby-core #70472
Issue #9172 has been updated by Vit Ondruch.

Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 2.0.0: REQUIRED, 2.1: DONTNEED, 2.2: DONTNEED

----------------------------------------
Bug #9172: siphash faulty on arm little endian with word align - missing code
https://bugs.ruby-lang.org/issues/9172#change-53877

* Author: Alban Browaeys
* Status: Closed
* Priority: Normal
* Assignee: Nobuyoshi Nakada
* ruby -v: ruby 1.9.3p448 (2013-06-27 revision 41675) [arm-linux-eabihf]
* Backport: 2.0.0: REQUIRED, 2.1: DONTNEED, 2.2: DONTNEED
----------------------------------------
siphash.c check for "little endian+unaligned word access" and
"bigendian". But my arch : armv7-a cortex a9 is little endian word
aligned. This discard the loop that reduce the input below 8 bytes and a
case when the leftover is four bytes.
https://github.com/ruby/ruby/commit/525cb66467ff22a50f2e6bf307924459d38cd592#diff-41728f3441b348d39ebae01b3a5694a0R409
and
https://github.com/ruby/ruby/commit/525cb66467ff22a50f2e6bf307924459d38cd592#diff-41728f3441b348d39ebae01b3a5694a0R446

I found this issue via bundler as it uses the hash of an array (the
collision is "sub-setter".hash and "discoverer".hash has they both share
all other fields (platform and version both at 0.0.2).
I reported it back then as public
https://github.com/bundler/bundler/issues/2724

extracts:

- testcase: "collision.rb"
# on arm (odroid u2)
#$ ruby ~/collision.rb
#708079652
#708079652
 
require 'rubygems'
 
p ["discoverer", Gem::Version.new("0.0.2"), "ruby"].hash
p ["sub-setter", Gem::Version.new("0.0.2"), "ruby"].hash


NB: For now I rebuild with those check for UNALIGNED_WORD_ACCESS removed and
at least I get way less conflict . This is no proper fix though.






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

In This Thread

Prev Next