[gst-embedded] gstreamer segfault on ARM

Bernard Blackham bernard at largestprime.net
Fri Jun 20 00:29:31 PDT 2008


[Taking to gst-devel]

Bernard Blackham wrote:
> Running a rather simple program:
> 
>   #include <gst/gst.h>
>   int main() {
>     gst_init(0, NULL);
>     g_pipeline_new("pipeline");
>     return 0;
>   }
> 
> with GST_DEBUG=4 causes the program to segfault when it goes to
> print out one of its trace messages.

I tracked down the cause of this to an incompatibility with my build of 
glib. When cross-compiling glib, it decided to not like glibc's printf 
(because it tried running some printf tests and failed, because it was 
cross-compiling), and thus went and used its own printf implementation.

Gstreamer was not aware of this decision in the glib build though, so it 
happily went ahead and used glib assuming it had a glibc printf that 
could support printf extensions (that it uses to format %P in strings).

Rebuilding glib with the right configure cache settings (below) solved 
the gstreamer crash.

  glib_cv_long_long_format=ll
  ac_cv_func_printf_unix98=yes
  ac_cv_func_vsnprintf_c99=yes

So this solved the problem, but I'm wondering if there should be a 
better way for gstreamer to detect if it is safe to use %P or not: not 
only does glibc need to provide it, but glib needs to be using it too. 
Or is the fact that glibc provides it enough proof that glib should be 
using it and anything else is a broken setup like mine was?

TIA,
Bernard.





More information about the Gstreamer-embedded mailing list