Bug #11001
closed2.2.1 Segmentation fault in reserve_stack() function.
Description
SEGV depends on stack limit size with 'ulimit -s ' .
This shell script [ulimit_change_test.sh] can reproduce SEGV on my Debian environment.
my Linux environment is Debian/GNU Linux 7.8.
But, I cannot reproduce this SEGV on Amazon Linux environment.
result on Debian 7.8
$ /tmp/ulimit_change_test.sh
8515
/tmp/ulimit_change_test.sh: 3 行: 20470 Segmentation fault ./ruby --version
8514
/tmp/ulimit_change_test.sh: 3 行: 20471 Segmentation fault ./ruby --version
8513
/tmp/ulimit_change_test.sh: 3 行: 20472 Segmentation fault ./ruby --version
8512
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
8511
/tmp/ulimit_change_test.sh: 3 行: 20475 Segmentation fault ./ruby --version
8510
/tmp/ulimit_change_test.sh: 3 行: 20476 Segmentation fault ./ruby --version
8509
/tmp/ulimit_change_test.sh: 3 行: 20477 Segmentation fault ./ruby --version
8508
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
8507
/tmp/ulimit_change_test.sh: 3 行: 20480 Segmentation fault ./ruby --version
8506
/tmp/ulimit_change_test.sh: 3 行: 20481 Segmentation fault ./ruby --version
8505
/tmp/ulimit_change_test.sh: 3 行: 20482 Segmentation fault ./ruby --version
8504
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
8503
/tmp/ulimit_change_test.sh: 3 行: 20485 Segmentation fault ./ruby --version
8502
/tmp/ulimit_change_test.sh: 3 行: 20486 Segmentation fault ./ruby --version
8501
/tmp/ulimit_change_test.sh: 3 行: 20487 Segmentation fault ./ruby --version
8500
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
8499
/tmp/ulimit_change_test.sh: 3 行: 20490 Segmentation fault ./ruby --version
8498
/tmp/ulimit_change_test.sh: 3 行: 20491 Segmentation fault ./ruby --version
8497
/tmp/ulimit_change_test.sh: 3 行: 20492 Segmentation fault ./ruby --version
8496
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
8495
/tmp/ulimit_change_test.sh: 3 行: 20495 Segmentation fault ./ruby --version
8494
/tmp/ulimit_change_test.sh: 3 行: 20496 Segmentation fault ./ruby --version
8493
/tmp/ulimit_change_test.sh: 3 行: 20497 Segmentation fault ./ruby --version
8492
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
8491
/tmp/ulimit_change_test.sh: 3 行: 20500 Segmentation fault ./ruby --version
8490
/tmp/ulimit_change_test.sh: 3 行: 20501 Segmentation fault ./ruby --version
8489
/tmp/ulimit_change_test.sh: 3 行: 20502 Segmentation fault ./ruby --version
$
This SEGV occurs in reserve_stack()
function.
I suspect that the buf[0x100]
size is too small for margin.
I attached patch to fix it.
Files
Updated by william.l. (William L. L.) over 9 years ago
I also run into the bug too.
william@debianbox:~/talentlines/webui$ lsb_release -da
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.7 (wheezy)
Release: 7.7
Codename: wheezy
william@debianbox:~/talentlines/webui$ uname -a
Linux debianbox 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
william@debianbox:~/talentlines/webui$ ulimit -s 8191
william@debianbox:~/talentlines/webui$ ruby -v
Segmentation fault
william@debianbox:~/talentlines/webui$ ulimit -s 8000
william@debianbox:~/talentlines/webui$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
- Related to Bug #11030: Ruby 2.2.1 fails to compile with hardened GCC added
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
- Description updated (diff)
- Status changed from Open to Feedback
- Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: UNKNOWN
Does it happen with recent versions?
Updated by kubo (Takehiro Kubo) over 9 years ago
Same issue with recent ruby versions on Ubuntu 12.04.
I tried it with recent OS versions and found that
- Ubuntu 12.04 - Segmentation fault
- Ubuntu 12.10 - Segmentation fault
- Ubuntu 13.04 - No problem
- Ubuntu 14.04 - No problem
- Ubuntu 15.04 - No problem
- Debian 8.1 - No problem
IMO, this may be an issue of OS, not of ruby.
Updated by normalperson (Eric Wong) over 9 years ago
kubo@jiubao.org wrote:
IMO, this may be an issue of OS, not of ruby.
Fwiw, valgrind chokes here, too.
I tested valgrind 3.9.0 on CentOS 7.0 and also backported to
Debian 7.0 (wheezy).
I comment reserve_stack out when I'm debugging other problems
with valgrind.
Updated by ko1 (Koichi Sasada) over 9 years ago
On 2015/06/27 15:08, Eric Wong wrote:
Fwiw, valgrind chokes here, too.
Try it before valgrind.
$ ulimit -s unlimited
--
// SASADA Koichi at atdot dot net
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
Takehiro Kubo wrote:
IMO, this may be an issue of OS, not of ruby.
Any criteria where works on or not?
Runtime kernel versions?
Updated by kubo (Takehiro Kubo) over 9 years ago
Any criteria where works on or not?
Runtime kernel versions?
Segmentaion fault
- Ubuntu 12.04 - kernel 3.2+
- Ubuntu 12.10 - kernel 3.5
- Debian 7.7 - kernel 3.2.63
- Debian 7.8 - kernel 3.4.105
No problem
- Ubuntu 13.04 - kernel 3.8
- Ubuntu 14.04 - kernel 3.13 or 3.16 (I deleted the VM. I don't know which is used.)
- Ubuntu 15.04 - kernel 3.19.3
- Debian 8.1 - kernel 3.16.7
Ubuntu
https://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions
Debian 7.7
https://www.phoronix.com/scan.php?page=news_item&px=MTgxODY
Debian 7.8
http://news.softpedia.com/news/Debian-7-8-Arrives-with-Security-Fixes-and-Updated-Linux-Kernel-469629.shtml
Debian 8.1
http://news.softpedia.com/news/Debian-GNU-Linux-8-1-Jessie-Officially-Released-483592.shtml
On Ubuntu 12.04, stack size in emacs shell buffer is 8515 and
ruby gets segmentation fault. So I put 'ulimit -Ss 8192' in .bashrc
for workaround. (stack size in gnome-terminal is 8192.)
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Status changed from Feedback to Closed