[#25636] [Oniguruma 3.X] reggnu.c — "K.Kosako" <sndgk393@...>
さっき気がついたのですが、元々は
15 messages
2005/02/05
[#25639] Re: [Oniguruma 3.X] reggnu.c
— Yukihiro Matsumoto <matz@...>
2005/02/05
まつもと ゆきひろです
[#25643] Re: [Oniguruma 3.X] reggnu.c
— "K.Kosako" <sndgk393@...>
2005/02/06
Yukihiro Matsumotoさんの
[#25702] Re: [Oniguruma 3.X] reggnu.c
— Kazuo Saito <ksaito@...>
2005/02/15
斉藤です。
[#25647] C level set_trace_func — Shugo Maeda <shugo@...>
前田です。
10 messages
2005/02/07
[#25696] Re: C level set_trace_func
— Yukihiro Matsumoto <matz@...>
2005/02/14
まつもと ゆきひろです
[#25697] Re: C level set_trace_func
— Shugo Maeda <shugo@...>
2005/02/14
前田です。
[#25655] openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths — Tanaka Akira <akr@...17n.org>
open-uri で https を扱うことを考えていろいろと調べていた所、openssl で、
9 messages
2005/02/08
[#25670] Re: openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths
— GOTOU Yuuzou <gotoyuzo@...>
2005/02/10
In message <876513vce0.fsf@serein.a02.aist.go.jp>,
[#25683] Re: openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths
— Tanaka Akira <akr@...17n.org>
2005/02/12
In article <20050211.053825.291449071.gotoyuzo@sawara.does.notwork.org>,
[#25684] Re: openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths
— Tanaka Akira <akr@...17n.org>
2005/02/12
In article <87psz6gcfh.fsf@serein.a02.aist.go.jp>,
[#25690] Re: openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths
— GOTOU Yuuzou <gotoyuzo@...>
2005/02/12
In message <87ll9thnng.fsf@serein.a02.aist.go.jp>,
[#25691] Re: openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths
— Tanaka Akira <akr@...17n.org>
2005/02/12
In article <20050213.021305.304099822.gotoyuzo@sawara.does.notwork.org>,
[#25700] BUG on thread and block? — sheepman <sheepman@...>
こんばんは、sheepman です。
2 messages
2005/02/15
[#25712] core dump with GC in rb_thread_save_context — Tanaka Akira <akr@...17n.org>
昨日の夜からとあるプログラム (五月雨) が 4回ばかり core を吐いていて、
5 messages
2005/02/17
[#25713] pthread trouble on sighandler — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
17 messages
2005/02/18
[#25714] Re: pthread trouble on sighandler
— Yukihiro Matsumoto <matz@...>
2005/02/18
まつもと ゆきひろです
[#25715] Re: pthread trouble on sighandler
— Hidetoshi NAGAI <nagai@...>
2005/02/18
永井@知能.九工大です.
[#25717] Re: pthread trouble on sighandler
— Yukihiro Matsumoto <matz@...>
2005/02/18
まつもと ゆきひろです
[#25719] Re: pthread trouble on sighandler
— Hidetoshi NAGAI <nagai@...>
2005/02/18
永井@知能.九工大です.
[#25726] named capture — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
6 messages
2005/02/19
[#25741] Oniguruma 3.7.0 — Kazuo Saito <ksaito@...>
斉藤です。
7 messages
2005/02/21
[#25755] I/O operation differs signal handler — Minero Aoki <aamine@...>
青木です。
14 messages
2005/02/24
[#25756] Re: I/O operation differs signal handler
— Tanaka Akira <akr@...17n.org>
2005/02/24
In article <20050224091450P.aamine@loveruby.net>,
[#25758] Re: I/O operation differs signal handler
— Tanaka Akira <akr@...17n.org>
2005/02/24
In article <1109213650.235317.11155.nullmailer@x31.priv.netlab.jp>,
[#25759] Re: I/O operation differs signal handler
— Yukihiro Matsumoto <matz@...>
2005/02/24
まつもと ゆきひろです
[#25760] Re: I/O operation differs signal handler
— Tanaka Akira <akr@...17n.org>
2005/02/24
In article <1109224128.668484.13752.nullmailer@x31.priv.netlab.jp>,
[ruby-dev:25750] Re: pthread trouble on sighandler
From:
Hidetoshi NAGAI <nagai@...>
Date:
2005-02-22 16:11:33 UTC
List:
ruby-dev #25750
永井@知能.九工大です.
From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Subject: [ruby-dev:25749] Re: pthread trouble on sighandler
Date: Wed, 23 Feb 2005 00:35:07 +0900
Message-ID: <20050223.003454.74737078.nagai@ai.kyutech.ac.jp>
> そうしますと,ruby スレッドでない pthread で
> ruby のシグナルハンドラがシグナルを受け取った場合、
> その pthread でこれ以上シグナルを受け取らないように
> pthread_sigmask で設定して pthread_kill で ruby
> スレッドに送り直すようにしなければならないのでしょうか?
私もよくわからないので叩き台としてのパッチを作るとすると,
イメージとしては添付のようなものでしょうか?
ただし,これはとりあえずの linux 環境のみのためのもので,
Win 環境ではコンパイルできません.(^_^;
Win での対応する関数を知らないためですので,
どなたか書き換えてくださいませ.
Index: signal.c
===================================================================
RCS file: /var/cvs/src/ruby/signal.c,v
retrieving revision 1.57
diff -u -r1.57 signal.c
--- signal.c 22 Feb 2005 14:50:33 -0000 1.57
+++ signal.c 22 Feb 2005 16:05:54 -0000
@@ -436,6 +436,29 @@
}
}
+void
+sigsend_to_ruby_thread(sig)
+ int sig;
+{
+#ifdef HAVE_NATIVETHREAD
+# ifdef HAVE_SIGPROCMASK
+ sigset_t mask, old_mask;
+# else
+ int mask, old_mask;
+# endif
+
+#ifdef HAVE_SIGPROCMASK
+ sigfillset(&mask);
+ sigprocmask(SIG_BLOCK, &mask, &old_mask);
+#else
+ mask = sigblock(~0);
+ sigsetmask(mask);
+#endif
+
+ ruby_native_thread_kill(sig);
+#endif
+}
+
static RETSIGTYPE sighandler _((int));
static RETSIGTYPE
sighandler(sig)
@@ -452,7 +475,7 @@
#ifdef HAVE_NATIVETHREAD
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
- /* ignore signals on non-Ruby native thread */
+ sigsend_to_ruby_thread(sig);
return;
}
#endif
@@ -483,7 +506,7 @@
{
#ifdef HAVE_NATIVETHREAD
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
- /* ignore signals on non-Ruby native thread */
+ sigsend_to_ruby_thread(sig);
return;
}
#endif
@@ -500,7 +523,7 @@
{
#ifdef HAVE_NATIVETHREAD
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
- /* ignore signals on non-Ruby native thread */
+ sigsend_to_ruby_thread(sig);
return;
}
#endif
@@ -572,7 +595,7 @@
{
#ifdef HAVE_NATIVETHREAD
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
- /* ignore signals on non-Ruby native thread */
+ sigsend_to_ruby_thread(sig);
return;
}
#endif
Index: eval.c
===================================================================
RCS file: /var/cvs/src/ruby/eval.c,v
retrieving revision 1.755
diff -u -r1.755 eval.c
--- eval.c 22 Feb 2005 14:57:43 -0000 1.755
+++ eval.c 22 Feb 2005 16:05:56 -0000
@@ -1241,6 +1241,12 @@
is_ruby_native_thread() {
return NATIVETHREAD_EQUAL(ruby_thid, NATIVETHREAD_CURRENT());
}
+void
+ruby_native_thread_kill(sig)
+ int sig;
+{
+ NATIVETHREAD_KILL(ruby_thid, sig);
+}
#endif
NORETURN(static void rb_thread_start_1 _((void)));
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp