[#28677] `Socket#unpack_sockaddr_un': sockaddr_un size differs - 15 required; 110 given (TypeError) — Tanaka Akira <akr@...17n.org>
ふと気がついたのですが、Socket.unpack_sockaddr_un に
[#28681] ブロックパラメータと多値について — Takaaki Tateishi <ttate@...>
まつもと ゆきひろです
[#28689] digest.rb — Tanaka Akira <akr@...17n.org>
require 'digest/sha2' の sha2 がどうも余計に思えるので、
久しぶりに復帰。
In article <863bav6a0w.knu@iDaemons.org>,
[#28694] test/socket for Windows — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#28700] irb/init.rb code suggestion to find user's home directory in windows — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
[#28708] 1.8.5 release schedule? — URABE Shyouhei <root@...>
というわけで今日の基調講演で8月に1.8.5が出ることになったわけですが。
まつもと ゆきひろです
卜部です。
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
とみたです。
とみたです。
卜部です。
柳田です。
In article <y7vnup05.wl%yanagi@shakenbu.org>,
> いちおう問題の切り分けをするために確認したいんですが、その環
In article <veqrun77.wl%yanagi@shakenbu.org>,
mswin32 版ではどうなるのだろうと思って
Cygwin @ WindowsXP SP2 です。
In article <449D66EC.8050405@cyanet.jp>,
send の第一引数が mesg なので変わって当然でした orz
Cで書いたプログラムで127.0.0.1に向かって空データを送ったところ無事届きま
ruby が 0.0.0.0 で待ち受けて、C言語プログラムで 127.0.0.1 に空パケットを
下記の通り Winsock2 を使わずにC言語でプログラムを書いて、空パケットを投
In article <449D921F.8080109@cyanet.jp>,
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
卜部です。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
In article <1155082949.798513.13047.nullmailer@x31.priv.netlab.jp>,
[#28715] several problems on the big commit — Tanaka Akira <akr@...17n.org>
件の大きなコミットをざっと眺めてみたのですが、
[#28718] binding の仕様変更? or バグ? — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
[#28720] IO.readとバイナリモード — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#28729] backport Process.getrlimit and Process.setrlimit to 1.8 — Tanaka Akira <akr@...17n.org>
何回か (chkbuild で CPU 時間を制限するとか、cgi で CPU 時間
まつもと ゆきひろです
大原です。
[#28741] not ok iterator 80 -- ./sample/test.rb:1104 — Tanaka Akira <akr@...17n.org>
sample/test.rb が 2つ失敗していますが、最初の失敗は次のものです。
[#28744] rational 1.08 — Tadayoshi Funaba <tadf@...>
ふなばです。
原です。
ふなばです。
まつもと ゆきひろです
まつもと ゆきひろです
原です。
[#28747] lack in pp — Tadashi Saito <shiba@...2.accsnet.ne.jp>
こんにちは。斎藤と申します。
[#28770] signal & native-thread — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
[#28778] GC problem (?) in 1.8 — URABE Shyouhei <root@...>
卜部です。
In article <449851E1.9030302@mput.dip.jp>,
[#28786] "abc"[3] returns "" — Tanaka Akira <akr@...17n.org>
test-all が
[#28805] `DRb::DRbMessage#recv_request': uninitialized constant DRb::DRbMessage::Values (NameError) — Tanaka Akira <akr@...17n.org>
[ruby-dev:28802] のパッチがあたると、次はこうです。
[#28812] test_return_trace_func(TestIterator): /tmp/19/lib/ruby/1.9/test/unit.rb:275: ArgumentError — Tanaka Akira <akr@...17n.org>
で、次は
[#28822] when *a — Minero Aoki <aamine@...>
青木です。
[#28840] SEGV by block.call — Tanaka Akira <akr@...17n.org>
どうも boron での SEGV が直らないので、
[#28875] rb_define_methods — SASADA Koichi <ko1@...>
ささだです。
卜部です。
まつもと ゆきひろです
[ruby-dev:28855] Re: ruby 1.8.5 preview1
永井@知能.九工大です.
From: Yukihiro Matsumoto <matz@ruby-lang.org>
Subject: [ruby-dev:28818] ruby 1.8.5 preview1 (Re: Re: 1.8.5 release schedule?)
Date: Sat, 24 Jun 2006 12:12:32 +0900
Message-ID: <1151118741.934789.24502.nullmailer@x31.priv.netlab.jp>
> 先程、置きました。
> ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.5-preview1.tar.gz
preview1 の直前に revert してしまった signal の patch ですが,
もし可能であれば,preview1 に添付のパッチをあてて
テストしてみていただけないでしょうか?
問題がなさそうなら,再適用を考えています.
Index: eval.c
===================================================================
RCS file: /var/cvs/src/ruby/eval.c,v
retrieving revision 1.616.2.175
diff -u -r1.616.2.175 eval.c
--- eval.c 23 Jun 2006 21:37:08 -0000 1.616.2.175
+++ eval.c 25 Jun 2006 16:01:13 -0000
@@ -3,7 +3,7 @@
eval.e -
$Author: nagai $
- $Date: 2006/06/23 21:37:08 $
+ $Date: 2006/06/21 08:37:32 $
created at: Thu Jun 10 14:22:17 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -1342,6 +1342,15 @@
is_ruby_native_thread() {
return NATIVETHREAD_EQUAL(ruby_thid, NATIVETHREAD_CURRENT());
}
+
+# ifdef HAVE_NATIVETHREAD_KILL
+void
+ruby_native_thread_kill(sig)
+ int sig;
+{
+ NATIVETHREAD_KILL(ruby_thid, sig);
+}
+# endif
#endif
void
Index: ruby.h
===================================================================
RCS file: /var/cvs/src/ruby/ruby.h,v
retrieving revision 1.97.2.16
diff -u -r1.97.2.16 ruby.h
--- ruby.h 23 Jun 2006 21:37:10 -0000 1.97.2.16
+++ ruby.h 25 Jun 2006 16:01:14 -0000
@@ -696,6 +696,9 @@
# define NATIVETHREAD_CURRENT() pthread_self()
# define NATIVETHREAD_EQUAL(t1,t2) pthread_equal((t1),(t2))
# define HAVE_NATIVETHREAD
+
+# define NATIVETHREAD_KILL(th,sig) pthread_kill((th),(sig))
+# define HAVE_NATIVETHREAD_KILL
#elif defined(_WIN32) || defined(_WIN32_WCE)
typedef DWORD rb_nativethread_t;
# define NATIVETHREAD_CURRENT() GetCurrentThreadId()
@@ -703,10 +706,13 @@
# define HAVE_NATIVETHREAD
#endif
#ifdef HAVE_NATIVETHREAD
-RUBY_EXTERN int is_ruby_native_thread();
+int is_ruby_native_thread _((void));
#else
#define is_ruby_native_thread() (1)
#endif
+#ifdef HAVE_NATIVETHREAD_KILL
+void ruby_native_thread_kill _((int));
+#endif
#if defined(__cplusplus)
#if 0
Index: signal.c
===================================================================
RCS file: /var/cvs/src/ruby/signal.c,v
retrieving revision 1.50.2.11
diff -u -r1.50.2.11 signal.c
--- signal.c 23 Jun 2006 21:37:08 -0000 1.50.2.11
+++ signal.c 25 Jun 2006 16:01:14 -0000
@@ -3,7 +3,7 @@
signal.c -
$Author: nagai $
- $Date: 2006/06/23 21:37:08 $
+ $Date: 2006/06/21 08:37:32 $
created at: Tue Dec 20 10:13:44 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -304,6 +304,7 @@
int safe;
} trap_list[NSIG];
static rb_atomic_t trap_pending_list[NSIG];
+static char rb_trap_accept_nativethreads[NSIG];
rb_atomic_t rb_trap_pending;
rb_atomic_t rb_trap_immediate;
int rb_prohibit_interrupt = 1;
@@ -335,21 +336,23 @@
{
struct sigaction sigact, old;
+ rb_trap_accept_nativethreads[signum] = 0;
+
sigact.sa_handler = handler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
-#if defined(SA_RESTART)
+# if defined(SA_RESTART)
/* All other signals but VTALRM shall restart restartable syscall
VTALRM will cause EINTR to syscall if interrupted.
*/
if (signum != SIGVTALRM) {
sigact.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
}
-#endif
-#ifdef SA_NOCLDWAIT
+# endif
+# ifdef SA_NOCLDWAIT
if (signum == SIGCHLD && handler == SIG_IGN)
sigact.sa_flags |= SA_NOCLDWAIT;
-#endif
+# endif
sigaction(signum, &sigact, &old);
return old.sa_handler;
}
@@ -361,9 +364,46 @@
{
ruby_signal(signum, handler);
}
-#else
-#define ruby_signal(sig,handler) signal((sig),(handler))
-#endif
+
+# ifdef HAVE_NATIVETHREAD
+static sighandler_t
+ruby_nativethread_signal(signum, handler)
+ int signum;
+ sighandler_t handler;
+{
+ sighandler_t old;
+
+ old = ruby_signal(signum, handler);
+ rb_trap_accept_nativethreads[signum] = 1;
+ return old;
+}
+
+void
+posix_nativethread_signal(signum, handler)
+ int signum;
+ sighandler_t handler;
+{
+ ruby_nativethread_signal(signum, handler);
+}
+# endif
+
+#else /* !POSIX_SIGNAL */
+#define ruby_signal(sig,handler) (rb_trap_accept_nativethreads[sig] = 0, signal((sig),(handler)))
+
+# ifdef HAVE_NATIVETHREAD
+static sighandler_t
+ruby_nativethread_signal(signum, handler)
+ int signum;
+ sighandler_t handler;
+{
+ sighandler_t old;
+
+ old = signal(signum, handler);
+ rb_trap_accept_nativethreads[signum] = 1;
+ return old;
+}
+# endif
+#endif /* POSIX_SIGNAL */
static void signal_exec _((int sig));
static void
@@ -394,11 +434,36 @@
break;
}
}
+ else if (trap_list[sig].cmd == Qundef) {
+ rb_thread_signal_exit();
+ }
else {
rb_thread_trap_eval(trap_list[sig].cmd, sig, trap_list[sig].safe);
}
}
+#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
+static void
+sigsend_to_ruby_thread(int sig)
+{
+# 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)
@@ -414,11 +479,22 @@
rb_bug("trap_handler: Bad signal %d", sig);
}
+#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
+ if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
+ sigsend_to_ruby_thread(sig);
+ return;
+ }
+#endif
+
#if !defined(BSD_SIGNAL) && !defined(POSIX_SIGNAL)
- ruby_signal(sig, sighandler);
+ if (rb_trap_accept_nativethreads[sig]) {
+ ruby_nativethread_signal(sig, sighandler);
+ } else {
+ ruby_signal(sig, sighandler);
+ }
#endif
- if (ATOMIC_TEST(rb_trap_immediate)) {
+ if (trap_list[sig].cmd == 0 && ATOMIC_TEST(rb_trap_immediate)) {
IN_MAIN_CONTEXT(signal_exec, sig);
ATOMIC_SET(rb_trap_immediate, 1);
}
@@ -434,6 +510,13 @@
sigbus(sig)
int sig;
{
+#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
+ if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
+ sigsend_to_ruby_thread(sig);
+ return;
+ }
+#endif
+
rb_bug("Bus Error");
}
#endif
@@ -444,6 +527,13 @@
sigsegv(sig)
int sig;
{
+#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
+ if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
+ sigsend_to_ruby_thread(sig);
+ return;
+ }
+#endif
+
rb_bug("Segmentation fault");
}
#endif
@@ -772,6 +862,34 @@
}
}
+#if 0
+/*
+ * If you write a handler which works on any native thread,
+ * please enable this function and use it to install the handler,
+ * instead of `install_sighandler()'.
+ */
+#ifdef HAVE_NATIVETHREAD
+static void
+install_nativethread_sighandler(signum, handler)
+ int signum;
+ sighandler_t handler;
+{
+ sighandler_t old;
+ int old_st;
+
+ old_st = rb_trap_accept_nativethreads[signum];
+ old = ruby_nativethread_signal(signum, handler);
+ if (old != SIG_DFL) {
+ if (old_st) {
+ ruby_nativethread_signal(signum, old);
+ } else {
+ ruby_signal(signum, old);
+ }
+ }
+}
+#endif
+#endif
+
static void
init_sigchld(sig)
int sig;
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp