ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:50644] [Ruby trunk Bug#15179] Segfault caused by only 'loop{ x<<[] }'
       [not found] <redmine.issue-15179.20180930092213@ruby-lang.org>
@ 2018-09-30  9:22 ` aki
  2018-10-01  3:32 ` [ruby-dev:50645] [Ruby trunk Bug#15179][Feedback] " yugui
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 4+ messages in thread
From: aki @ 2018-09-30  9:22 UTC (permalink / raw)
  To: ruby-dev

Issue #15179 has been reported by aki.k (亜樹 小林).

----------------------------------------
Bug #15179: Segfault caused by only 'loop{ x<<[] }'
https://bugs.ruby-lang.org/issues/15179

* Author: aki.k (亜樹 小林)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
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--------------------------------
log.txt (26.1 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ruby-dev:50645] [Ruby trunk Bug#15179][Feedback] Segfault caused by only 'loop{ x<<[] }'
       [not found] <redmine.issue-15179.20180930092213@ruby-lang.org>
  2018-09-30  9:22 ` [ruby-dev:50644] [Ruby trunk Bug#15179] Segfault caused by only 'loop{ x<<[] }' aki
@ 2018-10-01  3:32 ` yugui
  2018-10-01  4:09 ` [ruby-dev:50646] [Ruby trunk Bug#15179] " aki
  2018-10-01 13:33 ` [ruby-dev:50647] " aki
  3 siblings, 0 replies; 4+ messages in thread
From: yugui @ 2018-10-01  3:32 UTC (permalink / raw)
  To: ruby-dev

Issue #15179 has been updated by yugui (Yuki Sonoda).

Status changed from Open to Feedback

Linuxのオーバーコミットが怪しいと思うんですが、`vm.overcommit_memory` を無効に設定しても同じ現象が発生しますか?

----------------------------------------
Bug #15179: Segfault caused by only 'loop{ x<<[] }'
https://bugs.ruby-lang.org/issues/15179#change-74255

* Author: aki.k (亜樹 小林)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
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--------------------------------
log.txt (26.1 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ruby-dev:50646] [Ruby trunk Bug#15179] Segfault caused by only 'loop{ x<<[] }'
       [not found] <redmine.issue-15179.20180930092213@ruby-lang.org>
  2018-09-30  9:22 ` [ruby-dev:50644] [Ruby trunk Bug#15179] Segfault caused by only 'loop{ x<<[] }' aki
  2018-10-01  3:32 ` [ruby-dev:50645] [Ruby trunk Bug#15179][Feedback] " yugui
@ 2018-10-01  4:09 ` aki
  2018-10-01 13:33 ` [ruby-dev:50647] " aki
  3 siblings, 0 replies; 4+ messages in thread
From: aki @ 2018-10-01  4:09 UTC (permalink / raw)
  To: ruby-dev

Issue #15179 has been updated by aki.k (亜樹 小林).


ありがとうございます.

~~~
$ cat /proc/sys/vm/overcommit_memory
0
$ sudo sh -c "echo 2 > /proc/sys/vm/overcommit_memory"
$ cat /proc/sys/vm/overcommit_memory
2
$ ruby -e 'x=[]; loop { x<<[] }'
[FATAL] failed to allocate memory
~~~ 

ご指摘の通りのようでした.
overcommit_ratio が50なので,15GB前後で上記の様にメモリ確保に失敗する様子です.
(overcommit_ratioを増やしても17GB程度までしか使えず,当初のとおり,おそらくOOM killerが発動されました.)

勉強不足でメモリのovercommitやOOM killerについて知りませんでした.
よい勉強になりました.

ここからはruby外にも思えますが,
* rubyで物理メモリいっぱいまで使うための設定/書き方.
  は,わからないこととして残りました.
  overcommit_memory=2, overcommit_ratio=90 などでは,うまくいかないようです.

その他:
* 他環境(Ubuntu16.04LTSなど)でのovercommit_memoryの設定値調査.
については,ここまでで追加の情報はありません.


----------------------------------------
Bug #15179: Segfault caused by only 'loop{ x<<[] }'
https://bugs.ruby-lang.org/issues/15179#change-74256

* Author: aki.k (亜樹 小林)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
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--------------------------------
log.txt (26.1 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ruby-dev:50647] [Ruby trunk Bug#15179] Segfault caused by only 'loop{ x<<[] }'
       [not found] <redmine.issue-15179.20180930092213@ruby-lang.org>
                   ` (2 preceding siblings ...)
  2018-10-01  4:09 ` [ruby-dev:50646] [Ruby trunk Bug#15179] " aki
@ 2018-10-01 13:33 ` aki
  3 siblings, 0 replies; 4+ messages in thread
From: aki @ 2018-10-01 13:33 UTC (permalink / raw)
  To: ruby-dev

Issue #15179 has been updated by aki.k (亜樹 小林).


## 補足
overcommitを無効とした場合でも,ubuntu 18.04LTSの場合でのみsegfaultが発生する事象はまだ残りました.ただし,ここで示したコードだけで再現できる事象ではなく,適当な検証コードを用意は出来ていません.大量のオブジェクトを割り当てた場合である点は同じですが,異なる原因であるかもしれません.
OS側に原因を求めるべきであるようにも思いますが,記録のため書き残しておきます.

----------------------------------------
Bug #15179: Segfault caused by only 'loop{ x<<[] }'
https://bugs.ruby-lang.org/issues/15179#change-74261

* Author: aki.k (亜樹 小林)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
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--------------------------------
log.txt (26.1 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-10-01 13:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <redmine.issue-15179.20180930092213@ruby-lang.org>
2018-09-30  9:22 ` [ruby-dev:50644] [Ruby trunk Bug#15179] Segfault caused by only 'loop{ x<<[] }' aki
2018-10-01  3:32 ` [ruby-dev:50645] [Ruby trunk Bug#15179][Feedback] " yugui
2018-10-01  4:09 ` [ruby-dev:50646] [Ruby trunk Bug#15179] " aki
2018-10-01 13:33 ` [ruby-dev:50647] " aki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).