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 677963 - screen: crash while switching tabs
screen: crash while switching tabs
Status: RESOLVED FIXED
Product: gnome-control-center
Classification: Core
Component: [obsolete] Screen
unspecified
Other Linux
: Normal critical
: ---
Assigned To: Control-Center Maintainers
Control-Center Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-06-12 16:24 UTC by Matthias Clasen
Modified: 2012-10-11 11:14 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
stacktrace (4.91 KB, text/plain)
2012-06-12 16:24 UTC, Matthias Clasen
  Details
screen: Avoid accessing destroyed panel (2.88 KB, patch)
2012-06-12 17:24 UTC, Bastien Nocera
none Details | Review
screen: Avoid accessing destroyed panel (2.89 KB, patch)
2012-06-12 17:25 UTC, Bastien Nocera
reviewed Details | Review
screen: Avoid accessing destroyed panel (2.49 KB, patch)
2012-10-11 11:12 UTC, Bastien Nocera
committed Details | Review

Description Matthias Clasen 2012-06-12 16:24:18 UTC
Created attachment 216217 [details]
stacktrace

Here is a crash I got while playing with

for i in `seq 1 20` ; do gnome-control-center universal-access & gnome-control-center screen & done
Comment 1 Bastien Nocera 2012-06-12 17:24:46 UTC
Created attachment 216218 [details] [review]
screen: Avoid accessing destroyed panel

When we cancel the Brightness calls because the panel is getting
destroyed, we shouldn't try to access panel widgets.
Comment 2 Bastien Nocera 2012-06-12 17:25:28 UTC
Created attachment 216219 [details] [review]
screen: Avoid accessing destroyed panel

When we cancel the Brightness calls because the panel is getting
destroyed, we shouldn't try to access panel widgets.
Comment 3 Bastien Nocera 2012-06-12 17:34:33 UTC
Testing appreciated with this one.
Comment 4 Matthias Clasen 2012-06-12 21:25:29 UTC
Review of attachment 216219 [details] [review]:

::: panels/screen/cc-screen-panel.c
@@ +95,3 @@
   if (priv->cancellable != NULL)
     {
+      g_cancellable_cancel (priv->cancellable);

This looks good and should make get all outstanding dbus calls canceled

@@ +459,3 @@
   GtkWidget  *widget;
 
+  g_object_add_weak_pointer (G_OBJECT (self), (gpointer *) &self);

This looks dubious to me - the self pointer here is not the same as the one in get_brightness_cb, I don't think...
Comment 5 Bastien Nocera 2012-10-11 11:12:18 UTC
Created attachment 226251 [details] [review]
screen: Avoid accessing destroyed panel

When we cancel the Brightness calls because the panel is getting
destroyed, we shouldn't try to access panel widgets.
Comment 6 Bastien Nocera 2012-10-11 11:14:49 UTC
Attachment 226251 [details] pushed as 39bde7a - screen: Avoid accessing destroyed panel