On Wed, 14 May 2003 23:55:22 +0200, Jan Bernhardt wrote:
>
> Stacktrace case 1:
 
> #8  0x43a6b16d in jump_tag_but_local_jump (state=6) at eval.c:1314
> #9  0x43a731ff in rb_call0 (klass=1138029288, recv=1138014008, id=9313, argc=0, argv=0xbfffec6c, body=0x43d4bbd4, nosuper=0) at eval.c:4542
> #10 0x43a73584 in rb_call (klass=1138029288, recv=1138014008, mid=9313, argc=1, argv=0xbfffec68, scope=1) at eval.c:4606
> #11 0x43a73857 in rb_funcall (recv=1138014008, mid=9313, n=1) at ruby.h:571
> #12 0x43a5dee5 in MessageEnd() () at messages.cpp:31
> #13 0x43772cfe in mm_MessageEnd () from ./cstrike/addons/metamod/dlls/metamod_i386.so
>
> Stacktrace case 2:
> #18 0x43a730a9 in rb_call0 (klass=1138029288, recv=1138014008, id=9313, argc=0, argv=0xbffff1d8, body=0x43d4bbd4, nosuper=0) at eval.c:4513
> #19 0x43a73584 in rb_call (klass=1138029288, recv=1138014008, mid=9313, argc=1, argv=0xbffff1d4, scope=1) at eval.c:4606
> #20 0x43a73857 in rb_funcall (recv=1138014008, mid=9313, n=1) at ruby.h:571
> #21 0x43a5dee5 in MessageEnd() () at messages.cpp:31
> #22 0x43772cfe in mm_MessageEnd () from ./cstrike/addons/metamod/dlls/metamod_i386.so


<snip>
void MessageEnd(void) {
    rb_funcall(message_registry, rb_intern("dispatch_message"), 1, message);
    RETURN_META(MRES_IGNORED);
}
<snip>


you don't wrap rb_funcall() within a rb_protect().. 
Im guessing this is part of the reason.

see - how to use rb_protect()  warning: c++
http://ruby-talk.org/71421


--
Simon Strandgaard