I had thunar crashing from time to time (especially in large directories) due to concurrent use of getfsent() (which is not thread-safe). (gdb) bt #0 _flockfile (fp=0x0) at /usr/src/lib/libc/stdio/_flock_stub.c:68 #1 0x000000080bf59deb in fgets (buf=0x80bf8ff90 "\n", n=1024, fp=0x0) at /usr/src/lib/libc/stdio/fgets.c:61 #2 0x000000080be7a1b4 in fstabscan () at /usr/src/lib/libc/gen/fstab.c:121 #3 0x000000080be7a03c in getfsent () at /usr/src/lib/libc/gen/fstab.c:227 #4 0x000000080a181c28 in g_unix_mount_points_get () at /usr/local/lib/libgio-2.0.so.0 #5 0x000000080a181da9 in g_unix_mount_point_at () at /usr/local/lib/libgio-2.0.so.0 #6 0x000000080a1e0811 in () at /usr/local/lib/libgio-2.0.so.0 #7 0x000000080a1e0624 in () at /usr/local/lib/libgio-2.0.so.0 #8 0x000000080a1e4235 in () at /usr/local/lib/libgio-2.0.so.0 #9 0x000000080a1e3d4e in () at /usr/local/lib/libgio-2.0.so.0 #10 0x000000080a116a88 in g_file_enumerator_next_file () at /usr/local/lib/libgio-2.0.so.0 #11 0x000000000027ca39 in () #12 0x000000000027c1ed in () #13 0x00000000002a54ee in () #14 0x0000000801f97b86 in () at /usr/local/lib/libexo-2.so.0 #15 0x000000080a12bd9e in () at /usr/local/lib/libgio-2.0.so.0 #16 0x000000080a15fc45 in () at /usr/local/lib/libgio-2.0.so.0 #17 0x000000080ae6b483 in () at /usr/local/lib/libglib-2.0.so.0 #18 0x000000080ae6a272 in () at /usr/local/lib/libglib-2.0.so.0 #19 0x0000000806d1afac in thread_start (curthread=0x87f425400) at /usr/src/lib/libthr/thread/thr_create.c:292 #20 0x0000000000000000 in () Adding this patch fixes the problem. devel/glib20/files/patch-gio_gunixmounts.c --- gio/gunixmounts.c.orig 2020-10-01 09:17:53.138733000 -0400 +++ gio/gunixmounts.c 2020-10-13 00:14:04.413638000 -0400 @@ -1389,6 +1389,8 @@ #elif (defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)) && defined(HAVE_FSTAB_H) && defined(HAVE_SYS_MOUNT_H) +G_LOCK_DEFINE_STATIC(getfsent); + static GList * _g_get_unix_mount_points (void) { @@ -1433,6 +1435,7 @@ #endif #endif + G_LOCK (getfsent); while ((fstab = getfsent ()) != NULL) { gboolean is_read_only = FALSE; @@ -1468,6 +1471,7 @@ } endfsent (); + G_UNLOCK (getfsent); return g_list_reverse (return_list); }
(hat: desktop) Looks pretty good, needs more testing. Grab it.
(In reply to sigsys from comment #0) I think you have to acquire the lock earlier, before the setfsent call.
(In reply to Tijl Coosemans from comment #2) Oops you're right. Better to move the call down while at it? No need to protect the sysctls. --- gio/gunixmounts.c.orig 2020-10-01 09:17:53.138733000 -0400 +++ gio/gunixmounts.c 2020-10-15 13:05:40.628175000 -0400 @@ -1389,6 +1389,8 @@ #elif (defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)) && defined(HAVE_FSTAB_H) && defined(HAVE_SYS_MOUNT_H) +G_LOCK_DEFINE_STATIC(getfsent); + static GList * _g_get_unix_mount_points (void) { @@ -1400,9 +1402,6 @@ struct stat sb; #endif - if (!setfsent ()) - return NULL; - return_list = NULL; #ifdef HAVE_SYS_SYSCTL_H @@ -1433,6 +1432,11 @@ #endif #endif + G_LOCK (getfsent); + if (!setfsent ()) { + G_UNLOCK (getfsent); + return NULL; + } while ((fstab = getfsent ()) != NULL) { gboolean is_read_only = FALSE; @@ -1468,6 +1472,7 @@ } endfsent (); + G_UNLOCK (getfsent); return g_list_reverse (return_list); }
I have got a similar problem with x11-fm/caja: #0 strlcpy (dst=0x7fffde9f2280 "\300\b \t\b", src=<optimized out>, dsize=<optimized out>) at /disk2Tb/usr/src/lib/libc/string/strlcpy.c:39 39 if ((*dst++ = *src++) == '\0') [Current thread is 1 (LWP 100454)] (gdb) bt #0 strlcpy (dst=0x7fffde9f2280 "\300\b \t\b", src=<optimized out>, dsize=<optimized out>) at /disk2Tb/usr/src/lib/libc/string/strlcpy.c:39 #1 0x00000008019bc50e in fstabscan () at /disk2Tb/usr/src/lib/libc/gen/fstab.c:184 #2 0x00000008019bc20c in getfsent () at /disk2Tb/usr/src/lib/libc/gen/fstab.c:227 #3 0x000000080161ec06 in _g_get_unix_mount_points () at ../gio/gunixmounts.c:1436 #4 0x000000080161eab8 in g_unix_mount_points_get (time_read=0x0) at ../gio/gunixmounts.c:1660 #5 0x000000080161edc9 in g_unix_mount_point_at (mount_path=0x8055a4fe0 "/disk4T", time_read=0x0) at ../gio/gunixmounts.c:1687 #6 0x00000008016b1754 in ignore_trash_mount (mount=0x808f2fe30) at ../gio/glocalfile.c:1789 #7 0x00000008016ac9cb in ignore_trash_path (topdir=0x8055a4f80 "/disk4T") at ../gio/glocalfile.c:1814 #8 0x00000008016ac74a in _g_local_file_has_trash_dir (dirname=0x80912f3e0 "/home/tomek/2/kopie", dir_dev=176) at ../gio/glocalfile.c:1850 #9 0x00000008016b2a8a in _g_local_file_info_get_parent_info (dir=0x80912f3e0 "/home/tomek/2/kopie", attribute_matcher=0x807a05ea0, parent_info=0x7fffde9f2e28) at ../gio/glocalfileinfo.c:880 #10 0x00000008016ae2d5 in g_local_file_query_info (file=0x805d4c120, attributes=0x8072633c0 "standard::*,access::*,mountable::*,time::*,unix::*,owner::*,selinux::*,thumbnail::*,id::filesystem,trash::orig-path,trash::deletion-date,metadata::*", flags=G_FILE_QUERY_INFO_NONE, cancellable=0x0, error=0x7fffde9f2f30) at ../gio/glocalfile.c:1217 #11 0x0000000801567c19 in g_file_query_info (file=0x805d4c120, attributes=0x8072633c0 "standard::*,access::*,mountable::*,time::*,unix::*,owner::*,selinux::*,thumbnail::*,id::filesystem,trash::orig-path,trash::deletion-date,metadata::*", flags=G_FILE_QUERY_INFO_NONE, cancellable=0x0, error=0x7fffde9f2f30) at ../gio/gfile.c:1286 #12 0x0000000801575ccd in query_info_async_thread (task=0x8091551c0 [GTask], object=0x805d4c120, task_data=0x807a4b9d0, cancellable=0x0) at ../gio/gfile.c:5534 #13 0x00000008015eb4d3 in g_task_thread_pool_thread (thread_data=0x8091551c0, pool_data=0x0) at ../gio/gtask.c:1417 #14 0x000000080187b3c7 in g_thread_pool_thread_proxy (data=0x805581260) at ../glib/gthreadpool.c:354 #15 0x0000000801879a35 in g_thread_proxy (data=0x805c92800) at ../glib/gthread.c:820 #16 0x000000080143afec in thread_start (curthread=0x805ea0300) at /disk2Tb/usr/src/lib/libthr/thread/thr_create.c:292 #17 0x0000000000000000 in () The first patch fixed the problem.
(In reply to sigsys from comment #3) > Better to move the call down while at it? No need to protect the sysctls. Yes, looks good to me. It's unlikely that setfsent fails so calling it early to be able to return early on failure doesn't gain much in practice.
Core file '/tmp/thunar.01.core' (x86_64) was loaded. (lldb) bt all * thread #1, name = 'pool-Thunar', stop reason = signal SIGSEGV * frame #0: 0x000000080151786f libc.so.7`_flockfile + 15 frame #1: 0x00000008014fbb5f libc.so.7`fgets + 63 frame #2: 0x0000000801418f94 libc.so.7`___lldb_unnamed_symbol151$$libc.so.7 + 148 frame #3: 0x0000000801418e1c libc.so.7`getfsent + 28 frame #4: 0x0000000801146546 libgio-2.0.so.0`g_unix_mount_points_get + 310 frame #5: 0x0000000801146639 libgio-2.0.so.0`g_unix_mount_point_at + 25 frame #6: 0x00000008011a83f1 libgio-2.0.so.0`___lldb_unnamed_symbol2970$$libgio-2.0.so.0 + 145 frame #7: 0x00000008011a8204 libgio-2.0.so.0`___lldb_unnamed_symbol2969$$libgio-2.0.so.0 + 196 frame #8: 0x00000008011abfa5 libgio-2.0.so.0`___lldb_unnamed_symbol3032$$libgio-2.0.so.0 + 293 frame #9: 0x00000008011ababb libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 91 frame #10: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #11: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a633b0, file=0x0000000805bc7e80, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffde7f0e50) at thunar-io-scan-directory.c:112:14 frame #12: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a633b0, param_values=0x0000000806e66670, error=0x00007fffde7f0ed0) at thunar-io-jobs.c:1250:15 frame #13: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a633b0, error=0x00007fffde7f0ef0) at thunar-simple-job.c:119:13 frame #14: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #15: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #16: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #17: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #18: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #19: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #2, name = 'thunar', stop reason = signal SIGSEGV frame #0: 0x00000008005474e9 libthr.so.3`pthread_getspecific + 41 frame #1: 0x0000000801325145 libglib-2.0.so.0`___lldb_unnamed_symbol197$$libglib-2.0.so.0 + 37 frame #2: 0x0000000801324b58 libglib-2.0.so.0`g_slice_alloc + 40 frame #3: 0x000000080120e6f2 libgobject-2.0.so.0`g_signal_connect_data + 722 frame #4: 0x000000000032f1bd Thunar`thunar_tree_model_item_load_idle(user_data=0x0000000806bd5f60) at thunar-tree-model.c:1438:11 frame #5: 0x0000000801303d50 libglib-2.0.so.0`g_main_context_dispatch + 400 frame #6: 0x00000008013040fa libglib-2.0.so.0`___lldb_unnamed_symbol119$$libglib-2.0.so.0 + 522 frame #7: 0x00000008013041c6 libglib-2.0.so.0`g_main_context_iteration + 102 frame #8: 0x000000080114dc8d libgio-2.0.so.0`g_application_run + 541 frame #9: 0x000000000027610a Thunar`main(argc=2, argv=0x00007fffffffd938) at main.c:161:3 frame #10: 0x0000000000264415 Thunar`_start + 261 thread #3, name = 'pool-spawner', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8c libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 92 frame #1: 0x000000080054f3bd libthr.so.3`___lldb_unnamed_symbol158$$libthr.so.3 + 605 frame #2: 0x000000080135f525 libglib-2.0.so.0`g_cond_wait + 37 frame #3: 0x00000008012cd0ab libglib-2.0.so.0`___lldb_unnamed_symbol15$$libglib-2.0.so.0 + 187 frame #4: 0x00000008013321a8 libglib-2.0.so.0`___lldb_unnamed_symbol229$$libglib-2.0.so.0 + 72 frame #5: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #6: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #4, name = 'gmain', stop reason = signal SIGSEGV frame #0: 0x00000008014bddea libc.so.7`__sys_poll + 10 frame #1: 0x0000000800545b86 libthr.so.3`___lldb_unnamed_symbol38$$libthr.so.3 + 54 frame #2: 0x00000008013040a2 libglib-2.0.so.0`___lldb_unnamed_symbol119$$libglib-2.0.so.0 + 434 frame #3: 0x00000008013041c6 libglib-2.0.so.0`g_main_context_iteration + 102 frame #4: 0x00000008013062c1 libglib-2.0.so.0`___lldb_unnamed_symbol124$$libglib-2.0.so.0 + 33 frame #5: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #6: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #5, name = 'gdbus', stop reason = signal SIGSEGV frame #0: 0x00000008014bddea libc.so.7`__sys_poll + 10 frame #1: 0x0000000800545b86 libthr.so.3`___lldb_unnamed_symbol38$$libthr.so.3 + 54 frame #2: 0x00000008013040a2 libglib-2.0.so.0`___lldb_unnamed_symbol119$$libglib-2.0.so.0 + 434 frame #3: 0x000000080130444f libglib-2.0.so.0`g_main_loop_run + 239 frame #4: 0x00000008011933db libgio-2.0.so.0`___lldb_unnamed_symbol2748$$libgio-2.0.so.0 + 27 frame #5: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #6: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #6, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8a libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 90 frame #1: 0x000000080054b0f8 libthr.so.3`___lldb_unnamed_symbol111$$libthr.so.3 + 680 frame #2: 0x0000000800549e70 libthr.so.3`_pthread_mutex_lock + 64 frame #3: 0x000000080135eca7 libglib-2.0.so.0`g_mutex_lock + 23 frame #4: 0x00000008011ac34c libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 572 frame #5: 0x00000008011abcde libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 638 frame #6: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #7: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a635f0, file=0x0000000805bc88e0, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdf7f8e50) at thunar-io-scan-directory.c:112:14 frame #8: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a635f0, param_values=0x0000000806f47590, error=0x00007fffdf7f8ed0) at thunar-io-jobs.c:1250:15 frame #9: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a635f0, error=0x00007fffdf7f8ef0) at thunar-simple-job.c:119:13 frame #10: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #11: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #12: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #13: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #14: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #15: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #7, name = 'thunar', stop reason = signal SIGSEGV frame #0: 0x000000080151519a libc.so.7`___lldb_unnamed_symbol1518$$libc.so.7 + 714 frame #1: 0x00000008011bd30b libgio-2.0.so.0`___lldb_unnamed_symbol3272$$libgio-2.0.so.0 + 779 frame #2: 0x00000008011bcbff libgio-2.0.so.0`___lldb_unnamed_symbol3270$$libgio-2.0.so.0 + 335 frame #3: 0x00000008011bb5cf libgio-2.0.so.0`___lldb_unnamed_symbol3266$$libgio-2.0.so.0 + 943 frame #4: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #8, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8a libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 90 frame #1: 0x000000080054b0f8 libthr.so.3`___lldb_unnamed_symbol111$$libthr.so.3 + 680 frame #2: 0x0000000800549e70 libthr.so.3`_pthread_mutex_lock + 64 frame #3: 0x000000080135eca7 libglib-2.0.so.0`g_mutex_lock + 23 frame #4: 0x00000008011ac34c libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 572 frame #5: 0x00000008011abd21 libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 705 frame #6: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #7: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a63680, file=0x0000000805bc8a00, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdedf3e50) at thunar-io-scan-directory.c:112:14 frame #8: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a63680, param_values=0x00000008060ffd50, error=0x00007fffdedf3ed0) at thunar-io-jobs.c:1250:15 frame #9: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a63680, error=0x00007fffdedf3ef0) at thunar-simple-job.c:119:13 frame #10: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #11: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #12: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #13: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #14: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #15: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #9, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8a libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 90 frame #1: 0x000000080054b0f8 libthr.so.3`___lldb_unnamed_symbol111$$libthr.so.3 + 680 frame #2: 0x0000000800549e70 libthr.so.3`_pthread_mutex_lock + 64 frame #3: 0x000000080135eca7 libglib-2.0.so.0`g_mutex_lock + 23 frame #4: 0x00000008011ac34c libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 572 frame #5: 0x00000008011abcde libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 638 frame #6: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #7: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a63560, file=0x0000000805bc88a0, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdf9f9e50) at thunar-io-scan-directory.c:112:14 frame #8: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a63560, param_values=0x00000008062c8860, error=0x00007fffdf9f9ed0) at thunar-io-jobs.c:1250:15 frame #9: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a63560, error=0x00007fffdf9f9ef0) at thunar-simple-job.c:119:13 frame #10: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #11: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #12: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #13: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #14: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #15: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #10, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x00000008014aabaa libc.so.7`__sys_openat + 10 frame #1: 0x0000000800545b1e libthr.so.3`___lldb_unnamed_symbol37$$libthr.so.3 + 158 frame #2: 0x00000008013e9773 libc.so.7`open + 211 frame #3: 0x00000008012ec043 libglib-2.0.so.0`___lldb_unnamed_symbol59$$libglib-2.0.so.0 + 67 frame #4: 0x00000008011ac3f1 libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 737 frame #5: 0x00000008011abd21 libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 705 frame #6: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #7: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a63440, file=0x0000000805bc8760, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdf1f5e50) at thunar-io-scan-directory.c:112:14 frame #8: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a63440, param_values=0x00000008062c8240, error=0x00007fffdf1f5ed0) at thunar-io-jobs.c:1250:15 frame #9: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a63440, error=0x00007fffdf1f5ef0) at thunar-simple-job.c:119:13 frame #10: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #11: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #12: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #13: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #14: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #15: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #11, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x00000008014fe14a libc.so.7`__sys_access + 10 frame #1: 0x00000008011acb86 libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 2678 frame #2: 0x00000008011abd21 libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 705 frame #3: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #4: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a634d0, file=0x0000000805bc84a0, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdf3f6e50) at thunar-io-scan-directory.c:112:14 frame #5: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a634d0, param_values=0x00000008060ffc60, error=0x00007fffdf3f6ed0) at thunar-io-jobs.c:1250:15 frame #6: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a634d0, error=0x00007fffdf3f6ef0) at thunar-simple-job.c:119:13 frame #7: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #8: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #9: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #10: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #11: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #12: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #12, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x000000080151519a libc.so.7`___lldb_unnamed_symbol1518$$libc.so.7 + 714 frame #1: 0x00000008011a8247 libgio-2.0.so.0`___lldb_unnamed_symbol2969$$libgio-2.0.so.0 + 263 frame #2: 0x00000008011abfa5 libgio-2.0.so.0`___lldb_unnamed_symbol3032$$libgio-2.0.so.0 + 293 frame #3: 0x00000008011ababb libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 91 frame #4: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #5: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a63050, file=0x0000000805bc7f40, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdeff4e50) at thunar-io-scan-directory.c:112:14 frame #6: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a63050, param_values=0x0000000805ddc8c0, error=0x00007fffdeff4ed0) at thunar-io-jobs.c:1250:15 frame #7: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a63050, error=0x00007fffdeff4ef0) at thunar-simple-job.c:119:13 frame #8: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #9: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #10: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #11: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #12: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #13: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #13, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8a libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 90 frame #1: 0x000000080054b0f8 libthr.so.3`___lldb_unnamed_symbol111$$libthr.so.3 + 680 frame #2: 0x0000000800549e70 libthr.so.3`_pthread_mutex_lock + 64 frame #3: 0x000000080135eca7 libglib-2.0.so.0`g_mutex_lock + 23 frame #4: 0x00000008011ac34c libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 572 frame #5: 0x00000008011abd21 libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 705 frame #6: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #7: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a630e0, file=0x0000000805bc7e60, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdebf2e50) at thunar-io-scan-directory.c:112:14 frame #8: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a630e0, param_values=0x0000000806bd4c30, error=0x00007fffdebf2ed0) at thunar-io-jobs.c:1250:15 frame #9: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a630e0, error=0x00007fffdebf2ef0) at thunar-simple-job.c:119:13 frame #10: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #11: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #12: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #13: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #14: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #15: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #14, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x000000080150629a libc.so.7`__sys_getdirentries + 10 frame #1: 0x0000000801505ef8 libc.so.7`___lldb_unnamed_symbol1435$$libc.so.7 + 328 frame #2: 0x0000000801505ff0 libc.so.7`readdir + 48 frame #3: 0x00000008011abb5d libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 253 frame #4: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #5: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x0000000806a63320, file=0x0000000805bc7d20, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffde9f1e50) at thunar-io-scan-directory.c:112:14 frame #6: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x0000000806a63320, param_values=0x0000000806e66490, error=0x00007fffde9f1ed0) at thunar-io-jobs.c:1250:15 frame #7: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x0000000806a63320, error=0x00007fffde9f1ef0) at thunar-simple-job.c:119:13 frame #8: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #9: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #10: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #11: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #12: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #13: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #15, name = 'pool-Thunar', stop reason = signal SIGSEGV frame #0: 0x000000080151519a libc.so.7`___lldb_unnamed_symbol1518$$libc.so.7 + 714 frame #1: 0x00000008011a8247 libgio-2.0.so.0`___lldb_unnamed_symbol2969$$libgio-2.0.so.0 + 263 frame #2: 0x00000008011abfa5 libgio-2.0.so.0`___lldb_unnamed_symbol3032$$libgio-2.0.so.0 + 293 frame #3: 0x00000008011ababb libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 91 frame #4: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #5: 0x00000000002c3e69 Thunar`thunar_io_scan_directory(job=0x000000080613d3b0, file=0x0000000805bc83a0, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffde5efe50) at thunar-io-scan-directory.c:112:14 frame #6: 0x00000000002c23e0 Thunar`_thunar_io_jobs_ls(job=0x000000080613d3b0, param_values=0x0000000806e666d0, error=0x00007fffde5efed0) at thunar-io-jobs.c:1250:15 frame #7: 0x0000000000311467 Thunar`thunar_simple_job_execute(job=0x000000080613d3b0, error=0x00007fffde5efef0) at thunar-simple-job.c:119:13 frame #8: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #9: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #10: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #11: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #12: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #13: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 ========================================================================================================================================= * thread #1, name = 'pool-thunar', stop reason = signal SIGSEGV * frame #0: 0x0000000801518755 libc.so.7`strlcpy + 37 frame #1: 0x000000080141911e libc.so.7`___lldb_unnamed_symbol151$$libc.so.7 + 542 frame #2: 0x0000000801418e1c libc.so.7`getfsent + 28 frame #3: 0x00000008011464a8 libgio-2.0.so.0`g_unix_mount_points_get + 152 frame #4: 0x0000000801146639 libgio-2.0.so.0`g_unix_mount_point_at + 25 frame #5: 0x00000008011a83f1 libgio-2.0.so.0`___lldb_unnamed_symbol2970$$libgio-2.0.so.0 + 145 frame #6: 0x00000008011a8204 libgio-2.0.so.0`___lldb_unnamed_symbol2969$$libgio-2.0.so.0 + 196 frame #7: 0x00000008011abfa5 libgio-2.0.so.0`___lldb_unnamed_symbol3032$$libgio-2.0.so.0 + 293 frame #8: 0x00000008011ababb libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 91 frame #9: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #10: 0x00000000002c3e69 thunar`thunar_io_scan_directory(job=0x0000000806968af0, file=0x0000000805bb4e00, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdedf3e50) at thunar-io-scan-directory.c:112:14 frame #11: 0x00000000002c23e0 thunar`_thunar_io_jobs_ls(job=0x0000000806968af0, param_values=0x0000000806826380, error=0x00007fffdedf3ed0) at thunar-io-jobs.c:1250:15 frame #12: 0x0000000000311467 thunar`thunar_simple_job_execute(job=0x0000000806968af0, error=0x00007fffdedf3ef0) at thunar-simple-job.c:119:13 frame #13: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #14: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #15: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #16: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #17: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #18: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #2, name = 'thunar', stop reason = signal SIGSEGV frame #0: 0x000000080135ed31 libglib-2.0.so.0`g_mutex_unlock + 1 frame #1: 0x0000000801211b02 libgobject-2.0.so.0`g_signal_emit_valist + 2210 frame #2: 0x0000000801212196 libgobject-2.0.so.0`g_signal_emit + 134 frame #3: 0x0000000800d7d5f4 libgtk-3.so.0`gtk_tree_model_row_inserted + 228 frame #4: 0x00000000002cc28e thunar`thunar_list_model_files_added(folder=0x0000000805cc3d20, files=0x0000000805bc1c00, store=0x0000000806486720) at thunar-list-model.c:1320:15 frame #5: 0x00000008011fa578 libgobject-2.0.so.0`g_closure_invoke + 200 frame #6: 0x0000000801210db7 libgobject-2.0.so.0`___lldb_unnamed_symbol241$$libgobject-2.0.so.0 + 2631 frame #7: 0x0000000801211d5f libgobject-2.0.so.0`g_signal_emit_valist + 2815 frame #8: 0x0000000801212196 libgobject-2.0.so.0`g_signal_emit + 134 frame #9: 0x00000000002b1a16 thunar`thunar_folder_finished(job=0x000000080620a410, folder=0x0000000805cc3d20) at thunar-folder.c:572:11 frame #10: 0x00000008011fa578 libgobject-2.0.so.0`g_closure_invoke + 200 frame #11: 0x0000000801210db7 libgobject-2.0.so.0`___lldb_unnamed_symbol241$$libgobject-2.0.so.0 + 2631 frame #12: 0x0000000801211d5f libgobject-2.0.so.0`g_signal_emit_valist + 2815 frame #13: 0x0000000801212196 libgobject-2.0.so.0`g_signal_emit + 134 frame #14: 0x00000008003c907d libexo-2.so.0`___lldb_unnamed_symbol24$$libexo-2.so.0 + 141 frame #15: 0x0000000801303d50 libglib-2.0.so.0`g_main_context_dispatch + 400 frame #16: 0x00000008013040fa libglib-2.0.so.0`___lldb_unnamed_symbol119$$libglib-2.0.so.0 + 522 frame #17: 0x00000008013041c6 libglib-2.0.so.0`g_main_context_iteration + 102 frame #18: 0x000000080114dc8d libgio-2.0.so.0`g_application_run + 541 frame #19: 0x000000000027610a thunar`main(argc=2, argv=0x00007fffffffd970) at main.c:161:3 frame #20: 0x0000000000264415 thunar`_start + 261 thread #3, name = 'pool-spawner', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8c libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 92 frame #1: 0x000000080054f3bd libthr.so.3`___lldb_unnamed_symbol158$$libthr.so.3 + 605 frame #2: 0x000000080135f525 libglib-2.0.so.0`g_cond_wait + 37 frame #3: 0x00000008012cd0ab libglib-2.0.so.0`___lldb_unnamed_symbol15$$libglib-2.0.so.0 + 187 frame #4: 0x00000008013321a8 libglib-2.0.so.0`___lldb_unnamed_symbol229$$libglib-2.0.so.0 + 72 frame #5: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #6: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #4, name = 'gmain', stop reason = signal SIGSEGV frame #0: 0x00000008014bddea libc.so.7`__sys_poll + 10 frame #1: 0x0000000800545b86 libthr.so.3`___lldb_unnamed_symbol38$$libthr.so.3 + 54 frame #2: 0x00000008013040a2 libglib-2.0.so.0`___lldb_unnamed_symbol119$$libglib-2.0.so.0 + 434 frame #3: 0x00000008013041c6 libglib-2.0.so.0`g_main_context_iteration + 102 frame #4: 0x00000008013062c1 libglib-2.0.so.0`___lldb_unnamed_symbol124$$libglib-2.0.so.0 + 33 frame #5: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #6: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #5, name = 'gdbus', stop reason = signal SIGSEGV frame #0: 0x000000080147f9d1 libc.so.7`__malloc + 1 frame #1: 0x000000080130c173 libglib-2.0.so.0`g_malloc + 19 frame #2: 0x00000008013274a3 libglib-2.0.so.0`g_memdup + 35 frame #3: 0x00000008012d47df libglib-2.0.so.0`g_bytes_new + 31 frame #4: 0x0000000801345d9d libglib-2.0.so.0`g_variant_new_byte + 45 frame #5: 0x00000008011857b6 libgio-2.0.so.0`___lldb_unnamed_symbol2630$$libgio-2.0.so.0 + 1942 frame #6: 0x00000008011854b2 libgio-2.0.so.0`___lldb_unnamed_symbol2630$$libgio-2.0.so.0 + 1170 frame #7: 0x000000080118595a libgio-2.0.so.0`___lldb_unnamed_symbol2630$$libgio-2.0.so.0 + 2362 frame #8: 0x0000000801184cf9 libgio-2.0.so.0`g_dbus_message_new_from_blob + 681 frame #9: 0x000000080119395d libgio-2.0.so.0`___lldb_unnamed_symbol2750$$libgio-2.0.so.0 + 1069 frame #10: 0x000000080112373b libgio-2.0.so.0`___lldb_unnamed_symbol1531$$libgio-2.0.so.0 + 43 frame #11: 0x0000000801303d50 libglib-2.0.so.0`g_main_context_dispatch + 400 frame #12: 0x00000008013040fa libglib-2.0.so.0`___lldb_unnamed_symbol119$$libglib-2.0.so.0 + 522 frame #13: 0x000000080130444f libglib-2.0.so.0`g_main_loop_run + 239 frame #14: 0x00000008011933db libgio-2.0.so.0`___lldb_unnamed_symbol2748$$libgio-2.0.so.0 + 27 frame #15: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #16: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #6, name = 'pool-thunar', stop reason = signal SIGSEGV frame #0: 0x0000000800551e8c libthr.so.3`___lldb_unnamed_symbol189$$libthr.so.3 + 92 frame #1: 0x000000080054f3bd libthr.so.3`___lldb_unnamed_symbol158$$libthr.so.3 + 605 frame #2: 0x000000080135f6e7 libglib-2.0.so.0`g_cond_wait_until + 119 frame #3: 0x00000008012cd07e libglib-2.0.so.0`___lldb_unnamed_symbol15$$libglib-2.0.so.0 + 142 frame #4: 0x0000000801332e2a libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 122 frame #5: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #6: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #7, name = 'thunar', stop reason = signal SIGSEGV frame #0: 0x000000080150629a libc.so.7`__sys_getdirentries + 10 frame #1: 0x00000008011bd469 libgio-2.0.so.0`___lldb_unnamed_symbol3273$$libgio-2.0.so.0 + 89 frame #2: 0x00000008011bd2d4 libgio-2.0.so.0`___lldb_unnamed_symbol3272$$libgio-2.0.so.0 + 724 frame #3: 0x00000008011bcbff libgio-2.0.so.0`___lldb_unnamed_symbol3270$$libgio-2.0.so.0 + 335 frame #4: 0x00000008011bb5cf libgio-2.0.so.0`___lldb_unnamed_symbol3266$$libgio-2.0.so.0 + 943 frame #5: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #8, name = 'pool-thunar', stop reason = signal SIGSEGV frame #0: 0x000000080151519a libc.so.7`___lldb_unnamed_symbol1518$$libc.so.7 + 714 frame #1: 0x00000008011ac195 libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 133 frame #2: 0x00000008011abd21 libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 705 frame #3: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #4: 0x00000000002c3e69 thunar`thunar_io_scan_directory(job=0x0000000806968940, file=0x0000000805bb4ac0, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdf3f6e50) at thunar-io-scan-directory.c:112:14 frame #5: 0x00000000002c23e0 thunar`_thunar_io_jobs_ls(job=0x0000000806968940, param_values=0x0000000806480b00, error=0x00007fffdf3f6ed0) at thunar-io-jobs.c:1250:15 frame #6: 0x0000000000311467 thunar`thunar_simple_job_execute(job=0x0000000806968940, error=0x00007fffdf3f6ef0) at thunar-simple-job.c:119:13 frame #7: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #8: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #9: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #10: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #11: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #12: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #9, name = 'pool-thunar', stop reason = signal SIGSEGV frame #0: 0x00000008014fe14a libc.so.7`__sys_access + 10 frame #1: 0x00000008011abf17 libgio-2.0.so.0`___lldb_unnamed_symbol3032$$libgio-2.0.so.0 + 151 frame #2: 0x00000008011ababb libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 91 frame #3: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #4: 0x00000000002c3e69 thunar`thunar_io_scan_directory(job=0x00000008069689d0, file=0x0000000805bb4b80, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdf1f5e50) at thunar-io-scan-directory.c:112:14 frame #5: 0x00000000002c23e0 thunar`_thunar_io_jobs_ls(job=0x00000008069689d0, param_values=0x00000008064808c0, error=0x00007fffdf1f5ed0) at thunar-io-jobs.c:1250:15 frame #6: 0x0000000000311467 thunar`thunar_simple_job_execute(job=0x00000008069689d0, error=0x00007fffdf1f5ef0) at thunar-simple-job.c:119:13 frame #7: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #8: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #9: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #10: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #11: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #12: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #10, name = 'pool-thunar', stop reason = signal SIGSEGV frame #0: 0x00000008014e9bd6 libc.so.7`strsep + 22 frame #1: 0x000000080141908b libc.so.7`___lldb_unnamed_symbol151$$libc.so.7 + 395 frame #2: 0x0000000801418e1c libc.so.7`getfsent + 28 frame #3: 0x0000000801146546 libgio-2.0.so.0`g_unix_mount_points_get + 310 frame #4: 0x0000000801146639 libgio-2.0.so.0`g_unix_mount_point_at + 25 frame #5: 0x00000008011a83f1 libgio-2.0.so.0`___lldb_unnamed_symbol2970$$libgio-2.0.so.0 + 145 frame #6: 0x00000008011a8204 libgio-2.0.so.0`___lldb_unnamed_symbol2969$$libgio-2.0.so.0 + 196 frame #7: 0x00000008011abfa5 libgio-2.0.so.0`___lldb_unnamed_symbol3032$$libgio-2.0.so.0 + 293 frame #8: 0x00000008011ababb libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 91 frame #9: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #10: 0x00000000002c3e69 thunar`thunar_io_scan_directory(job=0x0000000806968a60, file=0x0000000805bb4d20, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdeff4e50) at thunar-io-scan-directory.c:112:14 frame #11: 0x00000000002c23e0 thunar`_thunar_io_jobs_ls(job=0x0000000806968a60, param_values=0x0000000806826b30, error=0x00007fffdeff4ed0) at thunar-io-jobs.c:1250:15 frame #12: 0x0000000000311467 thunar`thunar_simple_job_execute(job=0x0000000806968a60, error=0x00007fffdeff4ef0) at thunar-simple-job.c:119:13 frame #13: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #14: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #15: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #16: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #17: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #18: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354 thread #11, name = 'pool-thunar', stop reason = signal SIGSEGV frame #0: 0x000000080151519a libc.so.7`___lldb_unnamed_symbol1518$$libc.so.7 + 714 frame #1: 0x00000008011ac195 libgio-2.0.so.0`___lldb_unnamed_symbol3035$$libgio-2.0.so.0 + 133 frame #2: 0x00000008011abd21 libgio-2.0.so.0`___lldb_unnamed_symbol3028$$libgio-2.0.so.0 + 705 frame #3: 0x00000008010d68a5 libgio-2.0.so.0`g_file_enumerator_next_file + 293 frame #4: 0x00000000002c3e69 thunar`thunar_io_scan_directory(job=0x0000000806968b80, file=0x0000000805bb4b20, flags=G_FILE_QUERY_INFO_NONE, recursively=0, unlinking=0, return_thunar_files=1, error=0x00007fffdebf2e50) at thunar-io-scan-directory.c:112:14 frame #5: 0x00000000002c23e0 thunar`_thunar_io_jobs_ls(job=0x0000000806968b80, param_values=0x0000000805d3db80, error=0x00007fffdebf2ed0) at thunar-io-jobs.c:1250:15 frame #6: 0x0000000000311467 thunar`thunar_simple_job_execute(job=0x0000000806968b80, error=0x00007fffdebf2ef0) at thunar-simple-job.c:119:13 frame #7: 0x00000008003c8c1c libexo-2.so.0`___lldb_unnamed_symbol22$$libexo-2.so.0 + 92 frame #8: 0x00000008010ed364 libgio-2.0.so.0`___lldb_unnamed_symbol920$$libgio-2.0.so.0 + 52 frame #9: 0x0000000801123465 libgio-2.0.so.0`___lldb_unnamed_symbol1526$$libgio-2.0.so.0 + 245 frame #10: 0x0000000801332e58 libglib-2.0.so.0`___lldb_unnamed_symbol232$$libglib-2.0.so.0 + 168 frame #11: 0x0000000801331b88 libglib-2.0.so.0`___lldb_unnamed_symbol224$$libglib-2.0.so.0 + 72 frame #12: 0x0000000800543052 libthr.so.3`___lldb_unnamed_symbol1$$libthr.so.3 + 354
IMHO getfsent() is very legacy API, getmntinfo() can do same but threadsafe by design. https://www.freebsd.org/cgi/man.cgi?query=getmntinfo&apropos=0&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports&arch=default&format=html
(In reply to rozhuk.im from comment #7) Use of getfsent is correct here. Glib has two functions, one that returns "mount points" from /etc/fstab using getfsent and another that returns "mounts" using getfsstat (not getmntinfo). If I understand the BUGS section in the getmntinfo manpage correctly it isn't thread safe.
Ugly glib`s gio strikes again... (In reply to Tijl Coosemans from comment #8) Yes, but getfsstat() looks like thread safe. https://www.freebsd.org/cgi/man.cgi?query=getfsstat&sektion=2&apropos=0&manpath=FreeBSD+12.1-RELEASE+and+Ports Calling g_unix_mount_points_get() instead of g_unix_mounts_get() - very strange design for g_file_enumerator_next_file(). g_unix_mounts_get() - uses getfsstat(). g_unix_mount_points_get() - with parsing /etc/fstab looks like some staff for dbus or other software that should deal with mount/unmount only.
I dig inside this. #5 0x000000080a181da9 in g_unix_mount_point_at () at /usr/local/lib/libgio-2.0.so.0 #6 0x000000080a1e0811 in () at /usr/local/lib/libgio-2.0.so.0 - ignore_trash_mount() #7 0x000000080a1e0624 in () at /usr/local/lib/libgio-2.0.so.0 - ignore_trash_path() #8 0x000000080a1e4235 in () at /usr/local/lib/libgio-2.0.so.0 - g_local_file_trash() / _g_local_file_has_trash_dir() #9 0x000000080a1e3d4e in () at /usr/local/lib/libgio-2.0.so.0 - some proxy staff #10 0x000000080a116a88 in g_file_enumerator_next_file () at /usr/local/lib/libgio-2.0.so.0 This code path check is "x-gvfs-notrash" present in mount options. As for me, better to patch this: GList * g_unix_mount_points_get (guint64 *time_read) { if (time_read) *time_read = get_mount_points_timestamp (); return _g_get_unix_mount_points (); } add lock and cache.
Created attachment 218846 [details] add lock and cache I hope this will fix crash and improve speed. Test required, I build and run thunar with it, but it does not always crash so I'm not sure that issue fixed.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1707
fluffy, I think you should commit the patch from comment 3 while we wait for upstream to review the patch from comment 11.
(In reply to Tijl Coosemans from comment #13) I think the same. Temporary patch will be landed in next hours
A commit references this bug: Author: fluffy Date: Mon Oct 19 23:33:29 UTC 2020 New revision: 552776 URL: https://svnweb.freebsd.org/changeset/ports/552776 Log: devel/glib20: lock getfsent() usage to fix some consumers crashes Add temporary fix while more correct solution is cooking in GNOME repo (see details at https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1707) PR: 250311 Submitted by: sigsys@gmail.com Reviewed by: tijl Changes: head/devel/glib20/Makefile head/devel/glib20/files/patch-gio_gunixmounts.c
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1707 https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1717
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1707 is merged
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1717 and https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2783 merged, waiting for next glib release to remove patches.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=943a699e47d7205726f1f77983fef0b5e6c82a56 commit 943a699e47d7205726f1f77983fef0b5e6c82a56 Author: Dima Panov <fluffy@FreeBSD.org> AuthorDate: 2022-07-18 23:25:26 +0000 Commit: Dima Panov <fluffy@FreeBSD.org> CommitDate: 2022-07-18 23:25:26 +0000 devel/glib20: update to 2.72.3 maintenance release (+) While here, incorporate patches for lock getfsent() usage [1] Changelog: https://gitlab.gnome.org/GNOME/glib/-/tags/2.72.3 PR: 250311 [1] With hat: desktop devel/glib20/Makefile | 6 +-- devel/glib20/distinfo | 6 +-- devel/glib20/files/kqueue_fnm.c | 116 +++++++++++++++++++++++++--------------- 3 files changed, 79 insertions(+), 49 deletions(-)
As far as I see latest commit also includes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255707 so both PR can be closed. Thanks!
(In reply to Ivan Rozhuk from comment #20) Ah, indeed, I forgot to mention a second PR