From: Hidetoshi NAGAI Date: 2003-11-07T10:51:25+09:00 Subject: [ruby-dev:21861] Re: lib/test/unit/ui/tk/testrunner.rb 永井@知能.九工大です. From: nobu.nakada@nifty.ne.jp Subject: [ruby-dev:21860] Re: lib/test/unit/ui/tk/testrunner.rb Date: Thu, 6 Nov 2003 22:32:33 +0900 Message-ID: <200311061332.hA6DWWbd018334@sharui.nakada.kanuma.tochigi.jp> > > pthread が絡んでますねぇ... > > 導入されたばかりの --with-pthread-ext オプション付きで > > configure した上で ruby 本体を make して試してみていただけませんか? > 実は最初それで試してたので、逆にそれを疑って外してみたのが先の > 結果です。 では,下記のパッチを tcltklib.c に当てた上で, --with-pthread-ext オプション付きで試してみていただけませんか. Index: tcltklib.c =================================================================== RCS file: /src/ruby/ext/tcltklib/tcltklib.c,v retrieving revision 1.45 diff -u -r1.45 tcltklib.c --- tcltklib.c 29 Oct 2003 11:03:54 -0000 1.45 +++ tcltklib.c 7 Nov 2003 01:48:29 -0000 @@ -19,6 +19,10 @@ #include #include +#if defined(HAVE_LIBPTHREAD) && defined(USE_PTHREAD_EXTLIB) +#include +#endif + #ifdef __MACOS__ # include # include @@ -795,6 +799,10 @@ return lib_restart(self); } +#if defined(HAVE_LIBPTHREAD) && defined(USE_PTHREAD_EXTLIB) +pthread_mutex_t mtx_ip_ruby = PTHREAD_MUTEX_INITIALIZER; +#endif + static int #if TCL_MAJOR_VERSION >= 8 ip_ruby(clientData, interp, argc, argv) @@ -832,10 +840,16 @@ DUMP2("rb_eval_string(%s)", arg); old_trapflg = rb_trap_immediate; rb_trap_immediate = 0; +#if defined(HAVE_LIBPTHREAD) && defined(USE_PTHREAD_EXTLIB) + pthread_mutex_lock(&mtx_ip_ruby); +#endif res = rb_rescue2(rb_eval_string, (VALUE)arg, ip_eval_rescue, (VALUE)&failed, rb_eStandardError, rb_eScriptError, rb_eSystemExit, (VALUE)0); +#if defined(HAVE_LIBPTHREAD) && defined(USE_PTHREAD_EXTLIB) + pthread_mutex_unlock(&mtx_ip_ruby); +#endif rb_trap_immediate = old_trapflg; /* status check */ -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp