Closed Bug 452754 Opened 16 years ago Closed 15 years ago

Deadlock in jemalloc when using fakeroot

Categories

(Core :: Memory Allocator, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 435683

People

(Reporter: fta+bugzilla, Unassigned)

Details

Since bug 451193 landed, I'm experiencing a deadlock while building firefox on Ubuntu. The build system uses fakeroot, and it's now stuck in a "xulrunner --gre-version" call. It happens to be a deadlock in jemalloc.

fakeroot uses LD_PRELOAD to load libfakeroot.so, which provides wrappers around getuid, chown, chmod, mknod, stat, and so on, creating a fake root environment.

Here is a stack trace:

$ fakeroot gdb /usr/lib/xulrunner-1.9.1a2pre/xulrunner-bin 
GNU gdb 6.8-debian
Copyright (C) 2008 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 "i486-linux-gnu"...
(gdb) r --gre-version
Starting program: /usr/lib/xulrunner-1.9.1a2pre/xulrunner-bin --gre-version
[Thread debugging using libthread_db enabled]
^C[New Thread 0xb62c2930 (LWP 16068)]

Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb62c2930 (LWP 16068)]
0xb808e424 in __kernel_vsyscall ()
(gdb) bt
#0  0xb808e424 in __kernel_vsyscall ()
#1  0xb8066cf9 in __lll_lock_wait () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb8062144 in _L_lock_936 () from /lib/tls/i686/cmov/libpthread.so.0
#3  0xb806206e in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0
#4  0x08054b56 in malloc_init_hard () at jemalloc.c:1393
#5  0x0805693d in calloc (num=1, size=20) at jemalloc.c:5355
#6  0xb7350086 in ?? () from /lib/tls/i686/cmov/libdl.so.2
#7  0xb734fd43 in dlsym () from /lib/tls/i686/cmov/libdl.so.2
#8  0xb8087999 in load_library_symbols () from /usr/lib/libfakeroot/libfakeroot-sysv.so
#9  0xb80883a7 in tmp___lxstat64 () from /usr/lib/libfakeroot/libfakeroot-sysv.so
#10 0xb8086db7 in unlink () from /usr/lib/libfakeroot/libfakeroot-sysv.so
#11 0x08052a1b in pagefile_init (size=1048576) at jemalloc.c:2418
#12 0x08052c77 in base_alloc (size=<value optimized out>) at jemalloc.c:1754
#13 0x08054f64 in malloc_init_hard () at jemalloc.c:5838
#14 0x0805749d in malloc (size=352) at jemalloc.c:5355
#15 0xb67b497f in ?? () from /lib/tls/i686/cmov/libc.so.6
#16 0xb67b726c in fopen64 () from /lib/tls/i686/cmov/libc.so.6
#17 0xb63df274 in ?? () from /lib/libselinux.so.1
#18 0xb63e132d in ?? () from /lib/libselinux.so.1
#19 0xb63d0b5c in _init () from /lib/libselinux.so.1
#20 0xb809cab4 in ?? () from /lib/ld-linux.so.2
#21 0xb809cbe4 in ?? () from /lib/ld-linux.so.2
#22 0xb808f82f in ?? () from /lib/ld-linux.so.2
(gdb) bt f
#0  0xb808e424 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb8066cf9 in __lll_lock_wait () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#2  0xb8062144 in _L_lock_936 () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#3  0xb806206e in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#4  0x08054b56 in malloc_init_hard () at jemalloc.c:1393
        i = <value optimized out>
        buf = '\0' <repeats 1025 times>, "�_��\214k,�LY�030�t�\214k,�����237\n�h]��1\006\000\000��i\t�\214k,��E\213�", '\0' <repeats 20 times>, "\214k,�", '\0' <repeats 20 times>, " �\n�\000\000\000\000\000\000\000\000H\r/�\000\000\000\000\000\000\000\000�E\213�����030�t�������237\n�h]��1\006\000\000T\\�i\t����E\213�", '\0' <repeats 20 times>, "��", '\0' <repeats 20 times>, " �\n�\000\000\000\000\000\000\000\000@\t"...
        opts = <value optimized out>
        result = <value optimized out>
        linklen = <value optimized out>
