[Mono-devel-list] Mono crashes on managed null dereference when also using an embedded Mozilla

Steven Brown swbrown at ucsd.edu
Wed May 26 01:00:09 EDT 2004


Hello, I've got a testcase (MonoCrash.cs) that causes Mono (beta 1) to 
crash when a managed null dereference is caused anytime after setting up 
an embedded Mozilla (1.6).  I've tracked the problem down to this:


- Mozilla in nsProfileLock.cpp, when on UNIX and can use symlinks, wraps 
signals like SIGSEGV to assume a crash happened and clean up its locks.

- Mono uses the MMU to catch managed null dereferences, so generates 
such a signal whenever it occurs.

- Mozilla catches the signal first, cleans up its locks (bad!), and 
calls the old handler (Mono's).

- Mono gets into some sort of infinite loop trying to throw the 
exception and eventually the stack is full and cores (stacktrace.txt).


I'm thinking Mono got really confused by a non-mono stack frame in 
mono_arch_find_jit_info, and maybe caused a null dereference itself 
which caused the loop.  Any ideas?

As a related question, due to the way Mono checks for null dereferences 
(just lets them happen and raise a signal), Mozilla will see any null 
dereference anywhere inside of managed code as a reason to prepare to 
die, which is obviously bad, since the exception might not have been 
fatal to the managed code.  Should the Mozilla folks just trust in 
atexit(), or maybe not do this when Mozilla is being used embedded via 
gtkmozembed?


For reference, nsProfileLock.cpp (LockWithSymlink, FatalSignalHandler): 
http://lxr.mozilla.org/mozilla/source/profile/dirserviceprovider/src/nsProfileLock.cpp

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: stacktrace.txt
Url: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20040525/101c0993/attachment.txt 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: MonoCrash.cs
Url: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20040525/101c0993/attachment.pl 


More information about the Mono-devel-list mailing list