まつもと ゆきひろです
In message "[ruby-dev:22398] Re: Tk.callback_break causes seg-fault or hang-up"
on 03/12/25, Yukihiro Matsumoto <matz / ruby-lang.org> writes:
|む、Tcl/Tkでpthreadを使ってない時にもsegvですか。
|それは気づいてなかったな。
|
|tracebackを見る限りはメモリ関係のバグに見えるのですが。
SEGVの方はメモリバグでした。以下のパッチで直ります。ただ、
pthreadがあるとハングするのはこれとは別の理由のようです。
--- eval.c 24 Dec 2003 19:38:15 -0000 1.616
+++ eval.c 25 Dec 2003 06:25:54 -0000
@@ -5644,3 +5644,3 @@ eval(self, src, scope, file, line)
if (!NIL_P(mesg) && TYPE(mesg) == T_STRING) {
- rb_str_update(mesg, 0, 0, RARRAY(errat)->ptr[0]);
+ rb_str_prepend(mesg, RARRAY(errat)->ptr[0]);
}
--- string.c 30 Nov 2003 00:35:28 -0000 1.182
+++ string.c 25 Dec 2003 06:25:54 -0000
@@ -1453,2 +1453,11 @@ rb_str_insert(str, idx, str2)
+VALUE
+rb_str_prepend(str, str2)
+ VALUE str, str2;
+{
+ rb_str_modify(str);
+ rb_str_update(str, 0, 0, str2);
+ return str;
+}
+
static VALUE
--- intern.h 21 Dec 2003 08:29:06 -0000 1.139
+++ intern.h 25 Dec 2003 06:25:54 -0000
@@ -412,2 +412,3 @@ VALUE rb_str_append _((VALUE, VALUE));
VALUE rb_str_concat _((VALUE, VALUE));
+VALUE rb_str_prepend _((VALUE, VALUE));
int rb_str_hash _((VALUE));
@@ -415,3 +416,2 @@ int rb_str_cmp _((VALUE, VALUE));
VALUE rb_str_upto _((VALUE, VALUE, int));
-void rb_str_update _((VALUE, long, long, VALUE));
VALUE rb_str_inspect _((VALUE));