! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
crash on exit, in xtm_process_window_hide
Status:
RESOLVED: MOVED
Product:
Xfce4-taskmanager
Component:
General

Comments

Description abandoned account 2018-04-02 12:45:42 CEST
Closing xfce4-taskmanager yields the following in journald (journalctl -efa --no-hostname):

Apr 02 12:08:26 kernel: traps: xfce4-taskmanag[18561] general protection ip:5584c62e8224 sp:7ffd55a7a780 error:0 in xfce4-taskmanager[5584c62dd000+24000]
Apr 02 12:08:26 systemd-coredump[18706]: Process 18561 (xfce4-taskmanag) of user 1000 dumped core.
                                         
                                         Stack trace of thread 18561:
                                         #0  0x00005584c62e8224 xtm_process_window_hide (xfce4-taskmanager)
                                         #1  0x00007facb337cc2d g_closure_invoke (libgobject-2.0.so.0)
                                         #2  0x00007facb3390c88 n/a (libgobject-2.0.so.0)
                                         #3  0x00007facb3399746 g_signal_emit_valist (libgobject-2.0.so.0)
                                         #4  0x00007facb339a180 g_signal_emit (libgobject-2.0.so.0)
                                         #5  0x00007facb4537afc gtk_widget_hide (libgtk-3.so.0)
                                         #6  0x00007facb4537d46 n/a (libgtk-3.so.0)
                                         #7  0x00007facb3381eb5 g_object_unref (libgobject-2.0.so.0)
                                         #8  0x00005584c62e66c2 main (xfce4-taskmanager)
                                         #9  0x00007facb2aa0f4a __libc_start_main (libc.so.6)
                                         #10 0x00005584c62e677a _start (xfce4-taskmanager)
                                         
                                         Stack trace of thread 18563:
                                         #0  0x00007facb2b6b97b __poll (libc.so.6)
                                         #1  0x00007facb30a1613 n/a (libglib-2.0.so.0)
                                         #2  0x00007facb30a19d2 g_main_loop_run (libglib-2.0.so.0)
                                         #3  0x00007facb3699b78 n/a (libgio-2.0.so.0)
                                         #4  0x00007facb30c9cea n/a (libglib-2.0.so.0)
                                         #5  0x00007facb2e3e08c start_thread (libpthread.so.0)
                                         #6  0x00007facb2b75e7f __clone (libc.so.6)
                                         
                                         Stack trace of thread 18562:
                                         #0  0x00007facb2b6b97b __poll (libc.so.6)
                                         #1  0x00007facb30a1613 n/a (libglib-2.0.so.0)
                                         #2  0x00007facb30a172e g_main_context_iteration (libglib-2.0.so.0)
                                         #3  0x00007facb30a1782 n/a (libglib-2.0.so.0)
                                         #4  0x00007facb30c9cea n/a (libglib-2.0.so.0)
                                         #5  0x00007facb2e3e08c start_thread (libpthread.so.0)
                                         #6  0x00007facb2b75e7f __clone (libc.so.6)
                                         
                                         Stack trace of thread 18564:
                                         #0  0x00007facb2b70879 syscall (libc.so.6)
                                         #1  0x00007facb30e87ed g_cond_wait_until (libglib-2.0.so.0)
                                         #2  0x00007facb3073953 n/a (libglib-2.0.so.0)
                                         #3  0x00007facb3073f3e g_async_queue_timeout_pop (libglib-2.0.so.0)
                                         #4  0x00007facb30ca801 n/a (libglib-2.0.so.0)
                                         #5  0x00007facb30c9cea n/a (libglib-2.0.so.0)
                                         #6  0x00007facb2e3e08c start_thread (libpthread.so.0)
                                         #7  0x00007facb2b75e7f __clone (libc.so.6)

Here's recompiled with -ggdb:

$ gdb xfce4-taskmanager
GNU gdb (GDB) 8.1
Copyright (C) 2018 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:
<http://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 xfce4-taskmanager...done.
(gdb) r
Starting program: /usr/bin/xfce4-taskmanager 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffed043700 (LWP 22801)]
[New Thread 0x7fffec842700 (LWP 22802)]
[New Thread 0x7fffe67c3700 (LWP 22804)]
xfce4-taskmanager-Message: 12:35:04.816: Running as xftroxgpx on z5

