pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Sylpheed crashing



On Tue, 10 Jan 2017 06:36:13 +0100 Martin Husemann <martin%duskware.de@localhost>
wrote:
> On Mon, Jan 09, 2017 at 09:41:41PM -0500, Ian D. Leroux wrote:
> > - Is there a standard procedure for rebuilding the base system
> > dynamic libraries (like libc and libmapper_zone) with debug symbols?
> 
> Add -V MKDEBUG=yes to your build.sh command line. There also is
> MKDEBUGLIB=yes, but for shared libs that should not be needed.

With debug symbols in the base system libraries, I've finally got a
potentially useful backtrace.  Immediately before the stack gets
trashed, the main thread is in dlclose().  The full stack is 115 frames
deep, of which the top few frames are as follows:

Thread 1 (LWP 1):
#0  0x000070b395800c80 in _fini () from /usr/lib/i18n/libmapper_zone.so.5.0
No symbol table info available.
#1  0x00007f7ff7c05df8 in _rtld_call_function_void (obj=<optimized out>, addr=123916609653888) at /build/src/libexec/ld.elf_so/rtld.h:491
No locals.
#2  _rtld_call_initfini_function (obj=<optimized out>, mask=0x75235a69aab0, func=<optimized out>) at /build/src/libexec/ld.elf_so/rtld.c:142
No locals.
#3  _rtld_call_fini_function (cur_objgen=<optimized out>, mask=<optimized out>, obj=<optimized out>) at /build/src/libexec/ld.elf_so/rtld.c:157
        mask = <optimized out>
        obj = <optimized out>
#4  _rtld_call_fini_functions (force=<optimized out>, mask=<optimized out>) at /build/src/libexec/ld.elf_so/rtld.c:203
        obj = <optimized out>
        elm = 0x70b3a6e07cc0
        finilist = {sqh_first = 0x70b3a6dfc420, sqh_last = 0x70b3a6dfc2c0}
        cur_objgen = <optimized out>
#5  _rtld_unload_object (mask=mask@entry=0x75235a69aab0, root=root@entry=0x70b3a6dfe400, do_fini_funcs=do_fini_funcs@entry=true)
    at /build/src/libexec/ld.elf_so/rtld.c:863
        obj = <optimized out>
        linkp = <optimized out>
        elm = <optimized out>
#6  0x00007f7ff7c06319 in _rtld_unload_object (do_fini_funcs=true, root=0x70b3a6dfe400, mask=0x75235a69aab0) at /build/src/libexec/ld.elf_so/rtld.c:856
No locals.
#7  dlclose (handle=<optimized out>) at /build/src/libexec/ld.elf_so/rtld.c:957
        mask = {__bits = {0, 0, 0, 0}}
#8  0x000070b39a10a1d3 in _citrus_unload_module (handle=<optimized out>) at /build/src/lib/libc/citrus/citrus_module.c:344
No locals.
#9  0x000070b39a0a3fb6 in mapper_close (cm=0x70b3a33a1400) at /build/src/lib/libc/citrus/citrus_mapper.c:197
No locals.
#10 0x000070b39a0a42b8 in _citrus_mapper_close (cm=<optimized out>) at /build/src/lib/libc/citrus/citrus_mapper.c:389
        cm = <optimized out>
#11 0x000070b398400a91 in close_dsts (dl=dl@entry=0x70b3a33a00e8) at /build/src/lib/libc/citrus/modules/citrus_iconv_std.c:200
        sd = 0x70b3a33a0100
#12 0x000070b398400ae2 in close_srcs (sl=sl@entry=0x70b3a1b84ba0) at /build/src/lib/libc/citrus/modules/citrus_iconv_std.c:257
        ss = 0x70b3a33a00d0
#13 0x000070b398400b30 in _citrus_iconv_std_iconv_uninit_shared (ci=<optimized out>) at /build/src/lib/libc/citrus/modules/citrus_iconv_std.c:412
        is = 0x70b3a1b84b90
