Skip to content

Thunar randomly freezes when I open a folder with > 11000 files

I have a folder that recently grew to have more than 10000 files on my PC. Sometimes, Thunar will freeze while I'm working in this folder or while I have it open in the background.

I use Thunar 1.8.14 on Ubuntu 20.04 LTS (XFCE 4.14).

I'm unable to debug the code as Ubuntu 20.04 LTS doesn't seem to have any debug symbols packages for Thunar. Still, maybe someone may get an idea of the problem from my GDB output.

ax@ThinkStation-E32:~$ sudo gdb
[sudo] password for ax: 
GNU gdb (Ubuntu 9.1-0ubuntu1) 9.1
Copyright (C) 2020 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-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".
warning: File "/home/ax/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
	add-auto-load-safe-path /home/ax/.gdbinit
line to your configuration file "/root/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
(gdb) attach 3724
Attaching to process 3724
[New LWP 3745]
[New LWP 3746]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38	../sysdeps/unix/sysv/linux/x86_64/syscall.S: No such file or directory.
(gdb) info all-registers
rax            0xfffffffffffffe00  -512
rbx            0x7f4a8d31ec50      139958173166672
rcx            0x7f4a9e23870d      139958457435917
rdx            0x2                 2
rsi            0x80                128
rdi            0x7f4a8d31ec50      139958173166672
rbp            0x2                 0x2
rsp            0x7ffe47185d68      0x7ffe47185d68
r8             0x7f4a9e3bb7dc      139958459021276
r9             0x55aecc25db60      94209237703520
r10            0x0                 0
r11            0x246               582
r12            0x7f4a8d31ec20      139958173166624
r13            0x7f4a8d31ec50      139958173166672
r14            0x7ffe47185ec0      140730091200192
r15            0x55aecc409550      94209239455056
rip            0x7f4a9e23870d      0x7f4a9e23870d <syscall+29>
eflags         0x246               [ PF ZF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
st0            0                   (raw 0x00000000000000000000)
--Type <RET> for more, q to quit, c to continue without paging--
st1            0                   (raw 0x00000000000000000000)
st2            0                   (raw 0x00000000000000000000)
st3            0                   (raw 0x00000000000000000000)
st4            0                   (raw 0x00000000000000000000)
st5            0                   (raw 0x00000000000000000000)
st6            0                   (raw 0x00000000000000000000)
st7            0                   (raw 0x00000000000000000000)
fctrl          0x37f               895
fstat          0x0                 0
ftag           0xffff              65535
fiseg          0x0                 0
fioff          0x0                 0
foseg          0x0                 0
fooff          0x0                 0
fop            0x0                 0
mxcsr          0x1fa4              [ ZE PE IM DM ZM OM UM PM ]
ymm0           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm1           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm2           {v8_float = {0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x7fffffffffffffff, 0x0, 0x0}, v32_int8 = {0x0 <repeats 12 times>, 0xff, 0xff, 0xff, 0xff, 0x0 <repeats 16 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0xffffffff00000000, 0x0, 0x0}, v2_int128 = {0xffffffff000000000000000000000000, 0x0}}
ymm3           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0xf0, 0x8b, 0x30, 0x9e, 0x4a, 0x7f, 0x0 <repeats 26 times>}, v16_int16 = {0x8bf0, 0x9e30, 0x7f4a, 0x0 <repeats 13 times>}, v8_int32 = {0x9e308bf0, 0x7f4a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x7f4a9e308bf0, 0x0, 0x0, 0x0}, v2_int128 = {0x7f4a9e308bf0, 0x0}}
ymm4           {v8_float = {0x0, 0x0, 0xfc80a800, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0--Type <RET> for more, q to quit, c to continue without paging--
}, v32_int8 = {0xb4, 0x0, 0x0, 0x0, 0xae, 0x55, 0x0, 0x0, 0x0, 0xd6, 0x5f, 0xcc, 0xae, 0x55, 0x0 <repeats 18 times>}, v16_int16 = {0xb4, 0x0, 0x55ae, 0x0, 0xd600, 0xcc5f, 0x55ae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0xb4, 0x55ae, 0xcc5fd600, 0x55ae, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x55ae000000b4, 0x55aecc5fd600, 0x0, 0x0}, v2_int128 = {0x55aecc5fd600000055ae000000b4, 0x0}}
ymm5           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0xe0, 0x8b, 0x30, 0x9e, 0x4a, 0x7f, 0x0 <repeats 26 times>}, v16_int16 = {0x8be0, 0x9e30, 0x7f4a, 0x0 <repeats 13 times>}, v8_int32 = {0x9e308be0, 0x7f4a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x7f4a9e308be0, 0x0, 0x0, 0x0}, v2_int128 = {0x7f4a9e308be0, 0x0}}
ymm6           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0xa5, 0x0, 0x0, 0x0, 0xae, 0x55, 0x0 <repeats 26 times>}, v16_int16 = {0xa5, 0x0, 0x55ae, 0x0 <repeats 13 times>}, v8_int32 = {0xa5, 0x55ae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x55ae000000a5, 0x0, 0x0, 0x0}, v2_int128 = {0x55ae000000a5, 0x0}}
ymm7           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm8           {v8_float = {0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x7fffffffffffffff, 0x0, 0x0, 0x0}, v32_int8 = {0x47, 0x4c, 0x69, 0x62, 0x2d, 0x47, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x0 <repeats 20 times>}, v16_int16 = {0x4c47, 0x6269, 0x472d, 0x624f, 0x656a, 0x7463, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x62694c47, 0x624f472d, 0x7463656a, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x624f472d62694c47, 0x7463656a, 0x0, 0x0}, v2_int128 = {0x7463656a624f472d62694c47, 0x0}}
ymm9           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm10          {v8_float = {0xfffa5e36, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x58, 0x39, 0xb4, 0xc8, 0x76, 0xbe, 0xdf, 0x3f, 0x0 <repeats 24 times>}, v16_int16 = {0x3958, 0xc8b4, 0xbe76, 0x3fdf, 0x0 <repeats 12 times>}, v8_int32 = {0xc8b43958, 0x3fdfbe76, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x3fdfbe76c8b43958, 0x0, 0x0, 0x0}, v2_int128 = {0x3fdfbe76c8b43958, 0x0}}
ymm11          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm12          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_--Type <RET> for more, q to quit, c to continue without paging--
int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm13          {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x0, 0x0}}
ymm14          {v8_float = {0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x1, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0 <repeats 24 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x3ff0, 0x0 <repeats 12 times>}, v8_int32 = {0x0, 0x3ff00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x3ff0000000000000, 0x0, 0x0, 0x0}, v2_int128 = {0x3ff0000000000000, 0x0}}
ymm15          {v8_float = {0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x1, 0x0, 0x0, 0x0}, v32_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3f, 0x0 <repeats 24 times>}, v16_int16 = {0x0, 0x0, 0x0, 0x3ff0, 0x0 <repeats 12 times>}, v8_int32 = {0x0, 0x3ff00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x3ff0000000000000, 0x0, 0x0, 0x0}, v2_int128 = {0x3ff0000000000000, 0x0}}
(gdb) 
(gdb) disas
Dump of assembler code for function syscall:
   0x00007f4a9e2386f0 <+0>:	endbr64 
   0x00007f4a9e2386f4 <+4>:	mov    %rdi,%rax
   0x00007f4a9e2386f7 <+7>:	mov    %rsi,%rdi
   0x00007f4a9e2386fa <+10>:	mov    %rdx,%rsi
   0x00007f4a9e2386fd <+13>:	mov    %rcx,%rdx
   0x00007f4a9e238700 <+16>:	mov    %r8,%r10
   0x00007f4a9e238703 <+19>:	mov    %r9,%r8
   0x00007f4a9e238706 <+22>:	mov    0x8(%rsp),%r9
   0x00007f4a9e23870b <+27>:	syscall 
=> 0x00007f4a9e23870d <+29>:	cmp    $0xfffffffffffff001,%rax
   0x00007f4a9e238713 <+35>:	jae    0x7f4a9e238716 <syscall+38>
   0x00007f4a9e238715 <+37>:	retq   
   0x00007f4a9e238716 <+38>:	mov    0xcf753(%rip),%rcx        # 0x7f4a9e307e70
   0x00007f4a9e23871d <+45>:	neg    %eax
   0x00007f4a9e23871f <+47>:	mov    %eax,%fs:(%rcx)
   0x00007f4a9e238722 <+50>:	or     $0xffffffffffffffff,%rax
   0x00007f4a9e238726 <+54>:	retq   
End of assembler dump.
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f4a9e3af8bc in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x000055aecaa75329 in  ()
#3  0x00007f4a9e54ef49 in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#4  0x00007f4a9e54fb3d in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#5  0x00007f4a9e5b52fb in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#6  0x00007f4a9e54ef49 in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#7  0x00007f4a9e54fb3d in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#8  0x00007f4a9e5aa31f in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#9  0x00007f4a9e54ef49 in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#10 0x00007f4a9e54ef8d in  () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#11 0x00007f4a9e362e8e in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007f4a9e363240 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007f4a9e3632e3 in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007f4a9e57cfd5 in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#15 0x000055aecaa10471 in  ()
#16 0x00007f4a9e1440b3 in __libc_start_main (main=0x55aecaa103c0, argc=2, argv=0x7ffe471861c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe471861b8)
    at ../csu/libc-start.c:308
