[Mono-dev] SIGILL in finally clause without catch
Zoltan Varga
vargaz at gmail.com
Fri Apr 25 07:01:59 EDT 2008
Hi,
Mono throws that exception when it receives a SIGILL signal while
executing some
code. If it receives it while executing native code, it appears that
it is thrown by
the (managed-to-native) wrapper. So the problem is usually in the native code.
What platform/os is this ?
Zoltan
2008/4/23 Christian Stümpel <mail at christian-stuempel.de>:
> In code I have to port from MS .NET to mono I observed several SIGILL
> crashes at points in code, where calls to external code are made within a
> try block followed by a finally but *without* a catch statement.
>
>
> try {
> unrar.dosomething();
> throw new Exception("test");
> }
>
> // no catch here
>
> finally
> {
> unrar.close(); // calls unmanaged code
>
> }
>
> The unmanaged code called in unrar.dosomething() is C++ code compiled with
> exceptions enabled but it does not throw the exception, but the managed code
> that follows. The call to unrar.close() (which does not throw any exception)
> in the finally clause crashes with:
>
> System.ExecutionEngineException: SIGILL at (wrapper managed-to-native)
> NntpApp.nntp.rar.Unrar:RARCloseArchive (intptr) at
> NntpApp.nntp.rar.Unrar.Close () [0x00000] at
> usenextapp.FilegroupPreview.ExtractFileFromRar (System.String path)
> [0x00000]
>
> The SIGILL does not appear if I catch the exception and rethrow it in the
> finally clause
>
> Exception e=null;
>
> try {
> unmanaged1();
> throw new Exception("test");
> }
>
> catch(Exception ex)
> {
> e= ex;
> }
>
> finally
> {
> cleanup();
> if (e!=null)
> throw e;
> }
>
> Any thoughts on that?
>
> Christian Stümpel
>
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
More information about the Mono-devel-list
mailing list