So I tried the pdd25cx branch at r28617 with Kea Common Lisp and got 17 subtest failures, 15 of which appear to be due to transfer of control to the wrong error handler. The attached code illustrates the problem:
[EMAIL PROTECTED]> ./parrot eh-test.pir got bar test err: Tried to get null global [EMAIL PROTECTED]> Since the error is caused in the "main" sub, the error message ought to say main err: Tried to get null global as it does in trunk. So the test_err handler is not getting disestablished when the "test" sub returns. I assume this applies to all continuations; otherwise, adding a "pop_eh" would be enough. It looks like the failure in t/pmc/coroutine.t case 3 ("Coroutine - exception in main") is related, but haven't looked at it in detail. Do you have a plan for how to fix this? I would love to help, but I have no idea what you have in mind. -- Bob Rogers http://rgrjr.dyndns.org/
.sub main :main $P1 = new 'String' $P1 = 'bar' set_global 'foo', $P1 push_eh main_err $S0 = 'foo' test($S0) null $S0 ## This fails with "Tried to get null global", but ## incorrectly sends us to the "test err:" handler. get_global $P0, $S0 print "done.\n" end main_err: .get_results ($P0, $S0) print "main err: " print $S0 print "\n" .end .sub test .param string str push_eh test_err get_global $P0, str print "got " print $P0 print "\n" .return () test_err: .get_results ($P0, $S0) print "test err: " print $S0 print "\n" .end