[ruby-core:71568] [Ruby trunk - Bug #11481] Segmentation fault when thread is killed during `require`.

From: nagachika00@...
Date: 2015-11-19 01:15:47 UTC
List: ruby-core #71568
Issue #11481 has been updated by Tomoyuki Chikanaga.


Backport r51445 into `ruby_2_2` branch at r52661 to suppress warning in CI.

----------------------------------------
Bug #11481: Segmentation fault when thread is killed during `require`.
https://bugs.ruby-lang.org/issues/11481#change-54948

* Author: Thomas Wei=C3=9Fschuh
* Status: Closed
* Priority: Normal
* Assignee:=20
* ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
* Backport: 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: DONE
----------------------------------------
One of a library used by us executes `open` from `uri-open` in multiple thr=
ead in parallel under a timeout.
`open-uri` implicitly `require`s `net/http`. When the import machinery is k=
illed during performing an import this will lead to a segfault further down=
 the line.

I readily accept that it is very poor practice to do `require` in a loop wh=
ich is suspect to uncatchable exceptions,
But unfortunately the user has no idea that `require`s are performed.

The test.rb script from the attachements triggers this bug. You may want to=
 spawn less threads. The high number was chosen to improve the rate of trig=
gering the bug.

We tested this on ruby 2.1.5p273 as shipped with debian Jessie. And ruby 2.=
2.3p173 from ArchLinux.

---Files--------------------------------
backtrace (255 KB)
test.rb (231 Bytes)
backtrace.symbols (122 KB)


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

In This Thread

Prev Next