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