Thread 1 "xfce4-taskmanag" received signal SIGSEGV, Segmentation fault.
0x000055555555fdfe in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))
(gdb) thread apply all bt no-filters full -100

Thread 4 (Thread 0x7fffe67c3700 (LWP 22804)):
#0  0x00007ffff56e5879 in syscall () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007ffff5c5d7ed in g_cond_wait_until () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#2  0x00007ffff5be8953 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0x00007ffff5be8f3e in g_async_queue_timeout_pop ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0x00007ffff5c3f801 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#5  0x00007ffff5c3ecea in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#6  0x00007ffff59b308c in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#7  0x00007ffff56eae7f in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7fffec842700 (LWP 22802)):
#0  0x00007ffff56e097b in poll () from /usr/lib/libc.so.6
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#1  0x00007ffff5c16613 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#2  0x00007ffff5c169d2 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0x00007ffff620eb78 in ?? () from /usr/lib/libgio-2.0.so.0
No symbol table info available.
#4  0x00007ffff5c3ecea in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#5  0x00007ffff59b308c in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#6  0x00007ffff56eae7f in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 2 (Thread 0x7fffed043700 (LWP 22801)):
#0  0x00007ffff56e097b in poll () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007ffff5c16613 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#2  0x00007ffff5c1672e in g_main_context_iteration ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0x00007ffff5c16782 in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#4  0x00007ffff5c3ecea in ?? () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#5  0x00007ffff59b308c in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#6  0x00007ffff56eae7f in clone () from /usr/lib/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7ffff7fb3e00 (LWP 22797)):
#0  0x000055555555fdfe in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
        __inst = 0x555555a88280
        __t = 93824994896496
        __r = 32767
        winx = -11664
        winy = 32767
        __func__ = "xtm_process_window_hide"
#1  0x00007ffff5ef1c2d in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#2  0x00007ffff5f05c88 in ?? () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#3  0x00007ffff5f0e746 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#4  0x00007ffff5f0f180 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#5  0x00007ffff70acafc in gtk_widget_hide () from /usr/lib/libgtk-3.so.0
No symbol table info available.
#6  0x00007ffff70acd46 in ?? () from /usr/lib/libgtk-3.so.0
No symbol table info available.
#7  0x00007ffff5ef6eb5 in g_object_unref () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#8  0x000055555555de2a in main (argc=1, argv=0x7fffffffd6a8) at main.c:236
        app = 0x5555557d7aa0
        error = 0x0
(gdb) frame 1
#1  0x00007ffff5ef1c2d in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
(gdb) frame 2
#2  0x00007ffff5f05c88 in ?? () from /usr/lib/libgobject-2.0.so.0
(gdb) frame 3
#3  0x00007ffff5f0e746 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
(gdb) frame 4
#4  0x00007ffff5f0f180 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
(gdb) frame 5
#5  0x00007ffff70acafc in gtk_widget_hide () from /usr/lib/libgtk-3.so.0
(gdb) frame 6
#6  0x00007ffff70acd46 in ?? () from /usr/lib/libgtk-3.so.0
(gdb) frame 7                                                                         
#7  0x00007ffff5ef6eb5 in g_object_unref () from /usr/lib/libgobject-2.0.so.0
(gdb) frame 8
#8  0x000055555555de2a in main (argc=1, argv=0x7fffffffd6a8) at main.c:236
236		g_object_unref (window);
(gdb) frame 9
#0  0x0000000000000000 in ?? ()
(gdb) frame 10
#0  0x0000000000000000 in ?? ()
(gdb) frame 0
#0  0x000055555555fdfe in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))
(gdb) 

Ok, so relevant: 
#0  0x000055555555fdfe in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
        __inst = 0x555555a88280
        __t = 93824994896496
        __r = 32767
        winx = -11664
        winy = 32767
        __func__ = "xtm_process_window_hide"
#0  0x000055555555fdfe in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))


what I see in src/process-window.c

static void
xtm_process_window_hide (GtkWidget *widget)
{
  gint winx, winy;
  g_return_if_fail (GTK_IS_WIDGET (widget));
  if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))                     
    return;
  gtk_window_get_position (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->window), &winx, &winy);
  gtk_widget_hide (XTM_PROCESS_WINDOW (widget)->window);
  gtk_window_move (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->window), winx, winy);
  GTK_WIDGET_CLASS (xtm_process_window_parent_class)->hide(widget);
}


