Bug #15179
closedSegfault caused by only 'loop{ x<<[] }'
Description
Segmentation fault is caused after many objects allocation instead of '強制終了'.
About 30sec and 16-26GB memory used.
環境¶
OS: Ubuntu 18.04LTS ja (日本語Remix) on VMware ESXi 6.7
RAM: 32GB
apt install ruby-dev
user@ruby:~$ ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu] user@ruby:~$ uname -a Linux ruby 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux user@ruby: free -g total used free shared buff/cache available Mem: 31 1 28 0 1 29 Swap: 1 0 1
コード¶
x=[] loop { x << [] }
or
ruby -e
x=[]; loop { x << [] }'`
その他¶
Ubuntu18.04LTSのみで観測しています.
rubyのプロセスが16GB~26GB程度に達したときに発生しました.
(環境毎に一定かもしれませんが,十分確認できていません.)
ディスクに書きにいってしまうと非常に遅くなるので確認していません.
32GBメモリ搭載環境での結果です.
(メモリ量の異なる:Ubuntu16.04LTS, Windows10 では「強制終了」と出力されて終了します.)
下記貼り付けは,ほぼ,OSのみインストール直後にrubyのみをインストールさせた状態で試しています.
(ruby -e; free -g; ruby -e と,2回 core dumpを発生させています)
OS側の問題であるかもしれないのですが,切り分けは出来ていません.
多数オブジェクトを割り当てると,型によらず発生する様子です.
一度errorを発生させた後は,rebootするまでの間,より少ないメモリ割当(オブジェクト数)で同様のSegmentation faultを発生させる場合があります.(しない場合もあります)
他のコマンドの実行ができなくなる場合がありました.
例:initコマンドが即座にSegmentation faultしてしまう.(->ハードウェアリセットで再起動させて回復)
Files