[#21809] lib/test/unit/ui/tk/testrunner.rb — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
なかだです。
こんにちは、なかむら(う)です。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
[#21830] pty on FreeBSD — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#21846] StringIO#path — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#21876] get_last_error or getLastError by DL::Importable — Take_tk <ggb03124@...>
たけ(tk)です。
[#21883] right hand Regexp — Koji Arai <JCA02266@...>
新井です。
[#21899] core dump in rb_hash_aset — Tanaka Akira <akr@...17n.org>
% ruby -e 'h = {}
まつもと ゆきひろです
In article <1068753744.644627.6908.nullmailer@picachu.netlab.jp>,
[#21932] rough / tabs.rb — Minero Aoki <aamine@...>
青木です。
[#21939] StringIO.new("").read — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
[#21942] Zlib::GzipReader#read — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、
[#21943] IO#read — Tanaka Akira <akr@...17n.org>
ふと。
In article <87u1523sjj.fsf@serein.a02.aist.go.jp>,
なかだです。
In article <200311250059.hAP0xSYw004490@sharui.nakada.kanuma.tochigi.jp>,
[#21946] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
Siena. です。
青木です。それにしても凄い Subject だ。
[#22000] purge pthread at configure — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#22013] HTTP_PROXY — Tanaka Akira <akr@...17n.org>
ふと
[#22025] --enable-pthread on FreeBSD — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#22042] ENV["path"].tainted? — Tanaka Akira <akr@...17n.org>
ENV["path"] の値が
まつもと ゆきひろです
In article <1069748137.095435.3356.nullmailer@picachu.netlab.jp>,
斜め読みですが、
まつもと ゆきひろです
In message <1070234162.951847.24883.nullmailer@picachu.netlab.jp>
[#22057] drb/drb.rb document — Minero Aoki <aamine@...>
青木です。
[#22071] Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
はじめまして。山本といいます。
Siena. です。
> 山本さんのパッチがうまく当たらず手パッチしたので、念のため何度か
Siena. です。
こんにちは、山本です。
山本です。
山本です。
山本です。
山本です。glob_helperをリファクタリングしてみました。
なかだです。
山本です。
なかだです。
山本です。
Siena. です。
山本です。
山本です。
まつもと ゆきひろです
山本です。
山本です。パッチを送ります。
山本です。
山本です。
山本です。
山本です。
まつもと ゆきひろです
>すいません。パッチを出す時にはいつもどの時点のソースに対する
まつもと ゆきひろです
>|すみません、1.8.1に対してです。
まつもと ゆきひろです
こんにちは、山本です。
まつもと ゆきひろです
山本です。
山本です。
山本です。[ruby-dev:22470]にバグがあったので修正しました。
>山本です。[ruby-dev:22470]にバグがあったので修正しました。
まつもと ゆきひろです
山本です。
山本です。
In message <20040102230135.027CDAF8.ocean@m2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
山本です。
山本です。
山本です。
なかだです。
山本です。
なかだです。
山本です。
[ruby-dev:21833] pthread trouble on tcltklib (Re: ruby-tk hangs when exception is raised)
永井@知能.九工大です.
tcltklib.c 側での対処をあきらめて,
Ruby 本体の eval.c と signal.c への patch として作ってみました.
これで GC や Thread switching が生じても落ちずに済んでいるようです.
とりあえずのテスト用なので,#ifdef などではくくっていません.
試してみていただけないでしょうか.
# もしかすると,これで pthread 依存のライブラリへの耐性が
# 少し上がっているかも...ってほどは世の中甘くないか.(^_^)
Index: Makefile.in
===================================================================
RCS file: /src/ruby/Makefile.in,v
retrieving revision 1.50
diff -u -r1.50 Makefile.in
--- Makefile.in 5 Nov 2003 02:15:26 -0000 1.50
+++ Makefile.in 5 Nov 2003 03:33:23 -0000
@@ -26,7 +26,7 @@
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
EXTLDFLAGS =
XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
-EXTLIBS =
+EXTLIBS = -lpthread
LIBS = @LIBS@ $(EXTLIBS)
MISSING = @LIBOBJS@ @ALLOCA@
LDSHARED = @LIBRUBY_LDSHARED@
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.583
diff -u -r1.583 eval.c
--- eval.c 4 Nov 2003 09:13:56 -0000 1.583
+++ eval.c 5 Nov 2003 03:33:27 -0000
@@ -32,6 +32,7 @@
#include <setjmp.h>
#include "st.h"
#include "dln.h"
+#include <pthread.h>
#ifdef __APPLE__
#include <crt_externs.h>
@@ -8604,6 +8615,9 @@
return test;
}
+static pthread_t thid;
+static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
+
void
rb_thread_schedule()
{
@@ -8621,6 +8635,8 @@
int need_select = 0;
int select_timeout = 0;
+ int st;
+
rb_thread_pending = 0;
if (curr_thread == curr_thread->next
&& curr_thread->status == THREAD_RUNNABLE)
@@ -8629,6 +8645,14 @@
next = 0;
curr = curr_thread; /* starting thread */
+ if ((st = pthread_mutex_trylock(&mtx)) == EBUSY) {
+ if (pthread_self() != thid) {
+ return;
+ }
+ } else {
+ thid = pthread_self();
+ }
+
while (curr->status == THREAD_KILLED) {
curr = curr->prev;
}
@@ -8826,12 +8850,18 @@
}
next->wait_for = 0;
if (next->status == THREAD_RUNNABLE && next == curr_thread) {
+ if (st != EBUSY) {
+ pthread_mutex_unlock(& mtx);
+ }
return;
}
/* context switch */
if (curr == curr_thread) {
if (THREAD_SAVE_CONTEXT(curr)) {
+ if (st != EBUSY) {
+ pthread_mutex_unlock(& mtx);
+ }
return;
}
}
@@ -8841,8 +8871,14 @@
if (!(next->flags & THREAD_TERMINATING)) {
next->flags |= THREAD_TERMINATING;
/* terminate; execute ensure-clause if any */
+ if (st != EBUSY) {
+ pthread_mutex_unlock(& mtx);
+ }
rb_thread_restore_context(next, RESTORE_FATAL);
}
+ }
+ if (st != EBUSY) {
+ pthread_mutex_unlock(& mtx);
}
rb_thread_restore_context(next, RESTORE_NORMAL);
}
Index: signal.c
===================================================================
RCS file: /src/ruby/signal.c,v
retrieving revision 1.48
diff -u -r1.48 signal.c
--- signal.c 1 Oct 2003 15:14:22 -0000 1.48
+++ signal.c 5 Nov 2003 03:33:27 -0000
@@ -711,6 +711,7 @@
{
#ifndef MACOS_UNUSE_SIGNAL
VALUE mSignal = rb_define_module("Signal");
+ VALUE oldsig;
rb_define_global_function("trap", sig_trap, -1);
rb_define_module_function(mSignal, "trap", sig_trap, -1);
@@ -741,6 +742,21 @@
#endif
#ifdef SIGPIPE
install_sighandler(SIGPIPE, sigpipe);
+#endif
+
+#ifdef SIGCLD
+ oldsig = rb_funcall(rb_mKernel, rb_intern("trap"), 2,
+ INT2FIX(SIGCLD), rb_str_new2("SIG_DFL"));
+ if (oldsig != Qnil) {
+ rb_funcall(rb_mKernel, rb_intern("trap"), 2, INT2FIX(SIGCLD), oldsig);
+ }
+#endif
+#ifdef SIGCHLD
+ oldsig = rb_funcall(rb_mKernel, rb_intern("trap"), 2,
+ INT2FIX(SIGCHLD), rb_str_new2("SIG_DFL"));
+ if (oldsig != Qnil) {
+ rb_funcall(rb_mKernel, rb_intern("trap"), 2, INT2FIX(SIGCHLD), oldsig);
+ }
#endif
#endif /* MACOS_UNUSE_SIGNAL */
}
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp