[#1884] multiple exceptions for assert_raises — nobu.nokada@...

Hi,

14 messages 2003/12/04

[#1932] --enable-pthread broken? — Nathaniel Talbott <nathaniel@...>

[ruby-talk: 87759] and the surrounding thread seem to indicate that

29 messages 2003/12/11
[#1933] Re: --enable-pthread broken? — matz@... (Yukihiro Matsumoto) 2003/12/11

Hi,

[#1934] Re: --enable-pthread broken? — Nathaniel Talbott <nathaniel@...> 2003/12/11

On Dec 11, 2003, at 11:49, Yukihiro Matsumoto wrote:

[#1935] Re: --enable-pthread broken? — ts <decoux@...> 2003/12/11

>>>>> "N" == Nathaniel Talbott <nathaniel@talbott.ws> writes:

[#1937] Re: --enable-pthread broken? — nobu.nokada@... 2003/12/11

Hi,

[#1938] Re: --enable-pthread broken? — Nathaniel Talbott <nathaniel@...> 2003/12/12

On Dec 11, 2003, at 16:10, nobu.nokada@softhome.net wrote:

[#1939] Re: --enable-pthread broken? — matz@... (Yukihiro Matsumoto) 2003/12/12

Hi,

[#1941] Re: --enable-pthread broken? — matz@... (Yukihiro Matsumoto) 2003/12/12

Hi,

[#1943] Re: --enable-pthread broken? — Nathaniel Talbott <nathaniel@...> 2003/12/12

On Dec 11, 2003, at 20:48, Yukihiro Matsumoto wrote:

[#1953] Re: --enable-pthread broken? — matz@... (Yukihiro Matsumoto) 2003/12/13

Hi,

[#1959] Re: --enable-pthread broken? — ts <decoux@...> 2003/12/14

>>>>> "Y" == Yukihiro Matsumoto <matz@ruby-lang.org> writes:

[#1961] Re: --enable-pthread broken? — matz@... (Yukihiro Matsumoto) 2003/12/15

Hi,

[#1962] Re: --enable-pthread broken? — ts <decoux@...> 2003/12/15

>>>>> "Y" == Yukihiro Matsumoto <matz@ruby-lang.org> writes:

[#1936] Can't define +@ for Symbol (plus ruby install problem) — "T. Onoma" <transami@...>

I wanted to see if the +@ problem was fixed in 1.8.1 preview 3 but when I do

11 messages 2003/12/11

[#1973] Where to install documentation — Dave Thomas <dave@...>

Folks:

48 messages 2003/12/15
[#1982] Re: Where to install documentation — Eric Hodel <drbrain@...7.net> 2003/12/15

Dave Thomas (dave@pragprog.com) wrote:

[#1984] Re: Where to install documentation — Dave Thomas <dave@...> 2003/12/15

[#1991] Re: Where to install documentation — "Gavin Sinclair" <gsinclair@...> 2003/12/16

>

[#1992] Re: Where to install documentation — Dave Thomas <dave@...> 2003/12/16

[#2000] Re: Where to install documentation — Minero Aoki <aamine@...> 2003/12/16

Hi,

[#2002] Re: Where to install documentation — Dave Thomas <dave@...> 2003/12/16

[#2037] --enable-pthread still segfaults... — Nathaniel Talbott <nathaniel@...>

I've finally been able to test my application under load using the

25 messages 2003/12/23
[#2038] Re: --enable-pthread still segfaults... — matz@... (Yukihiro Matsumoto) 2003/12/23

Hi,

[#2039] Re: --enable-pthread still segfaults... — Nathaniel Talbott <nathaniel@...> 2003/12/23

On Dec 23, 2003, at 14:17, Yukihiro Matsumoto wrote:

[#2040] Re: --enable-pthread still segfaults... — matz@... (Yukihiro Matsumoto) 2003/12/23

Hi,

[#2041] Re: --enable-pthread still segfaults... — Nathaniel Talbott <nathaniel@...> 2003/12/23

On Dec 23, 2003, at 14:34, Yukihiro Matsumoto wrote:

[#2042] Re: --enable-pthread still segfaults... — matz@... (Yukihiro Matsumoto) 2003/12/23

Hi,

[#2043] Re: --enable-pthread still segfaults... — Nathaniel Talbott <nathaniel@...> 2003/12/23

On Dec 23, 2003, at 14:44, Yukihiro Matsumoto wrote:

[#2045] Re: --enable-pthread still segfaults... — matz@... (Yukihiro Matsumoto) 2003/12/23

Hi,

[#2046] Re: --enable-pthread still segfaults... — Nathaniel Talbott <nathaniel@...> 2003/12/23

> I'm afraid you're using old configure file. Can you wipe off old

[#2049] Re: --enable-pthread still segfaults... — Nathaniel Talbott <nathaniel@...> 2003/12/23

On Dec 23, 2003, at 15:18, Nathaniel Talbott wrote:

[#2050] Re: --enable-pthread still segfaults... — matz@... (Yukihiro Matsumoto) 2003/12/23

In message "Re: --enable-pthread still segfaults..."

[#2122] Bad interaction between timeout.rb and --enable-pthread — Nathaniel Talbott <nathaniel@...>

Here's a testcase that shows the problem:

13 messages 2003/12/31
[#2123] sleep is broken with --enable-pthread [Was: Bad interaction between timeout.rb and --enable-pthread] — Nathaniel Talbott <nathaniel@...> 2003/12/31

I should have reduced it more before posting...

Re: --enable-pthread broken?

From: matz@... (Yukihiro Matsumoto)
Date: 2003-12-13 02:48:35 UTC
List: ruby-core #1953
Hi,

In message "Re: --enable-pthread broken?"
    on 03/12/12, Nathaniel Talbott <nathaniel@talbott.ws> writes:

|            |                    enable-pthread                |
|            | with (unpatched) | with (patched) | without      |
|---------------------------------------------------------------
|  Main app  | segfault         | untested       | blocked      |
|---------------------------------------------------------------
|killer.rb  | segfault         | blocked        | inconclusive |
|
|I hope this helps; please let me know if there's any more information 
|you need. I'll let you know if I manage to get killer.rb to block 
|without --enable-pthread.

LinuxThread has something bad with signal handling, I guess.  This
patch may solve the blocking problem at the cost of potential
performance slow down.  Can you try (with --enable-pthread)?

							matz.

--- eval.c	13 Dec 2003 00:01:28 -0000	1.603
+++ eval.c	13 Dec 2003 02:00:21 -0000
@@ -9487,3 +9487,63 @@ rb_thread_alloc(klass)
 
-#if defined(HAVE_SETITIMER)
+static int thread_init = 0;
+
+#if defined(HAVE_LIBPTHREAD) && defined(_REENTRANT)
+# define PTHREAD_TIMER
+#endif
+
+#if defined(POSIX_SIGNAL)
+# define ruby_signal(x,y) posix_signal((x), (y))
+#else
+# define ruby_signal(x,y) signal((x), (y))
+#endif
+
+#if defined(PTHREAD_TIMER)
+static pthread_t time_thread;
+
+static void
+catch_timer(sig)
+    int sig;
+{
+#if !defined(POSIX_SIGNAL) && !defined(BSD_SIGNAL)
+    signal(sig, catch_timer);
+#endif
+    rb_thread_schedule();
+}
+
+static void*
+thread_timer(dummy)
+    void *dummy;
+{
+    struct timespec req, rem;
+
+    for (;;) {
+	if (!rb_thread_critical) {
+#if 1
+	    if (rb_trap_immediate) {
+		pthread_kill(ruby_thid, SIGVTALRM);
+	    }
+	    else {
+		rb_thread_pending = 1;
+	    }
+#else
+	    rb_thread_pending = 1;
+#endif
+	    req.tv_sec = 0;
+	    req.tv_nsec = 10000000;
+	    nanosleep(&req, &rem);
+	}
+    }
+}
+
+void
+rb_thread_start_timer()
+{
+}
+
+void
+rb_thread_stop_timer()
+{
+}
+#elif defined(HAVE_SETITIMER)
+
 static void
@@ -9502,8 +9562,2 @@ catch_timer(sig)
 }
-#else
-int rb_thread_tick = THREAD_TICK;
-#endif
-
-#if defined(HAVE_SETITIMER)
-static int thread_init = 0;
 
@@ -9532,2 +9586,4 @@ rb_thread_stop_timer()
 }
+#else
+int rb_thread_tick = THREAD_TICK;
 #endif
@@ -9551,14 +9607,14 @@ rb_thread_start_0(fn, arg, th)
 
-#if defined(HAVE_SETITIMER)
     if (!thread_init) {
-#ifdef POSIX_SIGNAL
-	posix_signal(SIGVTALRM, catch_timer);
-#else
-	signal(SIGVTALRM, catch_timer);
-#endif
-
 	thread_init = 1;
+#if defined(HAVE_SETITIMER) || defined(PTHREAD_TIMER)
+	ruby_signal(SIGVTALRM, catch_timer);
+
+#ifdef PTHREAD_TIMER
+	pthread_create(&time_thread, 0, thread_timer, 0);
+#else
 	rb_thread_start_timer();
-    }
 #endif
+#endif
+    }
 

In This Thread