#14 0x000070b39a0708b0 in close_shared (ci=0x70b3a2315920) at /build/src/lib/libc/citrus/citrus_iconv.c:145
No locals.
#15 release_shared (ci=0x70b3a2315920) at /build/src/lib/libc/citrus/citrus_iconv.c:318
        __func__ = "release_shared"
#16 0x000070b39a070f80 in _citrus_iconv_close (cv=0x70b3a070b1b0) at /build/src/lib/libc/citrus/citrus_iconv.c:390
No locals.
#17 0x000070b39a05c19f in _iconv_close (handle=<optimized out>) at /build/src/lib/libc/iconv/iconv.c:81
No locals.

If I single-step execution from there, the stack turns into:

#0  0x000070b395cc50f3 in ?? ()
No symbol table info available.
#1  0x000070b395800675 in ?? () from /usr/lib/i18n/libmapper_zone.so.5.0
No symbol table info available.
#2  0x000070b3a6e07cc0 in ?? ()
No symbol table info available.
#3  0x000070b395800c89 in _fini () from /usr/lib/i18n/libmapper_zone.so.5.0
No symbol table info available.
#4  0x0000000000000000 in ?? ()
No symbol table info available.

There are a couple of other worker threads, both parked immediately
before the crash:

Thread 6 (LWP 97):
#0  0x000070b39a0a54da in ___lwp_park60 () from /usr/lib/libc.so.12
No symbol table info available.
#1  0x000070b39a409883 in pthread_cond_timedwait (cond=0x70b3a651b9d0, mutex=0x70b3a651b9a0, abstime=0x70b396bffe90)
    at /build/src/lib/libpthread/pthread_cond.c:169
        retval = <optimized out>
        __func__ = "pthread_cond_timedwait"
#2  0x000070b39b0aa474 in g_cond_wait_until (cond=0x70b3a651c888, mutex=0x70b3a651c880, end_time=85781431728) at gthread-posix.c:902
        ts = {tv_sec = 85781, tv_nsec = 431728000}
        status = 28851
#3  0x000070b39b01eb9e in g_async_queue_pop_intern_unlocked (queue=0x70b3a651c880, wait=1, end_time=85781431728) at gasyncqueue.c:422
        retval = 0xa651ce00
        __func__ = "g_async_queue_pop_intern_unlocked"
#4  0x000070b39b01eddb in g_async_queue_timeout_pop (queue=0x70b3a651c880, timeout=15000000) at gasyncqueue.c:543
        end_time = 85781431728
        retval = 0xa6543440
#5  0x000070b39b0840bc in g_thread_pool_wait_for_new_pool () at gthreadpool.c:167
        pool = 0x70b3a651ce00
        local_wakeup_thread_serial = 28851
        local_max_unused_threads = 2
        local_max_idle_time = 15000
        last_wakeup_thread_serial = 0
        have_relayed_thread_marker = 0
#6  0x000070b39b084379 in g_thread_pool_thread_proxy (data=0x70b3a6543260) at gthreadpool.c:364
        free_pool = 0
        task = 0x0
        pool = 0x70b3a6543440
#7  0x000070b39b083cb2 in g_thread_proxy (data=0x70b3a59d9f20) at gthread.c:784
        thread = 0x70b3a59d9f20
        __func__ = "g_thread_proxy"
#8  0x000070b39a40b1c1 in pthread__create_tramp (cookie=0x70b3a3f2e000) at /build/src/lib/libpthread/pthread.c:576
        self = 0x70b3a3f2e000
        retval = <optimized out>
#9  0x000070b39a088e10 in ?? () from /usr/lib/libc.so.12
No symbol table info available.
#10 0x00010102464c457f in ?? ()
No symbol table info available.
#11 0x0000000000000000 in ?? ()
No symbol table info available.

I find it odd that the outermost stack frame is the null pointer, but
then I know next to nothing about pthread.

Does anyone have a clue where to go from here?

--
IDL


Home | Main Index | Thread Index | Old Index