[#61171] Re: [ruby-changes:33145] normal:r45224 (trunk): gc.c: fix build for testing w/o RGenGC — SASADA Koichi <ko1@...>
(2014/03/01 16:15), normal wrote:
[#61243] [ruby-trunk - Feature #9425] [PATCH] st: use power-of-two sizes to avoid slow modulo ops — normalperson@...
Issue #9425 has been updated by Eric Wong.
[#61359] [ruby-trunk - Bug #9609] [Open] [PATCH] vm_eval.c: fix misplaced RB_GC_GUARDs — normalperson@...
Issue #9609 has been reported by Eric Wong.
(2014/03/07 19:09), normalperson@yhbt.net wrote:
SASADA Koichi <ko1@atdot.net> wrote:
[#61424] [REJECT?] xmalloc/xfree: reduce atomic ops w/ thread-locals — Eric Wong <normalperson@...>
I'm unsure about this. I _hate_ the extra branches this adds;
Hi Eric,
SASADA Koichi <ko1@atdot.net> wrote:
(2014/03/14 2:12), Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
[#61452] [ruby-trunk - Feature #9632] [Open] [PATCH 0/2] speedup IO#close with linked-list from ccan — normalperson@...
Issue #9632 has been reported by Eric Wong.
[#61496] [ruby-trunk - Feature #9638] [Open] [PATCH] limit IDs to 32-bits on 64-bit systems — normalperson@...
Issue #9638 has been reported by Eric Wong.
[#61568] hash function for global method cache — Eric Wong <normalperson@...>
I came upon this because I noticed existing st numtable worked poorly
(2014/03/18 8:03), Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
what's the profit from using binary tree in place of hash?
Юрий Соколов <funny.falcon@gmail.com> wrote:
[#61687] [ruby-trunk - Bug #9606] Ocassional SIGSEGV inTestException#test_machine_stackoverflow on OpenBSD — normalperson@...
Issue #9606 has been updated by Eric Wong.
[#61760] [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan — normalperson@...
Issue #9632 has been updated by Eric Wong.
[ruby-core:61186] [ruby-trunk - Bug #9507] Ruby 2.1.0 is broken on ARMv5: tried to create Proc object without a block
Issue #9507 has been updated by _ _.
File 0002-Use-only-unsigned-long-for-rb_serial_t.patch added
With the bug still being present in both ruby_2_1 (r45227) and trunk (r45225), I had a more detailed look at the commit that first introduced this problem. The only somewhat architecture-dependent change in the original commit is this in internal.h:
+#if HAVE_UINT64_T
+ typedef uint64_t vm_state_version_t;
+#else
+ typedef unsigned long long vm_state_version_t;
+#endif
In the current code base the corresponding fragment reads:
#if defined(HAVE_LONG_LONG)
typedef unsigned LONG_LONG rb_serial_t;
#define SERIALT2NUM ULL2NUM
#elif defined(HAVE_UINT64_T)
typedef uint64_t rb_serial_t;
#define SERIALT2NUM SIZET2NUM
#else
typedef unsigned long rb_serial_t;
#define SERIALT2NUM ULONG2NUM
#endif
My config.h for ARMv5 contains both `#define HAVE_LONG_LONG 1` and `#define HAVE_UINT64_T 1`, so for all versions of the code it will always take the first path. The `unsigned long long` variant as well as the `uint64_t` variant seem to be broken on ARMv5, so I decided to try the third one (`unsigned long`) by simply removing all other alternatives (patch attached). This successfully fixes the problem.
I'm not sure why you use the different types in the first place. If it works with `unsigned long` (i.e. you do not need more than 32 bits), what is the benefit of using `unsigned long long`? If it does bring some benefit for other architectures, could you disable its usage at least on ARMv5 or check your code whether it makes some assumptions about these types that do not hold on ARMv5?
----------------------------------------
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-45545
* 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/