tech-pkg archive

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

Re: vlc-2.2.1 crash in module loader



   Date: Sat, 4 Jul 2015 16:00:26 +0200
   From: "Ian D. Leroux" <idleroux%fastmail.fm@localhost>

   Program terminated with signal SIGSEGV, Segmentation fault.
   #0  0x00007f7fcb8eab31 in ?? ()
   (gdb) bt
   #0  0x00007f7fcb8eab31 in ?? ()
   #1  0x00007f7ff5ce8c59 in __cxa_finalize () from /usr/lib/libc.so.12

   That looks vaguely like a bad destructor or finalizer, but I'm not sure
   how to proceed further.  I have three questions at this stage:
   1- Does anyone with more C++ experience have any energy to help debug
       this?
   2- In particular, any hints about getting a more informative
       backtrace?  I'm clearly doing something wrong.  Note that file
       indicates that the vlc binary is not stripped.

This usually suggests that someone tried to use atexit in a shared
library, which doesn't work because the shared library may be unloaded
by the time the process tries to call the atexit handlers.

The usual fix is to use __attribute__((__destructor__)) instead.  See,
e.g., graphics/MesaLib/patches/patch-src_glsl_ralloc.c.  If you're not
sure which atexit handler, you could run it in a debugger, set a
breakpoint on atexit, and check the stack trace.

If that doesn't work, you might install the debug.tgz set (or rebuild
libc with DBG=-g if you're on pre-7) to get debugging symbols for
libc.  Last time I attacked an issue like this (which turned out to be
an atexit abuse) I used lots of debugging printfs in rtld.


Home | Main Index | Thread Index | Old Index