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 645697 - crash when clicking on xchat bubble
crash when clicking on xchat bubble
Status: RESOLVED FIXED
Product: gnome-shell
Classification: Core
Component: message-tray
unspecified
Other Linux
: Normal critical
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
[gnome3-important]
: 645743 645915 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2011-03-26 00:16 UTC by William Jon McCann
Modified: 2011-03-29 02:41 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
bt (6.03 KB, text/plain)
2011-03-26 00:16 UTC, William Jon McCann
  Details
boxpointer: Fix crash when sourceActor is unstaged (1.30 KB, patch)
2011-03-26 00:47 UTC, Florian Müllner
reviewed Details | Review
Hide summary box pointer without animating if it is empty (2.01 KB, patch)
2011-03-26 07:46 UTC, Marina Zhurakhinskaya
committed Details | Review
boxpointer: Fix crash when sourceActor is not mapped (1.31 KB, patch)
2011-03-26 12:29 UTC, Florian Müllner
accepted-commit_now Details | Review

Description William Jon McCann 2011-03-26 00:16:21 UTC
Created attachment 184257 [details]
bt

1. focus away from xchat
2. have someone say your name
3. a banner appears (leave it alone)
4. it goes into summary area
5. click on source item
6. shows expanded message
7. click on it
8. crash
Comment 1 William Jon McCann 2011-03-26 00:18:16 UTC
Also should mention I saw a weird dark blog on the screen at the time of the crash just above and to the left of where the expanded message was.  I have a phone pic of it if needed.
Comment 2 William Jon McCann 2011-03-26 00:18:27 UTC
*blob
Comment 3 Fabio Durán Verdugo 2011-03-26 00:26:38 UTC
paste here the attach BT 


Thread 1 (Thread 0xb789b860 (LWP 15746))

  • #0 g_logv
    at gmessages.c line 563
  • #1 g_log
    at gmessages.c line 577
  • #2 st_widget_get_theme_node
    at st/st-widget.c line 579
  • #3 ffi_call_SYSV
    from /usr/lib/libffi.so.5
  • #4 ffi_call
    from /usr/lib/libffi.so.5
  • #5 gjs_invoke_c_function
    at gi/function.c line 626
  • #6 js_Call
    at jsobj.cpp line 5195
  • #7 js_Invoke
    at jsinterp.cpp line 1360
  • #8 js_Interpret
    at jsops.cpp line 2240
  • #9 js_Invoke
    at jsinterp.cpp line 1368
  • #10 js_fun_apply
    at jsfun.cpp line 2046
  • #11 js_Interpret
    at jsops.cpp line 2208
  • #12 js_Invoke
    at jsinterp.cpp line 1368
  • #13 js_InternalInvoke
    at jsinterp.cpp line 1423
  • #14 JS_CallFunctionValue
    at jsapi.cpp line 5114
  • #15 gjs_callback_closure
    at gi/function.c line 191
  • #16 ??
    from /usr/lib/libffi.so.5
  • #17 ??
    from /usr/lib/libffi.so.5
  • #18 run_repaint_laters
    at core/util.c line 743
  • #19 _clutter_run_repaint_functions
    at ./clutter-main.c line 3192
  • #20 clutter_clock_dispatch
    at ./clutter-master-clock.c line 367
  • #21 g_main_dispatch
    at gmain.c line 2440
  • #22 g_main_context_dispatch
    at gmain.c line 3013
  • #23 g_main_context_iterate
    at gmain.c line 3091
  • #24 g_main_loop_run
    at gmain.c line 3299
  • #25 meta_run
    at core/main.c line 557
  • #26 main
    at main.c line 510


== Stack trace for context 0x93f7000 ==
0 [native frame]
1 anonymous(alignment = 0.5, gap = 0, sourceActor = [0xa9dfaf8 StButton.summary-source-button:expanded]) ["/home/jmccann/gnome-shell/source/gnome-shell/js/ui/boxpointer.js":331]
2 anonymous() ["/home/jmccann/gnome-shell/source/gnome-shell/js/ui/boxpointer.js":189]
3 anonymous() ["/home/jmccann/gnome-shell/install/share/gjs-1.0/lang.js":110]


