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.) almost 10 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) almost 10 years ago
- Related to Bug #11030: Ruby 2.2.1 fails to compile with hardened GCC added
Updated by nobu (Nobuyoshi Nakada) almost 10 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) almost 10 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) almost 10 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) almost 10 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) almost 10 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) almost 10 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