Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mate-volume-control-applet crash #167

Closed
pooka2020619 opened this issue Jul 5, 2020 · 23 comments
Closed

mate-volume-control-applet crash #167

pooka2020619 opened this issue Jul 5, 2020 · 23 comments
Labels
template ignored! Basic informations are missing

Comments

@pooka2020619
Copy link

Expected behaviour

Actual behaviour

Steps to reproduce the behaviour

no idea, random crash

MATE general version

Linux Mint 19.3 MATE 64-bit

Package version

Linux Distribution

Link to downstream report of your Distribution

https://github.com/pooka2020619/mate-colume-controle-applet-crash

@raveit65 raveit65 added the template ignored! Basic informations are missing label Jul 5, 2020
@ifohancroft
Copy link

I am not a hundred percent sure if mate-volume-control-applet and mate-volume-control-status-icon, but I can confirm the issue on Manjaro with MATE version 1.26.0 with mate-media version 1.26.0-1
Sometimes (maybe once or twice a day or every other day) when you hover over mate-volume-control-status-icon) it will crash with the following output (I presuming the output is sent to stderr):

(mate-volume-control-status-icon:116748): Gtk-WARNING **: 19:30:43.174: Calling gtk_widget_realize() on a widget that isn't inside a toplevel window is not going to work very well. Widgets must be inside a toplevel container before realizing them.

(mate-volume-control-status-icon:116748): GLib-GObject-CRITICAL **: 19:30:43.176: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(mate-volume-control-status-icon:116748): Gdk-CRITICAL **: 19:30:43.176: gdk_window_get_scale_factor: assertion 'GDK_IS_WINDOW (window)' failed
**
Gtk:ERROR:../gtk/gtk/gtkwidget.c:5875:gtk_widget_get_frame_clock: assertion failed: (window != NULL)
Bail out! Gtk:ERROR:../gtk/gtk/gtkwidget.c:5875:gtk_widget_get_frame_clock: assertion failed: (window != NULL)

@lukefromdc
Copy link
Member

This looks like maybe a race condition between creating the slider's window (pops up when you hover over the icon) and trying to display the items within it. I've never sen this crash with the old status icon nor with the newer panel applet (which better supports HiDPI). A race condition could easily be machine speed dependent

@alexeiol
Copy link

alexeiol commented Sep 7, 2022

I don't know if it is the same bug, but it is happening here on a Debian GNU/Linux 11 (bullseye) 64-bit, Kernel Linux 5.10.0-17-amd64 x86_64, MATE 1.24.1. Mate-volume-control randomly crashes while turning the volume up or down using the mouse wheel. Other than that, it works fine most of the time. I would be thankful if you could tell me how (i.e. detailed command lines or log files) to collect useful data for debugging purposes when it happens.

@cwendling
Copy link
Member

@alexeiol ideally you'd run mate-volume-control-status-icon under a debugger and get a full backtrace when it crashes.

