On 9/17/09 10:36 PM, Tobias C. Rittweiler wrote:
There is another issue I'd like to raise.
The reason for the funny behaviour, and why it consumed a lot of time to track this bug down is because there's no global handler which prints a Stack Trace for uncaught Exceptions. Instead of such a global handler, local "catch (...) { Debug.Trace ... }" are sprinkled all over the code base. And, obviously, they're easy to miss---as it has been the case here. So the exception is swept under the carpet and ABCL seems to unwind the stack to some safe point, probably the toplevel, and proceed from there.
Acknowledged.
The current codebase seemingly suffers from a lack of a coherent plan for how to deal with exceptions, at least to my understanding of it. I think the use of 'org.armedbear.lisp.ConditionThrowable' subclassing 'java.lang.Throwable' should be reconsidered, to make more consistent use of the [exception chaining mechanism introduced in Java 1.4][1].
But going through the code to remove all the instances of swallowing exceptions to at least print diagnostic information should be rather easily gathered low hanging fruit.
[1]: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html