イマイチ自信がないのですが,自分自身を mark するっておかしい気がします.
というわけで,次のような変更はどうでしょうか.

Index: cont.c
===================================================================
--- cont.c	(revision 33272)
+++ cont.c	(working copy)
@@ -138,7 +138,7 @@
     if (ptr) {
 	rb_context_t *cont = ptr;
 	rb_gc_mark(cont->value);
-	rb_thread_mark(&cont->saved_thread);
+	rb_gc_mark(cont->saved_thread->self);

 	if (cont->vm_stack) {
 #ifdef CAPTURE_JUST_VALID_VM_STACK



(2011/10/01 10:41), Kazuki Tsujimoto wrote:
>   	RUBY_MARK_UNLESS_NULL(th->first_proc);
>   	if (th->first_proc) RUBY_MARK_UNLESS_NULL(th->first_args);
>   
>  +	RUBY_MARK_UNLESS_NULL(th->self);
>   	RUBY_MARK_UNLESS_NULL(th->thgroup);
>   	RUBY_MARK_UNLESS_NULL(th->value);
>   	RUBY_MARK_UNLESS_NULL(th->errinfo);
> =end
> 


-- 
// SASADA Koichi at atdot dot net