[#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: nobu.nokada@...
Date: 2003-12-11 21:10:26 UTC
List: ruby-core #1937
Hi,

At Fri, 12 Dec 2003 03:08:58 +0900,
ts wrote:
> N> I tried it against the latest Ruby CVS, and it still crashes. It seemed 
> N> to take (subjectively) longer to crash, though. Interestingly, 2 out of 
> N> 3 runs gave me this instead of a segfault:
> 
>  Well, look where it crash.
> 
>  With the previous version normally you have a crash in
>    * rb_thread_restore_content()
>    * and localjump_destination()
> 
>  normally with the new patch (if I'm right), you have just a crash in
>    * localjump_destination()

Then, it'd be simple.


Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.602
diff -u -2 -p -r1.602 eval.c
--- eval.c	11 Dec 2003 21:06:14 -0000	1.602
+++ eval.c	11 Dec 2003 21:09:34 -0000
@@ -30,5 +30,11 @@
 
 #include <stdio.h>
-#include <setjmp.h>
+#if defined(__ia64__) || defined(HAVE_NATIVETHREAD)
+# include <ucontext.h>
+# define USE_CONTEXT
+#else
+# include <setjmp.h>
+#endif
+
 #include "st.h"
 #include "dln.h"
@@ -83,4 +89,26 @@ char *strrchr _((const char*,const char)
 #endif
 
+#ifdef USE_CONTEXT
+typedef struct {
+    ucontext_t context;
+    volatile int status;
+} rb_jmpbuf_t[1];
+
+#undef longjmp
+#undef setjmp
+NORETURN(static void rb_jump_context(rb_jmpbuf_t, int));
+static inline void
+rb_jump_context(env, val)
+    rb_jmpbuf_t env;
+    int val;
+{
+    env->status = val;
+    setcontext(&env->context);
+    abort();			/* ensure noreturn */
+}
+#define longjmp(env, val) rb_jump_context(env, val)
+#define setjmp(j) ((j)->status = 0, getcontext(&(j)->context), (j)->status)
+#else
+typedef jmp_buf rb_jmpbuf_t;
 #ifndef setjmp
 #ifdef HAVE__SETJMP
@@ -89,4 +117,5 @@ char *strrchr _((const char*,const char)
 #endif
 #endif
+#endif
 
 #include <sys/types.h>
@@ -848,5 +877,5 @@ static struct iter *ruby_iter;
 
 struct tag {
-    jmp_buf buf;
+    rb_jmpbuf_t buf;
     struct FRAME *frame;
     struct iter *iter;
@@ -7859,5 +7888,4 @@ Init_Proc()
 
 #ifdef __ia64__
-#include <ucontext.h>
 #if defined(__FreeBSD__)
 /*
@@ -7964,10 +7992,5 @@ enum thread_status {
 struct thread {
     struct thread *next, *prev;
-#ifdef __ia64__
-    ucontext_t context;
-    int context_status;
-#else
-    jmp_buf context;
-#endif
+    rb_jmpbuf_t context;
 #ifdef SAVE_WIN32_EXCEPTION_LIST
     DWORD win32_exception_list;
@@ -8351,5 +8374,5 @@ rb_thread_save_context(th)
     FLUSH_REGISTER_WINDOWS;
     MEMCPY(th->stk_ptr, th->stk_pos, VALUE, th->stk_len);
-#ifdef __ia64__
+#ifdef USE_CONTEXT
     {
 	ucontext_t ctx;
@@ -8357,4 +8380,5 @@ rb_thread_save_context(th)
 
 	getcontext(&ctx);
+#ifdef __ia64__
 	bot = (VALUE*)__libc_ia64_register_backing_store_base;
 #if defined(__FreeBSD__)
@@ -8366,4 +8390,5 @@ rb_thread_save_context(th)
 	REALLOC_N(th->bstr_ptr, VALUE, th->bstr_len);
 	MEMCPY(th->bstr_ptr, (VALUE*)__libc_ia64_register_backing_store_base, VALUE, th->bstr_len);
+#endif
     }
 #endif
@@ -8435,14 +8460,7 @@ rb_thread_switch(n)
 }
 
-#ifdef __ia64__
-# define THREAD_SAVE_CONTEXT(th) \
-    (rb_thread_save_context(th),\
-     th->context_status = 0,\
-     rb_thread_switch((FLUSH_REGISTER_WINDOWS, getcontext(&th->context),(th)->context_status)))
-#else
-# define THREAD_SAVE_CONTEXT(th) \
+#define THREAD_SAVE_CONTEXT(th) \
     (rb_thread_save_context(th),\
      rb_thread_switch((FLUSH_REGISTER_WINDOWS, setjmp((th)->context))))
-#endif
 
 NORETURN(static void rb_thread_restore_context _((rb_thread_t,int)));
@@ -8522,10 +8540,5 @@ rb_thread_restore_context(th, exit)
     tmp->last_match = tval;
 
-#ifdef __ia64__
-    tmp->context_status = ex;
-    setcontext(&tmp->context);
-#else
     longjmp(tmp->context, ex);
-#endif
 }
 


-- 
Nobu Nakada

In This Thread