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

Attachment: exception.patch
Description: Binary data

Reply via email to