[Mono-bugs] [Bug 589474] calling WebBrowser.Dispose() Seg faults

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Mar 25 23:42:30 EDT 2010


http://bugzilla.novell.com/show_bug.cgi?id=589474

http://bugzilla.novell.com/show_bug.cgi?id=589474#c1


--- Comment #1 from tom hindle <tom_hindle at sil.org> 2010-03-26 03:42:27 UTC ---
Created an attachment (id=350713)
 --> (http://bugzilla.novell.com/attachment.cgi?id=350713)
Test case showing seg fault creating and displaying two web browsers
sequentially

The seconded attached test case shows that is not possible to show a WebBrowser
then close it down and then show it again.


The believe this is caused by gluezilla semi cleaning it XPCom / xul objects. 
However I have experimented with also doing a NS_ShutdownXPCOM() (in addition
to XPComGlueShutdown in Widget.cpp) but this caused it to break in other areas.
Possibly some of the XPCom object are brittle, and can't handle the XPCom
init/Shutdown cycle happening multiple times in a single process instance.

I also tried disabling the XPCom shutdown and only doing the initialization
once and this improved matters meaning I could display the the WebBrowser
multiple times, however each additional WebBrowser create got progressively
slower until the create hung.

The third thing I tried was to create a libgluzilla wrapper which dlopened and
dlclosed the real libgluzilla, on each init and shutdown, to ensure XPCom
global vars were not persisted. This seem to improve matters but caused issues
with the 'NativeEmbedWidget' user defined type (I think it registers it self
with some global defined data struct, and doesn't take kindly to being dlcosed
and then  dl(re)opened)

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list