Bug#498216: ffmpeg, mplayer (mipsel/loongson2f) stops with the error message "Segmentation fault." and fix patch

Thiemo Seufer ths at networkno.de
Tue Sep 9 09:03:11 UTC 2008


Reinhard Tartler wrote:
[snip]
> >> (gdb) run
> >> Starting program: /usr/bin/ffmpeg
> >> [Thread debugging using libthread_db enabled]
> >> [New Thread 0x2aad0f40 (LWP 26315)]
> >> 
> >> Program received signal SIGSEGV, Segmentation fault.
> >> [Switching to Thread 0x2aad0f40 (LWP 26315)]
> >> 0x2abe11e8 in avcodec_register_all () at
> >> /usr/src/ffmpeg/ffmpeg-debian-0.svn20080206/libavcodec/allcodecs.c:58
> >> warning: Source file is more recent than executable.
> >> 58          if (inited)
> >> 
> >> fix this bug:
> >> --- ffmpeg-debian-0.svn20080206.orig/libavcodec/allcodecs.c
> >> +++ ffmpeg-debian-0.svn20080206/libavcodec/allcodecs.c
> >> @@ -53,7 +53,7 @@
> >>  */
> >>  void avcodec_register_all(void)
> >>  {
> >> -    static int inited;
> >> +    static int inited=0;

As already mentioned, this shouldn't change the program logic. It
moves the variable from .bss to .data, though.

> >> 
> >>    if (inited)
> >>        return;
> >> 
> 
> That's, uhm, interesting. I've done some tests with the following
> program:
> 
> #include<stdio.h>
> 
> void print() {
>   static int s;
> 
>   printf("s: %d\n", s);
> }
> 
> int main () {
>   print();
> }
> 
> I've compiled it on morales.debian.org, a mipsel porter machine with
> CFLAGS set to -O0, -O2, O3 and -Os, all returned 0. AFAIR, static
> variables are always initialized to 0, but I don't have the C standard
> at hand right now.
> 
> ?????????, TBH, this looks rather like a miscompilation issue here. Is
> there something special with gcc on mispel? Perhaps can the mips porter
> list help here?

I figure the .bss isn't properly zeroed at startup of the program.
Since the same Lenny binaries work fine on other mipsel systems I
figure this is a problem connected to the Longsoon kernel.


Thiemo





More information about the pkg-multimedia-maintainers mailing list