Bug: Firefox 78.15.0esr (64-bit) hangs, apparently in libpthread via libxul
Status: RESOLVED
Priority: --
Resolution: WORKSFORME
Created: 2021-10-09 12:43:48+00:00
Resolved: 2021-12-31 08:42:04+00:00

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0

Steps to reproduce:

Use it, or just leave it running for a few minutes


Actual results:

Browser hangs, pegs a cpu, doesn't even repaint its windows.

attaching gdb and asking for stack (bt)

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
--Type <RET> for more, q to quit, c to continue without paging--
0x00007f3bccfbf716 in ?? () from /usr/lib/firefox-esr/libxul.so
(gdb) bt
#0  0x00007f3bccfbf716 in  () at /usr/lib/firefox-esr/libxul.so
#1  0x00007f3bccf8c033 in  () at /usr/lib/firefox-esr/libxul.so
#2  0x00007f3bccf8c70e in  () at /usr/lib/firefox-esr/libxul.so
#3  0x00007f3bcd055b5e in  () at /usr/lib/firefox-esr/libxul.so
#4  0x00007f3bcd056481 in  () at /usr/lib/firefox-esr/libxul.so
#5  0x00007f3bcd056714 in  () at /usr/lib/firefox-esr/libxul.so
#6  0x00007f3bca7aff7b in  () at /usr/lib/firefox-esr/libxul.so
#7  0x00007f3bca7b0051 in  () at /usr/lib/firefox-esr/libxul.so
#8  0x00007f3bcbaa5feb in  () at /usr/lib/firefox-esr/libxul.so
#9  0x00007f3bcadf711c in  () at /usr/lib/firefox-esr/libxul.so
#10 0x00007f3bcb0fd0f5 in  () at /usr/lib/firefox-esr/libxul.so
#11 0x000027a53987d282 in  ()
#12 0x000027a5395ee693 in  ()
#13 0x00007ffc219ae1d0 in  ()
#14 0x0000000000000000 in  ()

ltrace on the cpu-pegging process reports (excerpt)

<... memset resumed> )                                                           = 0x7851fb80
<... pthread_mutex_unlock resumed> )                                             = 0
pthread_mutex_unlock(0xd3800018, 0x7f5008c0, 0, 0xffffffff <unfinished ...>
pthread_mutex_lock(0xbff49b80, 0xbf7918a0, 3, 0x2972 <unfinished ...>
<... pthread_mutex_lock resumed> )                                               = 0
<... pthread_mutex_lock resumed> )                                               = 0
pthread_mutex_unlock(0xbff49b80, 0xbf7918a0, 1, 0x2972 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
<... pthread_mutex_lock resumed> )                                               = 0
pthread_mutex_unlock(0xba3e8078, 0xc7ffe8b0, 0xc9c00be0, 256 <unfinished ...>
pthread_mutex_lock(0xd3800018, 129, 1, 0xd3e08f09 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
pthread_mutex_unlock(0xd3800018, 0, 0x40000, 14 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
pthread_mutex_lock(0x9f150820, 1, 1, 0x2972 <unfinished ...>
pthread_mutex_lock(0xc2c82f90, 0xc7ffe900, 3, 0 <unfinished ...>
<... pthread_mutex_lock resumed> )                                               = 0
<... pthread_mutex_lock resumed> )                                               = 0
memset(0x78325c80, '\345', 208 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
<... pthread_mutex_lock resumed> )                                               = 0
pthread_mutex_unlock(0x9f150820, 1, 1, 0x2972 <unfinished ...>
<... memset resumed> )                                                           = 0x78325c80
pthread_mutex_lock(0xc2c82590, 0xbf7d2a00, 3, 0 <unfinished ...>
pthread_cond_signal(0xc2c82fc0, 3, 0, 0x7840c680 <unfinished ...>
pthread_mutex_unlock(0xd3800018, 15, 4, 0x3c08001 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
<... pthread_mutex_lock resumed> )                                               = 0
<... pthread_cond_signal resumed> )                                              = 0
pthread_mutex_lock(0xbff49b80, 0xbf791728, 0xbf7918a0, 0xbf791720 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
pthread_cond_signal(0xc2c825c0, 6, 0, 0x7f5fda80 <unfinished ...>
pthread_mutex_unlock(0xc2c82f90, 0, 0, 0x7840c680 <unfinished ...>
pthread_mutex_lock(0xc03d3078, 0, 1, 0 <unfinished ...>
<... pthread_mutex_lock resumed> )                                               = 0
clock_gettime(1, 0xc3d6ea40, 1, 160 <unfinished ...>
<... pthread_cond_signal resumed> )                                              = 0
<... pthread_mutex_unlock resumed> )                                             = 0
<... pthread_mutex_lock resumed> )                                               = 0
pthread_mutex_unlock(0xbff49b80, 0xbf791728, 1, 0xbf791720 <unfinished ...>
pthread_mutex_lock(0xd3758868, 0xc03d3040, 1, 0 <unfinished ...>
pthread_mutex_unlock(0xc2c82590, 0, 0, 0x7f5fda80 <unfinished ...>
<... clock_gettime resumed> )                                                    = 0
pthread_mutex_unlock(0xa98d9660, 1000, 0x78326648, 0x7840c680 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
<... pthread_mutex_unlock resumed> )                                             = 0
pthread_mutex_lock(0xd3800018, 18, 19, 19 <unfinished ...>
<... pthread_mutex_unlock resumed> )                                             = 0
pthread_mutex_lock(0xbff49b80, 3, 0x4d71170e, 0x517efddc <unfinished ...>
pthread_mutex_unlock(0xb65ae898, 1000, 3, 0x7f5fda80 <unfinished ...>
<... pthread_mutex_lock resumed> )                                               = 0
pthread_mutex_lock(0xd3800018, 32, 2, 32 <unfinished ...>
<... pthread_mutex_lock resumed> )                                               = 0
<... pthread_mutex_unlock resumed> )                                             = 0
memset(0x780de080, '\345', 16 <unfinished ...>
pthread_mutex_unlock(0xbff49b80, 3, 1, 0x517efddc <unfinished ...>
pthread_mutex_lock(0xb65ae900, 0x7aa85af0, 3, 0x7f5fda80 <unfinished ...>
<... memset resumed> )                                                           = 0x780de080
<... pthread_mutex_unlock resumed> )                                             = 0
<... pthread_mutex_lock resumed> )                                               = 0



Expected results:

Normal operations