Issue #9507 has been updated by _ _.


<blockquote>
Which compiler/version is this? Can you try a newer one?
</blockquote>

The compiler is

    gcc (GCC) 4.8.2 20131219 (prerelease)

on the ARMv5 device and

    arm-unknown-linux-gnueabi-gcc (crosstool-NG 1.19.0) 4.8.3 20131219 (prerelease)

for [cross-compiling](http://archlinuxarm.org/developers/distcc-cross-compiling). GCC 4.8.2 is already the newest release.

Out of curiosity, I gave Clang 3.4 a try, but it fails already during configure:

    checking size of int... 0
    checking size of short... 0
    checking size of long... 0
    checking size of long long... configure: error: in `/root/clang/ruby/src/ruby-2.1.0':
    configure: error: cannot compute sizeof (long long)
    See `config.log' for more details

I'm not sure what the problem here is, Clang compiles a simple `printf("%d", sizeof(long long));` just fine. Maybe some incompatibility in the configure script?

<blockquote>
Can you try any other code which uses 64-bit math?
</blockquote>

Can you recommend any test code? Those compilers build the whole Arch Linux ARM repository, so if it were a common problem, it should have been noticed by now.

<blockquote>
64-bits is needed to avoid overflow on VM state changes.
Otherwise our caches could give false hits and crash.
</blockquote>

I see. But isn't it dangerous then to fall back to `unsigned long`, which only guarantees at least 32 bits? Or is the probability for a crash with only 32 bits still very low, and 64 bits just provide some extra safety?

----------------------------------------
Bug #9507: Ruby 2.1.0 is broken on ARMv5: tried to create Proc object without a block
https://bugs.ruby-lang.org/issues/9507#change-45553

* Author: _ _
* Status: Open
* Priority: Normal
* Assignee: Charlie Somerville
* Category: core
* Target version: current: 2.2.0
* ruby -v: ruby 2.1.0dev (2013-09-04 trunk 42822) [armv5tel-linux-eabi]
* Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
I'm using Arch Linux ARM which currently ships with Ruby 2.1.0. On all my ARMv5 devices, trying to run Ruby fails with a strange error, which has also been reported here: https://github.com/archlinuxarm/PKGBUILDs/issues/705 ARMv6 and ARMv7 devices on the other hand seem to be fine.

Using git-bisect I was able to determine that the first bad commit is 2f522b9cc6f3e184404040b12af4486520a73b26 (r42822), which implements #8426:

    [root@alarm ~]# ruby --version
    ruby 2.1.0dev (2013-09-04 trunk 42822) [armv5tel-linux-eabi]
    [root@alarm ~]# ruby -e 'puts "foo"'
    /usr/lib/ruby/2.1.0/rubygems/requirement.rb:26:in `lambda': tried to create Proc object without a block (ArgumentError)
    	from /usr/lib/ruby/2.1.0/rubygems/requirement.rb:26:in `<class:Requirement>'
    	from /usr/lib/ruby/2.1.0/rubygems/requirement.rb:18:in `<top (required)>'
    	from /usr/lib/ruby/2.1.0/rubygems/specification.rb:10:in `require'
    	from /usr/lib/ruby/2.1.0/rubygems/specification.rb:10:in `<top (required)>'
    	from /usr/lib/ruby/2.1.0/rubygems.rb:1161:in `require'
    	from /usr/lib/ruby/2.1.0/rubygems.rb:1161:in `<module:Gem>'
    	from /usr/lib/ruby/2.1.0/rubygems.rb:114:in `<top (required)>'
    	from <internal:gem_prelude>:1:in `require'
    	from <internal:gem_prelude>:1:in `<compiled>'

The previous commit works correctly:

    [root@alarm ~]# ruby --version
    ruby 2.1.0dev (2013-09-04 trunk 42821) [armv5tel-linux-eabi]
    [root@alarm ~]# ruby -e 'puts "foo"'
    foo

The problem is still present in trunk (r44896).

---Files--------------------------------
0002-Use-only-unsigned-long-for-rb_serial_t.patch (538 Bytes)


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