From: SASADA Koichi Date: 2010-10-15T21:08:18+09:00 Subject: [ruby-dev:42400] Re: [locking_mutex must be NULL] Re: Re: [BUG: trunk] Lazy sweep and ObjectSpace.each_object  ささだです。 (2010/10/15 12:40), 石塚圭樹 wrote: > ところで, 添付のようなエラーが出てSEGVしちゃうんですけど, 原因が何か分 > かります? > > 何をやっているかというと, 親プロセスから子プロセスをforkしていて, 子側 > がSEGVしています. > > 親側では, threadとかmutexを使っていて色々と非同期処理をしています. > fork後, 子側でそのthreadがGCされるときに発生しているみたいなんですが... > > 非同期処理をしながらforkするところに無理があるって話もありそうなんです > が... > > それと, このバックトレースではeach_object中に発生していますが, その前 > に GC.start を入れると, そこで発生します. > > > -- ここから > /var/projects/fairy/fairy/lib/fairy/share/base-app.rb:94: [BUG] thread_free: locking_mutex must be NULL (0x87fd5f0:138337388) > ruby 1.9.1p430 (2010-08-16 revision 28998) [i686-linux]  さすがにこれだけでは...、と思ったけど、fork した直後に locking_mutex を空にする処理を走らせているのに、それが間に合ってない感じですかね。  ファイナライザで何をやっているか、などを併せて最小ケースを貰えると良い かもしれません。 -- // SASADA Koichi at atdot dot net