tested on ArchLinux as xfce4-taskmanager-git  1.2.0.r94.gb89ba57-1 
also happens with extra/xfce4-taskmanager 1.2.0-1

I have no idea how to fix this, please advise.
Cheers!
Comment 1 abandoned account 2018-04-02 12:58:34 CEST
this is how I'm compiling it:

  export CFLAGS="-fstack-protector-strong -fno-omit-frame-pointer -ftrack-macro-expansion=2 -ggdb -fvar-tracking-assignments -fPIC"
  export CPPFLAGS="${CFLAGS}"
  export CXXFLAGS="${CFLAGS}"

  ./autogen.sh \
    --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --enable-gtk3 \
    --enable-wnck3
  make

seen here in context: https://github.com/xftroxgpx/a3/blob/0fa1c617bb79bcd29ad2d2af00208f621dcd889c/system/Z575/OSes/3archlinux/on_baremetal/filesystem_now/archlinux/home/xftroxgpx/build/1packages/xfce4-taskmanager-git/PKGBUILD#L43-L53
Comment 2 abandoned account 2018-04-02 13:12:24 CEST
I realized a 'bt full' would've been simpler on the eyes:

(gdb) bt full
#0  0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
        __inst = 0x555555a98280
        __t = 93824994896432
        __r = 32767
        winx = -11664
        winy = 32767
        __func__ = "xtm_process_window_hide"
#1  0x00007ffff5ef1c2d in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#2  0x00007ffff5f05c88 in  () at /usr/lib/libgobject-2.0.so.0
#3  0x00007ffff5f0e746 in g_signal_emit_valist ()
    at /usr/lib/libgobject-2.0.so.0
#4  0x00007ffff5f0f180 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#5  0x00007ffff70acafc in gtk_widget_hide () at /usr/lib/libgtk-3.so.0
#6  0x00007ffff70acd46 in  () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff5ef6eb5 in g_object_unref () at /usr/lib/libgobject-2.0.so.0
#8  0x000055555555e061 in main (argc=1, argv=0x7fffffffd6a8) at main.c:236
        app = 0x5555557d7aa0
        error = 0x0
(gdb) 

(gdb) frame 0
#0  0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))

(gdb) frame 8
#8  0x000055555555e061 in main (argc=1, argv=0x7fffffffd6a8) at main.c:236
236		g_object_unref (window);
Comment 3 Andre Miranda editbugs 2018-04-02 16:01:00 CEST
Created attachment 7656 
Fix patch

I can reproduce with current master and the attached patch works for me.
Comment 4 Andre Miranda editbugs 2018-04-02 16:07:09 CEST
Created attachment 7657 
Fix patch 2

Ignore the previous patch, it contains a file that should be in .gitignore.
Comment 5 abandoned account 2018-04-02 20:36:29 CEST
(In reply to Andre Miranda from comment #4)
> Created attachment 7657 
> Fix patch 2
> 
> Ignore the previous patch, it contains a file that should be in .gitignore.

Thanks for the patch Andre. However, it doesn't work for me - I still get the same crash, I even cleaned the build dir and I double checked that the patch did get applied:

static void
xtm_process_window_hide (GtkWidget *widget)
{
  gint winx, winy;
  g_return_if_fail (XTM_IS_PROCESS_WINDOW (widget));
  if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))                     
    return;
  gtk_window_get_position (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->window), &winx, &winy);
  gtk_widget_hide (XTM_PROCESS_WINDOW (widget)->window);
  gtk_window_move (GTK_WINDOW (XTM_PROCESS_WINDOW (widget)->window), winx, winy);
  GTK_WIDGET_CLASS (xtm_process_window_parent_class)->hide(widget);
}

I'm not sure what I'm missing, especially since you mention that the patch works for you.

Thread 1 "xfce4-taskmanag" received signal SIGSEGV, Segmentation fault.
0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))
(gdb) frame 0
#0  0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))
(gdb) bt full
#0  0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7c260)
    at process-window.c:543
        __inst = 0x555555a88280
        __t = 93824994896576
        __r = 32767
        winx = -11664
        winy = 32767
        __func__ = "xtm_process_window_hide"