#5  0x0805693d in calloc (num=1, size=20) at jemalloc.c:5355
        ret = <value optimized out>
        num_size = <value optimized out>
#6  0xb7350086 in ?? () from /lib/tls/i686/cmov/libdl.so.2
No symbol table info available.
#7  0xb734fd43 in dlsym () from /lib/tls/i686/cmov/libdl.so.2
No symbol table info available.
#8  0xb8087999 in load_library_symbols () from /usr/lib/libfakeroot/libfakeroot-sysv.so
No symbol table info available.
#9  0xb80883a7 in tmp___lxstat64 () from /usr/lib/libfakeroot/libfakeroot-sysv.so
No symbol table info available.
#10 0xb8086db7 in unlink () from /usr/lib/libfakeroot/libfakeroot-sysv.so
No symbol table info available.
#11 0x08052a1b in pagefile_init (size=1048576) at jemalloc.c:2418
        ret = 3
        i = <value optimized out>
        pagefile_path = "/tmp/jemalloc.3QGnQn\000\000\000\000�E\213��237\n�\224\210��\t�\200g�\237\n�\003\000\000\000\002\000\000\000\bg꿥7\n�\b\000\000\000\f\000\000\000�b/��210�233�\t��b/��b/�\f\000\000\000p�\t�@P��h]��\000\000\000\000\000\000\000\000\214i��\n��\210꿰\210꿬\210�6\n�\000\000\000\000�E\213�\000\000\000\000\000\000\000\000�237\n�\224\210�\237\n�\004\000\000\000\003\000\000\000\200g꿥7\n�\b\000\000\000\020\000\000\000�b/��210�...
        zbuf = "�t�\001\000\000\000xq>�pu�2305붰jԶPeԶ\000hԶxq>�h]��", '\0' <repeats 24 times>, "h�005�\020ii\r<w�|\t���005��\224\004\b\r\000\000\000\230�b�HS,�\002\000�030�t�\t\215\004\b��b��237\n�\034R,�\002\000\000\000�w�\200\t�\233�\t�\020]��hS,�\002\000�030�t�|k\n�\204w�\237\n��203�\b\020�b�\036\234E\000D\000\000\0008�\005�(�\005��5�\210=5�\000\000\000\000\000\000\000\000\001\000\000\000C\001"...
#12 0x08052c77 in base_alloc (size=<value optimized out>) at jemalloc.c:1754
        ret = <value optimized out>
        csize = 64
#13 0x08054f64 in malloc_init_hard () at jemalloc.c:5838
        i = 3
        buf = "\000�\210�\237\n�\005\000\000\000\004\000\000\000�꿥7\n�\b\000\000\000\024\000\000\000\210�C��210�233�\t���C�\210�C�\024\000\000\000�237\n�\224\210�\210�001\000\000\000\000�C�\000y�, '\0' <repeats 16 times>, "p�\t��5�\210=5�\000�C�h]��\000\000\000\000\000\000\000\000�\210꿰\210꿬\210�6\n�\031\000\000\000\b\000\000\000\000\000\000\000�0\022e�237\n�\224\210�\237\n�\002\000\000\000\001\000\000\000`z꿥7\n�\b\000\000\000\b\000\000\000�D��210�233�\t��...
        opts = 0xbfea799b ""
        result = <value optimized out>
        linklen = <value optimized out>
#14 0x0805749d in malloc (size=352) at jemalloc.c:5355
        ret = <value optimized out>
#15 0xb67b497f in ?? () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#16 0xb67b726c in fopen64 () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#17 0xb63df274 in ?? () from /lib/libselinux.so.1
No symbol table info available.
#18 0xb63e132d in ?? () from /lib/libselinux.so.1
No symbol table info available.
#19 0xb63d0b5c in _init () from /lib/libselinux.so.1
No symbol table info available.
#20 0xb809cab4 in ?? () from /lib/ld-linux.so.2
No symbol table info available.
#21 0xb809cbe4 in ?? () from /lib/ld-linux.so.2
No symbol table info available.
#22 0xb808f82f in ?? () from /lib/ld-linux.so.2
No symbol table info available.
(gdb)
I worked around this by setting MALLOC_OPTIONS=O in the build script.
This bug is a duplicate of Bug 435683.
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.