For this, install gdb, libmatemixer0-dbgsym and mate-media-dbgsym (and possibly others, but that'd be a good start). Make sure you have the debian-debug entries in your sources.list.

Then, stop mate-volume-control-status-icon and run it manually under GDB: gdb -ex run --args mate-volume-control-status-icon. When it crashes, go back to the terminal where GDB is running, get a full backtrace (bt full) and post it here. Hopefully there will be useful info 🤷

@alexeiol
Copy link

alexeiol commented Sep 9, 2022

Thanks a lot, cwendling, I will surely do as you say!

@ifohancroft
Copy link

ifohancroft commented Sep 10, 2022

@cwendling Since I'm having the problem as well, I decided to also run it under gdb and see what pops up.
Unfortunately, I couldn't find the debug symbols in Manjaro's repo, however, I hope that my findings would still help.

The thread parts during the normal operation are probably useless, but I'll include them just in-case:

$ gdb -ex run --args mate-volume-control-status-icon 
GNU gdb (GDB) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from mate-volume-control-status-icon...
(No debugging symbols found in mate-volume-control-status-icon)
Starting program: /usr/bin/mate-volume-control-status-icon 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff31ff6c0 (LWP 139451)]
[New Thread 0x7ffff29fe6c0 (LWP 139452)]
[New Thread 0x7ffff1cef6c0 (LWP 139453)]
[Thread 0x7ffff1cef6c0 (LWP 139453) exited]
[New Thread 0x7ffff1cef6c0 (LWP 139454)]
[New Thread 0x7ffff0dff6c0 (LWP 139455)]
[Thread 0x7ffff1cef6c0 (LWP 139454) exited]
[New Thread 0x7ffff1cef6c0 (LWP 139456)]
[New Thread 0x7fffe3fff6c0 (LWP 139457)]
[Thread 0x7ffff1cef6c0 (LWP 139456) exited]
[Thread 0x7ffff0dff6c0 (LWP 139455) exited]
[Thread 0x7fffe3fff6c0 (LWP 139457) exited]
[New Thread 0x7fffe3fff6c0 (LWP 139462)]
[New Thread 0x7ffff0dff6c0 (LWP 139463)]
[Thread 0x7fffe3fff6c0 (LWP 139462) exited]
[New Thread 0x7fffe3fff6c0 (LWP 139464)]
[New Thread 0x7ffff1cef6c0 (LWP 139465)]
[Thread 0x7fffe3fff6c0 (LWP 139464) exited]
[Thread 0x7ffff0dff6c0 (LWP 139463) exited]
[New Thread 0x7ffff0dff6c0 (LWP 139466)]
[Thread 0x7ffff1cef6c0 (LWP 139465) exited]
[New Thread 0x7ffff1cef6c0 (LWP 139467)]
[Thread 0x7ffff0dff6c0 (LWP 139466) exited]
[New Thread 0x7ffff0dff6c0 (LWP 139468)]
[New Thread 0x7fffe3fff6c0 (LWP 139469)]
[Thread 0x7ffff0dff6c0 (LWP 139468) exited]
[Thread 0x7ffff1cef6c0 (LWP 139467) exited]
[Thread 0x7fffe3fff6c0 (LWP 139469) exited]
[New Thread 0x7fffe3fff6c0 (LWP 141874)]
[Detaching after fork from child process 172228]
[New Thread 0x7ffff1cef6c0 (LWP 172230)]
[New Thread 0x7ffff0dff6c0 (LWP 172231)]
[Thread 0x7ffff1cef6c0 (LWP 172230) exited]
[Thread 0x7ffff0dff6c0 (LWP 172231) exited]

Here's the part where it crashed:

(mate-volume-control-status-icon:139448): Gtk-WARNING **: 22:02:46.531: Calling gtk_widget_realize() on a widget that isn't inside a toplevel window is not going to work very well. Widgets must be inside a toplevel container before realizing them.

(mate-volume-control-status-icon:139448): GLib-GObject-CRITICAL **: 22:02:46.532: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(mate-volume-control-status-icon:139448): Gdk-CRITICAL **: 22:02:46.532: gdk_window_get_scale_factor: assertion 'GDK_IS_WINDOW (window)' failed
**
Gtk:ERROR:../gtk/gtk/gtkwidget.c:5875:gtk_widget_get_frame_clock: assertion failed: (window != NULL)
Bail out! Gtk:ERROR:../gtk/gtk/gtkwidget.c:5875:gtk_widget_get_frame_clock: assertion failed: (window != NULL)

Thread 1 "mate-volume-con" received signal SIGABRT, Aborted.
0x00007ffff70424dc in ?? () from /usr/lib/libc.so.6

Here's the output of bt full:

(gdb) bt full
#0  0x00007ffff70424dc in  () at /usr/lib/libc.so.6
#1  0x00007ffff6ff2998 in raise () at /usr/lib/libc.so.6
#2  0x00007ffff6fdc53d in abort () at /usr/lib/libc.so.6
#3  0x00007ffff71be06a in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007ffff7218ea0 in g_assertion_message_expr () at /usr/lib/libglib-2.0.so.0
#5  0x00007ffff792da67 in  () at /usr/lib/libgtk-3.so.0
#6  0x00007ffff793387e in gtk_widget_realize () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff7933a79 in gtk_widget_map () at /usr/lib/libgtk-3.so.0
#8  0x00007ffff76b5c50 in  () at /usr/lib/libgtk-3.so.0
#9  0x00007ffff7705295 in  () at /usr/lib/libgtk-3.so.0
#10 0x00007ffff730ee95 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#11 0x00007ffff730fe74 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#12 0x00007ffff7933a1b in gtk_widget_map () at /usr/lib/libgtk-3.so.0
#13 0x00007ffff794e7f9 in  () at /usr/lib/libgtk-3.so.0
#14 0x00007ffff730fd34 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff730fe74 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#16 0x00007ffff7933a1b in gtk_widget_map () at /usr/lib/libgtk-3.so.0
#17 0x00007ffff79529de in  () at /usr/lib/libgtk-3.so.0
#18 0x00007ffff72f1fd0 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#19 0x00007ffff731e437 in  () at /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff730fbe5 in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff730fe74 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#22 0x00007ffff7934457 in gtk_widget_show () at /usr/lib/libgtk-3.so.0
#23 0x00007ffff78f07c4 in  () at /usr/lib/libgtk-3.so.0
#24 0x00007ffff78f0995 in  () at /usr/lib/libgtk-3.so.0
#25 0x00007ffff75356ae in  () at /usr/lib/libgdk-3.so.0
#26 0x00007ffff71f6477 in  () at /usr/lib/libglib-2.0.so.0
#27 0x00007ffff71f5c6b in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#28 0x00007ffff724c001 in  () at /usr/lib/libglib-2.0.so.0
#29 0x00007ffff71f51cf in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#30 0x00007ffff77d8e2f in gtk_main () at /usr/lib/libgtk-3.so.0
#31 0x00005555555591b1 in main ()