#1  0x00007ffff5ef1c2d in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#2  0x00007ffff5f05c88 in  () at /usr/lib/libgobject-2.0.so.0
#3  0x00007ffff5f0e746 in g_signal_emit_valist ()
    at /usr/lib/libgobject-2.0.so.0
#4  0x00007ffff5f0f180 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#5  0x00007ffff70acafc in gtk_widget_hide () at /usr/lib/libgtk-3.so.0
#6  0x00007ffff70acd46 in  () at /usr/lib/libgtk-3.so.0
#7  0x00007ffff5ef6eb5 in g_object_unref () at /usr/lib/libgobject-2.0.so.0
#8  0x000055555555e061 in main (argc=1, argv=0x7fffffffd6a8) at main.c:236
        app = 0x5555557d7aa0
        error = 0x0
(gdb)
Comment 6 abandoned account 2018-04-02 20:52:50 CEST
Here's some more info:

$ pacman -Qo /usr/lib/libgobject-2.0.so.0
/usr/lib/libgobject-2.0.so.0 is owned by glib2 2.56.0+7+g66948ae23-1

$ pacman -Qi glib2
Name            : glib2
Version         : 2.56.0+7+g66948ae23-1
Description     : Low level core library
Architecture    : x86_64
URL             : https://wiki.gnome.org/Projects/GLib
Licenses        : LGPL2.1
Groups          : None
Provides        : None
Depends On      : pcre  libffi  libutil-linux  zlib
Optional Deps   : python: for gdbus-codegen and gtester-report [installed]
                  libelf: gresource inspection tool [installed]
Required By     : at-spi2-core  atk  avahi  cairo  dbus-c++  dbus-glib  dconf
                  desktop-file-utils  emacs-nox  gdk-pixbuf2  gettext
                  glib-networking  glib-perl  glibmm
                  gobject-introspection-runtime  graphene
                  gsettings-desktop-schemas  gstreamer  gts  harfbuzz
                  json-glib  libass  libcloudproviders  libcroco  libgudev
                  libgusb  libical  libidl2  liblqr  libplist  libsecret
                  libsoup  libwacom  libxfce4util-git  libxklavier  mc-git
                  pkg-config  polkit  poppler-glib  pygobject2-devel
                  python-dbus  python2-dbus  rest  shared-mime-info  vala
Optional For    : libproxy
Conflicts With  : None
Replaces        : None
Installed Size  : 13.96 MiB
Packager        : Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Build Date      : Tue 13 Mar 2018 07:33:52 PM CET
Install Date    : Sun 25 Mar 2018 04:23:41 AM CEST
Install Reason  : Installed as a dependency for another package
Install Script  : No
Validated By    : Signature


$ pacman -Qo /usr/lib/libgtk-3.so.0
/usr/lib/libgtk-3.so.0 is owned by gtk3 3.22.29+60+ge42d8598ca-1

$ pacman -Qi gtk3
Name            : gtk3
Version         : 3.22.29+60+ge42d8598ca-1
Description     : GObject-based multi-platform GUI toolkit
Architecture    : x86_64
URL             : http://www.gtk.org/
Licenses        : LGPL
Groups          : None
Provides        : gtk3-print-backends
Depends On      : atk  cairo  libxcursor  libxinerama  libxrandr  libxi
                  libepoxy  gdk-pixbuf2  dconf  libxcomposite  libxdamage
                  pango  shared-mime-info  at-spi2-atk  wayland  libxkbcommon
                  adwaita-icon-theme  json-glib  librsvg  wayland-protocols
                  desktop-file-utils  mesa  cantarell-fonts  colord  rest
                  libcups  libcanberra  gtk-update-icon-cache
Optional Deps   : None
Required By     : chromium-dev  evince  gnome-desktop  gtkmm3  gtksourceview3
                  libgxps  libwnck3  libxfce4ui-devel  polkit-gnome  thunar-git
                  vte3
Optional For    : avahi  ghostscript  libinput  qt5-base
Conflicts With  : gtk3-print-backends
Replaces        : gtk3-print-backends<=3.22.26-1
Installed Size  : 70.03 MiB
Packager        : Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Build Date      : Sun 01 Apr 2018 02:51:02 AM CEST
Install Date    : Sun 01 Apr 2018 06:03:26 AM CEST
Install Reason  : Installed as a dependency for another package
Install Script  : Yes
Validated By    : Signature
Comment 7 abandoned account 2018-04-03 00:08:34 CEST
Ok, I now have no doubt that the problem is in glib2

