Date: Fri, 13 Jul 2007 03:00:18 GMT From: Gary Palmer <gpalmer@freebsd.org> To: freebsd-multimedia@FreeBSD.org Subject: Re: ports/113922: multimedia/ffmpeg segfaults on start Message-ID: <200707130300.l6D30IbC060392@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/113922; it has been noted by GNATS. From: Gary Palmer <gpalmer@freebsd.org> To: bug-followup@FreeBSD.org Cc: Subject: Re: ports/113922: multimedia/ffmpeg segfaults on start Date: Fri, 13 Jul 2007 03:40:02 +0100 I also experienced the crash. I tracked it down to ffmpeg source code. Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x8480000 (LWP 100306)] 0x48852af7 in __vfprintf () from /lib/libc.so.6 (gdb) bt #0 0x48852af7 in __vfprintf () from /lib/libc.so.6 #1 0x488536f1 in vfprintf () from /lib/libc.so.6 #2 0x0805fd7d in log_callback_help (ptr=0x0, level=1, fmt=0x837b39c "T²7\b", vl=0x82c4b7e "\203Ä\030[Ã\220S\203ì\b\215D$\034Pÿt$\034ÿt$\034è") at ffmpeg.c:3735 #3 0x082c4b7e in av_vlog (avcl=0x848e010, level=137788800, fmt=0x837b39c "T²7\b", vl=0x82c4baa "\203Ä\030[Ã\220è") at log.c:65 #4 0x082c4baa in av_log (avcl=0x848e010, level=0, fmt=0x837b39c "T²7\b") at log.c:58 #5 0x081a9c13 in av_opt_show (obj=0x8477130, av_log_obj=0x0) at opt.c:335 #6 0x0805fe93 in show_help () at ffmpeg.c:3771 #7 0x08060d03 in main (argc=1, argv=0xbfbfe808) at ffmpeg.c:3798 Notice the fmt parameters are garbage from 4 upwards #6 0x0805fe93 in show_help () at ffmpeg.c:3771 3771 av_opt_show(sws_opts, NULL); Looking through the code, sws_opts is populated at ffmpeg.c in main() at line 3794 with a call to sws_getContext The real fun is that the ffmpeg code has TWO definitions for sws_getContext when you have --enable-swscaler passed to configure (which is the default for the port). One is defined in libavcodec/imgresample.c and the other in libswscale/swscale.c At least on my system, the linker defaulted to the version in libavcodec which leads to the SIGSEGV. Putting "#if 0" around the definitions for sws_getContext, sws_freeContext and sws_scale in libavcodec/imgresample.c appears to stop the SIGSEGV for me. Alternatively, deleting the files/patch-libavcodec_Makefile patch file appears to also stop the coredump. I do not have enough experience with this port to know if either option has bad side effects
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707130300.l6D30IbC060392>