#17 0x000055aecaa105ae in  ()
(gdb) continue
Continuing.
^C
Thread 1 "Thunar" received signal SIGINT, Interrupt.
syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38	in ../sysdeps/unix/sysv/linux/x86_64/syscall.S
(gdb) disas
Dump of assembler code for function syscall:
   0x00007f4a9e2386f0 <+0>:	endbr64 
   0x00007f4a9e2386f4 <+4>:	mov    %rdi,%rax
   0x00007f4a9e2386f7 <+7>:	mov    %rsi,%rdi
   0x00007f4a9e2386fa <+10>:	mov    %rdx,%rsi
   0x00007f4a9e2386fd <+13>:	mov    %rcx,%rdx
   0x00007f4a9e238700 <+16>:	mov    %r8,%r10
   0x00007f4a9e238703 <+19>:	mov    %r9,%r8
   0x00007f4a9e238706 <+22>:	mov    0x8(%rsp),%r9
   0x00007f4a9e23870b <+27>:	syscall 
=> 0x00007f4a9e23870d <+29>:	cmp    $0xfffffffffffff001,%rax
   0x00007f4a9e238713 <+35>:	jae    0x7f4a9e238716 <syscall+38>
   0x00007f4a9e238715 <+37>:	retq   
   0x00007f4a9e238716 <+38>:	mov    0xcf753(%rip),%rcx        # 0x7f4a9e307e70
   0x00007f4a9e23871d <+45>:	neg    %eax
   0x00007f4a9e23871f <+47>:	mov    %eax,%fs:(%rcx)
   0x00007f4a9e238722 <+50>:	or     $0xffffffffffffffff,%rax
   0x00007f4a9e238726 <+54>:	retq   
End of assembler dump.
(gdb) info registers
rax            0xfffffffffffffe00  -512
rbx            0x7f4a8d31ec50      139958173166672
rcx            0x7f4a9e23870d      139958457435917
rdx            0x2                 2
rsi            0x80                128
rdi            0x7f4a8d31ec50      139958173166672
rbp            0x2                 0x2
rsp            0x7ffe47185d68      0x7ffe47185d68
r8             0x7f4a9e3bb7dc      139958459021276
r9             0x55aecc25db60      94209237703520
r10            0x0                 0
r11            0x246               582
r12            0x7f4a8d31ec20      139958173166624
r13            0x7f4a8d31ec50      139958173166672
r14            0x7ffe47185ec0      140730091200192
r15            0x55aecc409550      94209239455056
rip            0x7f4a9e23870d      0x7f4a9e23870d <syscall+29>
eflags         0x246               [ PF ZF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38