After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 307237 - possible to get "Do you wish to reload crashed applet?" too early
possible to get "Do you wish to reload crashed applet?" too early
Status: RESOLVED FIXED
Product: gnome-panel
Classification: Other
Component: panel
git master
Other Linux
: Normal minor
: ---
Assigned To: Panel Maintainers
Panel Maintainers
Depends on:
Blocks:
 
 
Reported: 2005-06-11 04:52 UTC by Allison Karlitskaya (desrt)
Modified: 2005-06-11 06:29 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch of time (1.09 KB, patch)
2005-06-11 04:56 UTC, Allison Karlitskaya (desrt)
committed Details | Review

Description Allison Karlitskaya (desrt) 2005-06-11 04:52:34 UTC
During the process of adding an applet to the panel there is a whole whack of
CORBA stuff that needs to happen in order.  If any one of these things fails
then the panel destroys what it has done so far and presents a message like:

--------------------------------------------------------------------------
The panel encountered a problem while loading "OAFIID:GNOME_MixerApplet".
Do you want to delete the applet from your configuration?

                 [ Don't Delete ]  [ Delete ]
--------------------------------------------------------------------------

Half way through all of this CORBA stuff, ORBit_small_listen_for_broken is
called to register the dialog that pops up when the applet normally quits (ie:
not the one above, but rather, this one:)

-------------------------------------------------------
     "Volume Control" has quit unexpectedly

If you reload a panel object, i twill automatically
be added back to the panel.
      [ Don't Reload ]  [ Reload ]
-------------------------------------------------------

If an applet you're loading gets far enough to have this dialog registered but
doesn't make it all the way (ie: fails one of the checks after the dialog is
registered) then you get two error dialogs (one spawned by ORBit, and one
invokved manually from the failure-check code).

In addition to this, because of the cleanup that is done by the failure-check
code, the 'data' pointer for the response callback on the second dialog now
points to something that has been free'd (and causes the panel to crash about
20-30% of the time).

To test: run the mixer applet with environment G_DEBUG="fatal_warnings".  The
mixer applet (current CVS HEAD) emits a warning message while the panel is in
the part of the code that will cause the two dialogs to be thrown.
Comment 1 Allison Karlitskaya (desrt) 2005-06-11 04:56:36 UTC
Created attachment 47591 [details] [review]
patch of time

This patch simply moves this call:

  ORBit_small_listen_for_broken (object,
				 G_CALLBACK (panel_applet_frame_cnx_broken),
				 frame);

to later on in the initialisation process (after all things that can fail).
Comment 2 Vincent Untz 2005-06-11 06:29:47 UTC
Thanks