Project

General

Profile

Actions

Bug #12118

closed

ruby2.3: Segfaults on m68k due to improper stack allocation

Bug #12118: ruby2.3: Segfaults on m68k due to improper stack allocation

Added by glaubitz (John Paul Adrian Glaubitz) over 9 years ago. Updated over 9 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:74020]

Description

Hello!

On Motorola 680x0, ruby2.2 and ruby2.3 segfault when running the Ruby interpretor:

./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems -r./m68k-linux-gnu-fake ./tool/rbinstall.rb --make="/usr/bin/make" --dest-dir="/<>/debian/tmp" --extout=".ext" --mflags="-w" --make-flags="w -- DESTDIR=/<>/debian/tmp" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="doc"
installing binary commands: /usr/bin
/<>/lib/fileutils.rb:250: [BUG] Segmentation fault at 0x5f583332
ruby 2.3.0p0 (2015-12-25) [m68k-linux-gnu]

This happens while building ruby2.3 on Debian, for example [1].

Andreas Schwab has already investigated into this issue and he came up with the following patch for ruby2.2 [2]:

Index: ruby-2.2.3/thread_pthread.c =================================================================== --- ruby-2.2.3.orig/thread_pthread.c +++ ruby-2.2.3/thread_pthread.c @@ -678,15 +678,14 @@ reserve_stack(volatile char *limit, size	limit += size;	if (limit > end) { size = limit - end; - limit = alloca(size); + limit = alloca(stack_check_margin+size);  limit[stack_check_margin+size-1] = 0;	} } else {	limit -= size;	if (buf > limit) { - limit = alloca(buf - limit); - limit -= stack_check_margin; + limit = alloca(buf - limit + stack_check_margin);  limit[0] = 0;	} } 

The same patch works fine on ruby2.3, I although I had to modify it so it still applies the same way in ruby2.3.
The bug can be reproduced in a qemu-m68k chroot environment which can be set up quite easily [3].

It would be very important for Debian's Motorola 680x0 port to get this issue fixed.

Thanks,
Adrian

[1] https://buildd.debian.org/status/fetch.php?pkg=ruby2.3&arch=m68k&ver=2.3.0-2&stamp=1455092994
[2] https://lists.debian.org/debian-68k/2015/11/msg00057.html
[3] https://wiki.debian.org/M68k/sbuildQEMU


Related issues 1 (0 open1 closed)

Actions

Also available in: PDF Atom