From: v.ondruch@... Date: 2018-04-09T08:42:02+00:00 Subject: [ruby-core:86481] [Ruby trunk Bug#14480] miniruby crashing when compiled with -O2 or -O1 on aarch64 Issue #14480 has been updated by vo.x (Vit Ondruch). Just forwarding one remark from RH Bugzilla [0]: ~~~ --- Comment #44 from Dave Malcolm --- > should we keep the "setjmp" for AArch64? I am asking, > since it seems that Ruby upstream is not going to change anything [1], so we > should somehow officially resolve/close the issue. > > > > [1] https://bugs.ruby-lang.org/issues/14480#note-10 Note that the workaround in the gcc rpm is papering over the issue, albeit a long-standing one: that __builtin_setjmp on aarch64 doesn't properly save the frame pointer, leading to clobbering of the frame pointer when __builtin_longjmp is used, hence leading to issues when used in conjunction with -fomit-frame-pointer. If upstream Ruby want to use __builtin_setjmp as a performance optimization, that's up to them, I guess, but it's relying on none of the code ever using or interacting with -fomit-frame-pointer (until PR target/84521 is properly fixed). ~~~ As for Ruby on AArch64 Fedora, I'll keep using "setjmp" unless somebody has some convincing arguments :) [0]: https://bugzilla.redhat.com/show_bug.cgi?id=1545239#c44 ---------------------------------------- Bug #14480: miniruby crashing when compiled with -O2 or -O1 on aarch64 https://bugs.ruby-lang.org/issues/14480#change-71428 * Author: vo.x (Vit Ondruch) * Status: Third Party's Issue * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [aarch64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- Recently, it is not possible to build Ruby 2.5.0 on aarch64 on Fedora Rawhide, because miniruby fails during build: ~~~ ... snip ... ./miniruby -I./lib -I. -I.ext/common -n \ -e 'BEGIN{version=ARGV.shift;mis=ARGV.dup}' \ -e 'END{abort "UNICODE version mismatch: #{mis}" unless mis.empty?}' \ -e '(mis.delete(ARGF.path); ARGF.close) if /ONIG_UNICODE_VERSION_STRING +"#{Regexp.quote(version)}"/o' \ 10.0.0 ./enc/unicode/10.0.0/casefold.h ./enc/unicode/10.0.0/name2ctype.h generating encdb.h ./miniruby -I./lib -I. -I.ext/common ./tool/generic_erb.rb -c -o encdb.h ./template/encdb.h.tmpl ./enc enc generating prelude.c ./miniruby -I./lib -I. -I.ext/common ./tool/generic_erb.rb -I. -c -o prelude.c \ ./template/prelude.c.tmpl ./prelude.rb ./gem_prelude.rb ./abrt_prelude.rb *** stack smashing detected ***: terminated encdb.h updated ... snip ... ~~~ This might by Ruby or gcc issue. Not sure yet. However, there is already lengthy analysis available in Fedora's Bugzilla [1]. Would be anybody able to help to resolve this issue? [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1545239 ---Files-------------------------------- Dockerfile (573 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: