desktop-packages team mailing list archive
-
desktop-packages team
-
Mailing list archive
-
Message #19643
[Bug 783997] Re: Firefox 4.0.1 Crash Report [@ uGlobalMenuBar::ShouldParentStayVisible ]
** Tags added: testcase
--
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to firefox in Ubuntu.
https://bugs.launchpad.net/bugs/783997
Title:
Firefox 4.0.1 Crash Report [@ uGlobalMenuBar::ShouldParentStayVisible
]
Status in Unity global menubar extension for Firefox and Thunderbird:
Fix Released
Status in Global menubar extension 1.0 series:
Fix Released
Status in “firefox” package in Ubuntu:
Fix Released
Status in “thunderbird” package in Ubuntu:
Fix Released
Status in “firefox” source package in Natty:
Fix Released
Status in “thunderbird” source package in Natty:
Triaged
Bug description:
*** TEST CASE FOR SRU ***
This one is pretty difficult to reproduce, and it doesn't help that we
have no way of contacting the people who reported the crash reports to
Mozilla's crash system. However, I have a test case which I think
triggers the same bug
Preparation:
- Install indicator-appmenu-dbgsym
Test:
1) Attach gdb to unity-panel-service
2) Start Firefox or Thunderbird
3) In gdb, add a breakpoint on register_windows in indicator-appmenu.c
4) In Firefox, open a new window (or compose an e-mail in Thunderbird)
5) As soon as the new window appears, close it
6) gdb should have stopped on register_windows. Type cont so that Firefox (or Thunderbird) gets the reply
Result:
- With the old version, Firefox (or Thunderbird) will crash occasionally. It won't happen everytime (it might take several attempts to make it crash), and the trace may not look exactly the same as the ones linked from this bug, but I'm pretty sure it's the same issue (having uGlobalMenuBar::SetXULMenuVisibility in the trace is key). The issue is that all the members of the uGlobalMenuBar instance are invalid (as it was destroyed when the window was closed), so it could crash anywhere inside uGlobalMenuBar::SetXULMenuVisibility really.
- With the new version, they won't ever crash
***
There's lots of crash reports like this:
https://crash-
stats.mozilla.com/report/list?product=Firefox&platform=linux&query_search=signature&query_type=contains&query=uGlobalMenu&reason_type=contains&date=05%2F17%2F2011%2003%3A58%3A09&range_value=4&range_unit=weeks&hang_type=any&process_type=any&do_query=1&signature=uGlobalMenuBar%3A%3AShouldParentStayVisible
This is crashing where we iterate over the menubar's parent nodes to
figure out which node we should hide. The issue here is that we hold a
ref on the menubar, but each node doesn't hold a ref to its parent
(else there would be reference cycles). The code sort-of makes an
assumption that the pointer returned from GetParent() isn't dangling,
but it looks like it's hitting a case where it is.
I'm not sure what condition would cause this yet. One possibility is
that the window is being closed (and the document being destroyed) in
between calling RegisterWindow and getting a response back from the
panel service (which is when this code path gets triggered). In this
condition though, it would be unsafe to access any uGlobalMenuBar
functions for the particular menubar, as the menuservice would have
already destroyed it
To manage notifications about this bug go to:
https://bugs.launchpad.net/globalmenu-extension/+bug/783997/+subscriptions