#
Comment 4 Florian Müllner 2011-03-26 00:47:26 UTC
Created attachment 184260 [details] [review]
boxpointer: Fix crash when sourceActor is unstaged

Commit 475161f7163 repositioned the boxpointer on size changes;
as the repositioning code uses the sourceActor's theme node, an
assert is hit if the actor is not on a stage. For instance, this
is triggered by clicking a message tray notification to focus the
associated window.
Add an extra check to fix the problem.

On a side note, the black blob looks unrelated to this bug (unfortunately) - I still get it when the notification is dismissed.
Comment 5 Marina Zhurakhinskaya 2011-03-26 07:46:57 UTC
Created attachment 184269 [details] [review]
Hide summary box pointer without animating if it is empty

This ensures that we don't show a small black blob fading away
when the user clicks on the notification and it is removed.

Set HIDING state right away in _hideSummaryBoxPointer() so that
it is only called once. Update this._pointerInTray when the tray
is unlocked, so that we are not dependent on escapeTray() being
triggered by 'done-displaying-content' signal.
Comment 6 Dan Winship 2011-03-26 11:59:43 UTC
Comment on attachment 184260 [details] [review]
boxpointer: Fix crash when sourceActor is unstaged

>+                    if (this._sourceActor.get_stage())
>+                        this._reposition(this._sourceActor, this._gap, this._alignment);

calling "get_stage()" seems a little over-tuned for the specific crash. How about

    if (this.actor.mapped && this._sourceActor.mapped)
Comment 7 Dan Winship 2011-03-26 12:19:33 UTC
Comment on attachment 184269 [details] [review]
Hide summary box pointer without animating if it is empty

AFAICT, this kills the hide animation when clicking on any non-resident notification. The underlying problem here is that the notification actors are now getting removed from the summaryitemboxpointer as soon as you click on it, instead of it waiting until after the boxpointer is hidden.

Of course, no fade-out is still an improvement from a fading-out black blob, so we probably want this for now.
Comment 8 Florian Müllner 2011-03-26 12:29:58 UTC
Created attachment 184284 [details] [review]
boxpointer: Fix crash when sourceActor is not mapped

(In reply to comment #6)
> seems a little over-tuned for the specific crash. How about
> 
>     if (this.actor.mapped && this._sourceActor.mapped)

Sure.
Comment 9 Florian Müllner 2011-03-26 12:32:02 UTC
*** Bug 645743 has been marked as a duplicate of this bug. ***
Comment 10 Marina Zhurakhinskaya 2011-03-26 17:16:13 UTC
(In reply to comment #7)
> (From update of attachment 184269 [details] [review])
> AFAICT, this kills the hide animation when clicking on any non-resident
> notification. The underlying problem here is that the notification actors are
> now getting removed from the summaryitemboxpointer as soon as you click on it,
> instead of it waiting until after the boxpointer is hidden.
> 
> Of course, no fade-out is still an improvement from a fading-out black blob, so
> we probably want this for now.

I think removing the notification immediately rather than fading it out might be the right feedback to the user if the source is removed. In most cases, the notification is removed and the application window you wanted to get to is focused. The non-resident notifications still fade out if you click on the source to hide the notification.
Comment 11 Giovanni Campagna 2011-03-27 11:55:02 UTC
Can we get the fix for crashing in for 3.0? It is pretty annoying that notifications cannot be dismissed.
Comment 12 Jasper St. Pierre (not reading bugmail) 2011-03-28 09:54:41 UTC
*** Bug 645915 has been marked as a duplicate of this bug. ***
Comment 13 Florian Müllner 2011-03-28 14:39:03 UTC
Comment on attachment 184284 [details] [review]
boxpointer: Fix crash when sourceActor is not mapped

Marking attachment 184284 [details] [review] obsolete, as the patches in bug 645744 contain the fix (and fix a bunch of other problems as well).