From: arton Date: 2000-09-01T01:10:25+09:00 Subject: [ruby-dev:10769] Re: ruby-1.6.0-20000824.i586-mswin32 bug artonです。 やっと、家に帰れた...というくらい、今、忙しくて、全然検証できないんです が、 > + { > + DWORD* esp = (DWORD *)(con.Esp - sizeof(CONTEXT)); > + *(CONTEXT *)esp = con; > + *--esp = (DWORD)handler; > + *--esp = arg; > + *--esp = (DWORD)abort; /* never reached */ > + con.Esp = (DWORD)esp; ここ、うまいなぁ、と思ったけど、考えてみたら、他のスレッドのスタックはい じれないのでした。 (レジスターはCONTEXTに入ってますが、うまい復帰方法は考え付かないので、 とりあえずsignalの引数相当の分だけスタティック変数に突っ込んで、スタティ ック変数からシグナル関数に入る関数(ややこしい)にメインスレッドを突っ込 んそこから、どこかに飛ばせないでしょうか?) ・その中でスレッド作らせて、自分をsuspendさせ、CONTEXTを再度設定させて、 resumeさせるとかかな?