Comment 165 for bug 1512120

Revision history for this message
In , Rocketx86 (rocketx86) wrote :

(In reply to John Lindgren from comment #90)

> At one point, it seemed that the two patches from comment #14 (Harald) and
> comment #41 (Emil) were enough to fix two separate crashes: one triggered by
> rename, one triggered by drag-and-drop.
>
> Harald himself stated that his patch was not intended as a real fix, just a
> workaround. I wrote an alternate fix[1] and pushed it, along with Emil's
> patch, to my GitHub fork[2].
>
> Since then, there have been several further reports of crashes, and some new
> patches posted. Can those who are still experiencing crashes please confirm
> whether you have the fixes from my fork applied?
>
> [1] https://github.com/jlindgren90/thunar/commit/9c6dbb1dae70
> [2] https://github.com/jlindgren90/thunar

It is certainly much more difficult to crash Thunar 1.6.10 with these 3 patches applied.

1. #14 Harald's deactivate SEND_MOVED code paths
2. #41 Emil's reference counting to avoid crash in deferred reload
3. #65 John's don't call g_object_ref/unref on objects that are being finalized

Unfortunately, while running a release build with these 3 patches, Thunar will still crash on rename and output the following messages:

(thunar:12326): GLib-GObject-WARNING **: instance of invalid non-instantiatable type '(null)'

(thunar:12326): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
Segmentation fault (core dumped)

While running a debug build inside GDB, I was able to capture the following stack trace which seems to correspond to the instance check failure and resulting segmentation fault.

(thunar:27537): GLib-GObject-WARNING **: instance of invalid non-instantiatable type '(null)'

Thread 71 "pool" received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 0x7fffe9301700 (LWP 28891)]
0x00007ffff4b5070b in g_logv () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0 0x00007ffff4b5070b in g_logv () from /usr/lib/libglib-2.0.so.0
#1 0x00007ffff4b5087f in g_log () from /usr/lib/libglib-2.0.so.0
#2 0x00007ffff4e43e85 in g_type_check_instance () from /usr/lib/libgobject-2.0.so.0
#3 0x00007ffff4e37c96 in g_signal_handlers_destroy () from /usr/lib/libgobject-2.0.so.0
#4 0x00007ffff4e23c7a in g_object_unref () from /usr/lib/libgobject-2.0.so.0
#5 0x000000000043d862 in thunar_file_info_clear (file=0x7fffe00203b0) at thunar-file.c:912
#6 0x000000000043df96 in thunar_file_load (file=0x7fffe00203b0, cancellable=0x0, error=0x0) at thunar-file.c:1184
#7 0x000000000043d41e in thunar_file_monitor_moved (file=0x7fffe00203b0, renamed_file=0xc3d380) at thunar-file.c:733
#8 0x000000000043f02f in thunar_file_rename (file=0x7fffe00203b0, name=0xb31e00 "15.txt", cancellable=0xb62080,
    called_from_job=1, error=0x7fffe9300bb8) at thunar-file.c:1956
#9 0x000000000044c39a in _thunar_io_jobs_rename (job=0xb08cb0, param_values=0xa95f20, error=0x7fffe9300c10)
    at thunar-io-jobs.c:1285
#10 0x000000000047eb4c in thunar_simple_job_execute (job=0xb08cb0, error=0x7fffe9300c40) at thunar-simple-job.c:119
#11 0x00007ffff79b0977 in ?? () from /usr/lib/libexo-1.so.0
#12 0x00007ffff50c3276 in ?? () from /usr/lib/libgio-2.0.so.0
#13 0x00007ffff50e924d in ?? () from /usr/lib/libgio-2.0.so.0
#14 0x00007ffff4b70cae in ?? () from /usr/lib/libglib-2.0.so.0
#15 0x00007ffff4b702b5 in ?? () from /usr/lib/libglib-2.0.so.0
#16 0x00007ffff48ea484 in start_thread () from /usr/lib/libpthread.so.0
#17 0x00007ffff46296dd in clone () from /usr/lib/libc.so.6