Running NUnitConsole_mono.exe in mono on Windows exposed the following bug:
If an exception were throw by the instruction immediately preceding a try block, the exception would be considered to be thrown inside the try block. A patch is attached which appears to solve the problem. The patch won't work if arch_handle_exception() can be called with ctx->SC_EIP pointing to the instruction which threw the exception. I think an exception can only be thrown by a CALL (as far as managed code is concerned) so EIP will always point to the instruction after the CALL. If this isn't the case, a different fix will be needed. I believe the same problem exists on Linux as well, but I haven't tested. Cheers, Linus
exception.patch
Description: Binary data
