[vlc-devel] [PATCH] In SigThread, handle sigwait() failures gracefully.

Fabian Keil freebsd-listen at fabiankeil.de
Fri Jul 10 22:50:33 CEST 2009


Fabian Keil <freebsd-listen at fabiankeil.de> wrote:

> I haven't been able to properly test the patch with
> http://people.videolan.org/~jb/1.0.0/vlc-1.0.0.tar.bz2
> as it regularly segfaults on FreeBSD 8.0. I'll get back
> to you on this later.

The segfaults still appeared with the final release when
closing vlc and, more annoyingly, while watching DVDs,
right after vlc complained about having caught an
"Unknown signal: 0 signal":

[0x8060562f8] main input error: ES_OUT_RESET_PCR called
[0x8060562f8] main input error: ES_OUT_RESET_PCR called
[0x8060562f8] main input error: ES_OUT_RESET_PCR called
[0x8060562f8] main input error: ES_OUT_RESET_PCR called
[0x8060562f8] main input error: ES_OUT_RESET_PCR called
[0x8060562f8] main input error: ES_OUT_RESET_PCR called
[0x801490b78] signals interface error: Caught Unknown signal: 0 signal, exiting...
QPainter::begin: Paint device returned engine == 0, type: 1
Segmentation fault: 11 (core dumped)

The backtrace:
#0  0x0000000804314704 in QThreadData::get2 () from /usr/local/lib/qt4/libQtCore.so.4
#1  0x00000008043e291d in __tcf_2 () from /usr/local/lib/qt4/libQtCore.so.4
#2  0x000000080118fa56 in __cxa_finalize () from /lib/libc.so.7
#3  0x0000000804308cd3 in __do_global_dtors_aux () from /usr/local/lib/qt4/libQtCore.so.4
#4  0x0000000804423411 in _fini () from /usr/local/lib/qt4/libQtCore.so.4
#5  0x00000008005486e0 in ?? ()
#6  0x0000000800508c11 in dlsym () from /libexec/ld-elf.so.1
#7  0x0000000800508d47 in dlclose () from /libexec/ld-elf.so.1
#8  0x00000008007ea731 in DeleteModule (p_bank=0x801318070, p_module=0x801467900) at modules/modules.c:1399
#9  0x00000008007ebad4 in module_EndBank (p_this=0x8013251f8, b_plugins=true) at modules/modules.c:200
#10 0x0000000800787a96 in libvlc_InternalCleanup (p_libvlc=0x8013251f8) at libvlc.c:1100
#11 0x00000008006506c9 in libvlc_release (p_instance=0x801319140) at control/core.c:179
#12 0x000000000040108d in main (i_argc=2, ppsz_argv=Variable "ppsz_argv" is not available.

This is with qt 4.4.3 on FreeBSD 8.0 amd64.

Fortunately upgrading to qt 4.5.2 seems to have fixed the
segfaults, but vlc would still regularly exit with the
"Unknown signal" message.

I could somewhat reliably reproduce this with "The Surge",
but a lot less reliably with Louis&Clark episodes. I didn't
try other DVDs.

The problem seems to be caused by vlc expecting a reasonable
signal value in signum, even if sigwait() failed. The attached
patch fixes the problem for me.

Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-In-SigThread-handle-sigwait-failures-gracefully.patch
Type: text/x-patch
Size: 1362 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20090710/703ba5a3/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20090710/703ba5a3/attachment.sig>


More information about the vlc-devel mailing list