Here it is crashing with glib2-2.56.0+7+g66948ae23-1-x86_64.pkg.tar

Thread 1 "xfce4-taskmanag" received signal SIGSEGV, Segmentation fault.
0x000055555555ff6f in xtm_process_window_hide (
    widget=0x555555a7a260 [XtmProcessWindow]) at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))
(gdb) bt full
#0  0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7a260 [XtmProcessWindow]) at process-window.c:543
        __inst = 0x555555a84280
        __t = 93824994896128
        __r = 0
        winx = 1434787616
        winy = 28
        __func__ = "xtm_process_window_hide"
#1  0x00007ffff5d3cbff in g_cclosure_marshal_VOID__VOID (closure=0x5555557cd480, return_value=0x0, n_param_values=1, param_values=0x7fffffffd130, invocation_hint=0x7fffffffd0e0, marshal_data=0x55555555fe82 <xtm_process_window_hide>)
    at gmarshal.c:875
        callback = 0x55555555fe82 <xtm_process_window_hide>
        cc = 0x5555557cd480
        data1 = 0x555555a7a260
        data2 = 0x5555557de900
        __func__ = "g_cclosure_marshal_VOID__VOID"
#2  0x00007ffff5d39e59 in g_type_class_meta_marshal (closure=0x5555557cd480, return_value=0x0, n_param_values=1, param_values=0x7fffffffd130, invocation_hint=0x7fffffffd0e0, marshal_data=0xb0) at gclosure.c:997
        class = 0x555555a58c70
        callback = 0x55555555fe82 <xtm_process_window_hide>
        offset = 176
