Bug #2648

Mac OS X 10.6/10.5で--enable-pthreadのときtest-allでSEGVする

Added by kimuraw (Wataru Kimura) over 2 years ago. Updated about 1 year ago.

[ruby-dev:40145]
Status:Closed Start date:01/23/2010
Priority:Normal Due date:
Assignee:- % Done:

100%

Category:-
Target version:-
ruby -v:ruby 1.8.8dev (2010-01-22 revision 26374) [i386-darwin10.2.0]

Description

#2603(NetBSD 5.0以降でpthreadの処理に由来する不具合)と似た現象なのですが、
Mac OS X上で1.8 (trunk r26382)および1.8.7-p249を--enable-pthreadで
configureしてビルドしたとき、make test-allで多数のsegmentation faultが発生します。

test-allの出力を添付しました。8時間ほどしても終了しなかったので途中までのものです。
一部抜粋します。

====
./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  ./runruby.rb --extout=.ext  -- "./test/runner.rb" --basedir="./test" --runner=console 
Loaded suite .
Started
........................................................................................................................................................................................................................./Volumes/CHome/kimuraw/work/ruby_1_8/lib/drb/extservm.rb:85: [BUG] Segmentation fault
ruby 1.8.8dev (2010-01-22 revision 26374) [i386-darwin10.2.0]

EEEEEEE/Volumes/CHome/kimuraw/work/ruby_1_8/lib/drb/extservm.rb:85: [BUG] Segmentation fault
ruby 1.8.8dev (2010-01-22 revision 26374) [i386-darwin10.2.0]

EEEEEEEEEEEEEE/Volumes/CHome/kimuraw/work/ruby_1_8/lib/drb/extservm.rb:85: [BUG] Segmentation fault
ruby 1.8.8dev (2010-01-22 revision 26374) [i386-darwin10.2.0]

E/Volumes/CHome/kimuraw/work/ruby_1_8/lib/drb/extservm.rb:85: [BUG] Segmentation fault
ruby 1.8.8dev (2010-01-22 revision 26374) [i386-darwin10.2.0]
====

* --enable-pthreadしないときSEGVしません
* 1.8.7-p174ではSEGVしません
* Mac OS X 10.6.2および10.5.8で確認しました
* #2603で提示されている最小の再現ケースでは再現しませんでした
   * ./ruby -e'Thread.new{sleep};`./ruby -e"1"`'
   * ./ruby -e'Thread.new{sleep};fork{}'

#2603のpatch-2の__NetBSD__に__APPLE__を加えてMacでも有効にしたものを
trunk r26370に当てるとSEGVは発生しなくなりました。

test-all-r26382.log (26.5 kB) kimuraw (Wataru Kimura), 01/25/2010 09:49 pm

patch-bug2648.diff (2.2 kB) kimuraw (Wataru Kimura), 01/26/2010 11:05 pm


Related issues

related to Backport87 - Backport #2659: Problem when building with pthreads enabled Closed 01/26/2010
related to ruby-trunk - Bug #270: lazy timer thraed creation Closed

Associated revisions

Revision 26437
Added by naruse over 2 years ago

* io.c, eval.c, process.c: add __APPLE__ to r26371's condition. patched by Wataru Kimura [ruby-dev:40145]

History

Updated by naruse (Yui NARUSE) over 2 years ago

> Mac OS X上で1.8 (trunk r26382)および1.8.7-p249を--enable-pthreadで
この「1.8 (trunk r26382)」って 1.9 ですか?

1.8 の方は r26371 の修正の __NetBSD__ に __APPLE__ を加えるとどうですか ?
とりあえず 1.8 については、その方向で ruby_1_8 ブランチに対して動作を確認したパッチを作っていただければ取り込みます。

Updated by kimuraw (Wataru Kimura) over 2 years ago

>> Mac OS X上で1.8 (trunk r26382)および1.8.7-p249を--enable-pthreadで
>この「1.8 (trunk r26382)」って 1.9 ですか?

すみません…1.8はブランチですね。1.9でなく1.8のつもりで書きました。

> 1.8 の方は r26371 の修正の __NetBSD__ に __APPLE__ を加えるとどうですか ?
> とりあえず 1.8 については、その方向で ruby_1_8 ブランチに対して動作を確認したパッチを作っていただければ取り込みます。

1.8のr26425へのパッチを作成しました。
* Mac OS X 10.6.2および10.5.8でmake test-allがSEGVしなくなったこと
* パッチ済みpthreadあり/パッチなしpthreadなしの場合でmake test-allの結果が(ほぼ)同じになること
  (10.6.2で4F1E/5F1E、10.5.8で5F2E/5F2E)
を確認しました。

Updated by naruse (Yui NARUSE) over 2 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100
This issue was solved with changeset r26437.
Wataru, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Also available in: Atom PDF