From: Tomoyuki Chikanaga Date: 2010-11-11T10:47:21+09:00 Subject: [ruby-dev:42561] [Ruby 1.9-Bug#4027] Signal.trap で busy loop に陥る チケット #4027 が更新されました。 (by Tomoyuki Chikanaga) > なお、このせいで sighandler にメインスレッドとタイマースレッドで同時に実行してしまって > signal_buff のカウンタがおかしくなったのかも、とも思ったのですが、ATOMIC_INC 部分を disassemble してみると > それぞれ incl の1命令で実行されているので、仮に並列に実行されても加算もれすることはなさそうです。 これは勘違いしていて、lock prefix がついていないので複数コアで並列に実行されると問題かもしれません。 そして r29589 で gcc-4 の builtin function を使う修正が入っていたのを思い出したので CC=gcc-4.4 にしてコンパイルしなおしたら ATOMIC_INC は 80e1b93: f0 80 00 01 lock addb $0x1,(%eax) 80e1b97: f0 80 05 81 ef 1f 08 lock addb $0x1,0x81fef81 のように lock prefix 付きになったので、これで大丈夫だと思います。 ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4027 ---------------------------------------- http://redmine.ruby-lang.org