---Type <return> to continue, or q <return> to quit---
#6  0x00007ffff5d57834 in <emit signal ??? on instance 0x555555a7a260 [XtmProcessWindow]> (instance=0x555555a7a260, signal_id=37, detail=0) at gsignal.c:3447
        var_args = 
            {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd480, reg_save_area = 0x7fffffffd3c0}}
    #3  0x00007ffff5d3976f in g_closure_invoke (closure=0x5555557cd480, return_value=0x0, n_param_values=1, param_values=0x7fffffffd130, invocation_hint=0x7fffffffd0e0) at gclosure.c:804
                marshal = 0x7ffff5d39de4 <g_type_class_meta_marshal>
                marshal_data = 0xb0
                in_marshal = 0
                real_closure = 0x5555557cd460
                __func__ = "g_closure_invoke"
    #4  0x00007ffff5d57d0e in signal_emit_unlocked_R (node=0x5555557cd4d0, detail=0, instance=0x555555a7a260, emission_return=0x0, instance_and_params=0x7fffffffd130) at gsignal.c:3565
                accumulator = 0x0
                emission = 
                  {next = 0x0, instance = 0x555555a7a260, ihint = {signal_id = 37, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 93824995694704}
                class_closure = 0x5555557cd480
                hlist = 0x0
---Type <return> to continue, or q <return> to quit---
                handler_list = 0x0
                return_accu = 0x0
                accu = 
                      {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
                signal_id = 37
                max_sequential_handler_number = 1736
                return_value_altered = 0
    #5  0x00007ffff5d572be in g_signal_emit_valist (instance=0x555555a7a260, signal_id=37, detail=0, var_args=0x7fffffffd3a0) at gsignal.c:3391
                instance_and_params = 0x7fffffffd130
                signal_return_type = 4
                param_values = 0x7fffffffd148
                node = 0x5555557cd4d0
                i = 0
                n_params = 0
                __func__ = "g_signal_emit_valist"
#7  0x00007ffff70980c4 in gtk_widget_hide (widget=0x555555a7a260 [XtmProcessWindow]) at gtkwidget.c:4901
        toplevel = 0x555555a7a260 [XtmProcessWindow]
        parent = 0x555555a7a260 [XtmProcessWindow]
---Type <return> to continue, or q <return> to quit---
        __func__ = "gtk_widget_hide"
#8  0x00007ffff70a5b34 in gtk_widget_dispose (object=0x555555a7a260 [XtmProcessWindow]) at gtkwidget.c:12085
        widget = 0x555555a7a260 [XtmProcessWindow]
        priv = 0x555555a7a170
        sizegroups = Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 0xdc7d83dc4589008b: 

          #9  0x00007ffff5d465dd in g_object_unref (_object=0x555555a7a260)
    at gobject.c:3303
        weak_locations = 0x0
        object = 0x555555a7a260 [XtmProcessWindow]
        old_ref = 1
        __func__ = "g_object_unref"
#10 0x000055555555e061 in main (argc=1, argv=0x7fffffffd688) at main.c:236
        app = 0x5555557d7aa0 [GApplication]
        error = 0x0
(gdb) frame 0
#0  0x000055555555ff6f in xtm_process_window_hide (widget=0x555555a7a260 [XtmProcessWindow]) at process-window.c:543
543		if (!GTK_IS_WIDGET (XTM_PROCESS_WINDOW (widget)->window))
(gdb) frame 1
#1  0x00007ffff5d3cbff in g_cclosure_marshal_VOID__VOID (closure=0x5555557cd480, return_value=0x0, n_param_values=1, 
    param_values=0x7fffffffd130, invocation_hint=0x7fffffffd0e0, marshal_data=0x55555555fe82 <xtm_process_window_hide>)
    at gmarshal.c:875
875	  callback (data1,
(gdb) frame 2
#2  0x00007ffff5d39e59 in g_type_class_meta_marshal (closure=0x5555557cd480, return_value=0x0, n_param_values=1, 
    param_values=0x7fffffffd130, invocation_hint=0x7fffffffd0e0, marshal_data=0xb0) at gclosure.c:997
997	    closure->marshal (closure,
(gdb) frame 3
#3  0x00007ffff5d3976f in g_closure_invoke (closure=0x5555557cd480, return_value=0x0, n_param_values=1, param_values=0x7fffffffd130, 
    invocation_hint=0x7fffffffd0e0) at gclosure.c:804
804	      marshal (closure,
(gdb) frame 4
#4  0x00007ffff5d57d0e in signal_emit_unlocked_R (node=0x5555557cd4d0, detail=0, instance=0x555555a7a260, emission_return=0x0, 
    instance_and_params=0x7fffffffd130) at gsignal.c:3565
3565	      g_closure_invoke (class_closure,
(gdb) frame 5
#5  0x00007ffff5d572be in g_signal_emit_valist (instance=0x555555a7a260, signal_id=37, detail=0, var_args=0x7fffffffd3a0)
    at gsignal.c:3391
3391	    signal_emit_unlocked_R (node, detail, instance, NULL, instance_and_params);
(gdb) frame 6
#6  0x00007ffff5d57834 in g_signal_emit (instance=0x555555a7a260, signal_id=37, detail=0) at gsignal.c:3447
3447	  g_signal_emit_valist (instance, signal_id, detail, var_args);
(gdb) frame 7
#7  0x00007ffff70980c4 in gtk_widget_hide (widget=0x555555a7a260 [XtmProcessWindow]) at gtkwidget.c:4901
4901	      g_signal_emit (widget, widget_signals[HIDE], 0);
(gdb) frame 8
#8  0x00007ffff70a5b34 in gtk_widget_dispose (object=0x555555a7a260 [XtmProcessWindow]) at gtkwidget.c:12085
12085	    gtk_widget_hide (widget);
(gdb) frame 9
#9  0x00007ffff5d465dd in g_object_unref (_object=0x555555a7a260) at gobject.c:3303
3303	      G_OBJECT_GET_CLASS (object)->dispose (object);
(gdb) frame 10
#10 0x000055555555e061 in main (argc=1, argv=0x7fffffffd688) at main.c:236
236		g_object_unref (window);
(gdb) frame 11
#0  0x0000000000000000 in ?? ()
(gdb) 


And it just doesn't crash at all with glib2-2.56.0+16+gecabc6e21-1-x86_64.pkg.tar

(tested both versions with Andre's patch for xfce4-taskmanager included!)

In other words: glib commit 66948ae231f75a548c8a2eb7b3a9d64cfd728b8e is bad
and glib commit ecabc6e21cd9db7dedd8aa0eb487aa5822f1eb30 is good, as seen on https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/glib2&id=42e3747c4017ad5aadbda661b5c816a18c0b8e57
Comment 8 abandoned account 2018-04-03 00:21:06 CEST
Actually, I was wrong: the difference is not the commits themselves but rather the fact the failing one had been run with --enabled-debug=yes and the good one with --enable-debug=minimum

as seen here: https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/glib2&id=42e3747c4017ad5aadbda661b5c816a18c0b8e57
Comment 9 abandoned account 2018-04-03 00:55:11 CEST
Ok, I've just REconfirmed the following:

1+3= all good, no crash
2+3= crash
2+4= crash
1+4= all good, no crash

(Naive)Conclusion: the problem of xfce4-taskmanager crashing on exit is solely within glib2

Legend:

1. glib2 compiled with --enable-debug=minimum
2. glib2 compiled with --enable-debug=yes
3. xfce4-taskmanager with Andre's patch from Comment 4 above
4. xfce4-taskmanager WITHOUT Andre's patch from Comment 4 above

crash = refers to xfce4-taskmanager crashes on exit, as shown in Description aka https://bugzilla.xfce.org/show_bug.cgi?id=14320#c0

(all dirs were `make clean`-ed before recompiling)


As ArchLinux temporarily let --enable-debug=yes glib2 loose (as version 2.56.0+7+g66948ae23-1, see url in my previous comment) which is fixed(as version 2.56.0+16+gecabc6e21) but not yet available as an update (aka via `sudo pacman -Syu`), this is why I've encountered the xfce4-taskmanager segfault on exit.

how I compiled glib2: https://github.com/xftroxgpx/a3/blob/50e662f3fffc4782787ea44d04a3961fc5fd7a7e/system/Z575/OSes/3archlinux/on_baremetal/filesystem_now/archlinux/home/xftroxgpx/build/1packages/glib2/PKGBUILD#L68
Comment 10 Andre Miranda editbugs 2018-04-03 04:00:34 CEST
I see, my patch didn't actually fix the problem.
If you dismiss xfce4-taskmanager with esc key, no segfaults.
However, if you press the X window button or alt+f4 it segfaults with or without the patch.
Is that the case for you?

I'm also running Arch, but glib2 here is at version 2.56.0+7+g66948ae23-1. If you can confirm that xfce4-taskmanager doesn't crash when exiting via esc key, then I guess it is its fault for not gracefully close.
Comment 11 abandoned account 2018-04-03 07:01:14 CEST
I can indeed confirm that indeed xfce4-taskmanager does not crash when pressing Esc key, but it does crash when closed via X window button(or alt+f4) as you said! (interesting, pressing Esc to exit didn't even enter my mind :D - thanks Andre!)
(tested without your patch, with glib2-2.56.0+16+gecabc6e21-1-x86_64.pkg.tar which was compiled with --enable-debug=yes; I've also tested the same with Arch's 2.56.0+7+g66948ae23-1 which has been compiled with --enable-debug=yes by them, to have the same effect: crash when alt+f4, no crash when Esc)

(and no crashes in either case with same glib compiled with --enable-debug=minimum , as usual)

Cheers!
Comment 12 Andre Miranda editbugs 2018-04-03 19:56:00 CEST
When esc key is pressed, delete_window callback will be invoked.
When the window is closed, both delete_window and destroy_window are called.
If I comment this line:
main.c:238 -> g_object_unref (window);

No crashes will arise, though I don't know why the code that handles the window finalization is so complicated, probably it's stepping on its own toes...
Comment 13 Simon Steinbeiss editbugs 2020-04-11 11:13:41 CEST
Is this fixed with taskman 1.2.3?
Comment 14 Git Bot editbugs 2020-05-25 00:16:17 CEST
-- GitLab Migration Automatic Message --

This bug has been migrated to xfce.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.xfce.org/apps/xfce4-taskmanager/-/issues/16.

Please create an account or use an existing account on one of our supported OAuth providers. 

If you want to fork to submit patches and merge requests please continue reading here: https://docs.xfce.org/contribute/dev/git/start#gitlab_forks_and_merge_requests

Also feel free to reach out to us on the mailing list https://mail.xfce.org/mailman/listinfo/xfce4-dev

Bug #14320

Reported by:
abandoned account
Reported on: 2018-04-02
Last modified on: 2020-05-25

People

Assignee:
Mike Massonnet
CC List:
3 users

Version

Attachments

Fix patch (197.96 KB, patch)
2018-04-02 16:01 CEST , Andre Miranda
no flags
Fix patch 2 (795 bytes, patch)
2018-04-02 16:07 CEST , Andre Miranda
no flags

Additional information