@mhanor
Copy link

mhanor commented Dec 16, 2022

Here's a crash dump from today. The system is running Debian testing (bookworm), mate-media 1.26.0-1
crash.txt
mate-volume-control-status-icon.out.txt

@lukefromdc

This comment was marked as outdated.

@lukefromdc

This comment was marked as outdated.

@lukefromdc
Copy link
Member

lukefromdc commented Dec 20, 2022

Two possibities now look much less likely as we have someone working on
#159 (comment)
tracing this to the tooltip. Keep in mind hovering over the applet will normally cause the tooltip to appear UNLESS the tray is on a bottom panel.

mate-desktop/mate-panel#1341

By any chance are folks getting this crash running this on a bottom panel? I am but don't get the crash possibly due to machine speed. Tooltip window never appears on a bottom panel as it apparently is offscreen, perhaps that could cause a missing or invalid window when gtk_widget_realize is called on all widgets, an attempt is made to get the frame clock, and the window is NULL

@mhanor
Copy link

mhanor commented Dec 20, 2022

On my machine, the volume icon resides in an upper panel. The crash seems related to events that occur after re-plugging the USB audio devices (soundcard/headset), but not always reproducible in that context.

@lukefromdc
Copy link
Member

That is going to change what should appear in the tooltip, so again could do it

@lukefromdc

This comment was marked as outdated.

@lukefromdc
Copy link
Member

Closed wrong report-and found on more details that compiz was NOT the cause of the tooltips not showing on a bottom panel, dragging the mouse to the very bottom row of pixels is

@ifohancroft
Copy link

Top panel for me as well. Also, since I don't remember if I mentioned it: The crash happens on hover for me.

@mark-herbert42
Copy link

For me applet crash when I connect-disconnect bluetooth earphones.

@lukefromdc
Copy link
Member

lukefromdc commented Jul 13, 2023 via email

@mark-herbert42
Copy link

mark-herbert42 commented Jul 14, 2023

Fixed crach with this

https://disk.yandex.ru/d/UUNeak7r4drsGA
Now can connect-disconnect bt phones many times with applet icon keeping running.

@lukefromdc
Copy link
Member

There is supposed to be a null device to catch the case of no sound device installed. Wonder if it's not coming up when the only physical sound device is removed?

@mark-herbert42
Copy link

there are some devices in the system - nobody removes the main sound card. Most likely something happen when pipewire do switch between bluetooth device and the fallback soundcard. It could be some race between scanning devices in mate mixer and disabling/reenabling devices in pipewire. Anyway from my position this hiding the icon when no devices are in service seems to be useless feature. If it do a crash that happens for several years in a row does it worth being kept? Will anyone miss this little useless feature ever?

@lukefromdc
Copy link
Member

Some machines have onboard sound the linux kernel cannot recognize and that's when you see the null device. I had a converted chromebook with that issue, used it with USB sound. Chroime must have used an out-of-tree driver

@raveit65
Copy link
Member

raveit65 commented Sep 2, 2023

For all who have a crash when unplug/plug a device please test mate-desktop/libmatemixer#40
and give feedback.

@raveit65
Copy link
Member

mate-desktop/libmatemixer@e9995a7
should fix the issue with unplug/plug a device
First reported issue here looks like #201
Which is newer and with a proper stacktrace.
So closing this one in favor of the new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
template ignored! Basic informations are missing
Projects
None yet
Development

No branches or pull requests

8 participants