From: Nigel H. <ni...@ho...> - 2009-01-06 09:30:29
|
Hi list, I crosscompiled gstreamer from source for mipsel-linux. It builds without any problem, but gst-inspect segmentation faults when i run it on the target (via nfs). $ ./gst_feedback-0.10 + GSTREAMER INFORMATION (0.10) +++ which gst-inspect-0.10 /root/smp8634/dfb_install/bin/gst-inspect-0.10 +++ gst-inspect-0.10 Segmentation fault +++ gst-inspect-0.10 fakesrc Segmentation fault +++ gst-inspect-0.10 fakesink Segmentation fault +++ gst-launch-0.10 fakesrc num-buffers=5 ! fakesink Segmentation fault The complete build script is copied below. Any idea? thanks, Nigel export PROJ_FOLDER=~/smp8634/dfb_install export PROJ_CROSSCOMPILE=mipsel-linux export PROJ_LDFLAGS=$PROJ_FOLDER/lib export PROJ_CPPFLAGS=$PROJ_FOLDER/include export PKG_CONFIG_PATH=$PROJ_FOLDER/lib/pkgconfig echo ================ Starting to build GST modules ================; echo --------Making Flex ----------; cd $PROJ_FOLDER/src/flex-2.5.35; ./configure --prefix=$PROJ_FOLDER/tmp make install [ "$?" == "0" ] || error_quit 1 ; export FLEX_PATH=$PROJ_FOLDER/tmp/bin/flex echo --------Making GStreamer ----------; cd $PROJ_FOLDER/src/gstreamer-0.10.21; ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE --disable-nls --disable-static --enable-binary-registry --disable-loadsave LDFLAGS="-L$PROJ_LDFLAGS -liconv -lintl -lgettextlib" make install; [ "$?" == "0" ] || error_quit 1 ; echo --------Making liboil ----------; cd $PROJ_FOLDER/src/liboil-0.3.15; ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE --disable-static --with-html-dir=$PROJ_FOLDER/tmp LDFLAGS="-L$PROJ_LDFLAGS -liconv -lintl" make install; [ "$?" == "0" ] || error_quit 1 ; echo --------Making xml2 ----------; cd $PROJ_FOLDER/src/xml2-2.7.2; ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE make install; [ "$?" == "0" ] || error_quit 1 ; echo --------Making gst-plugins-base ----------; cd $PROJ_FOLDER/src/gst-plugins-base-0.10.21; #export PKG_CONFIG_PATH=$PROJ_FOLDER/lib/pkgconfig ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE --disable-nls --disable-static --disable-x --disable-gnome_vfs --disable-ogg --disable-oggtest --disable-vorbis --disable-alsa --disable-pango CPPFLAGS="-I$PROJ_CPPFLAGS" LDFLAGS="-L$PROJ_LDFLAGS -liconv -lintl -lgettextlib -loil-0.3" make install; [ "$?" == "0" ] || error_quit 1 ; echo --------Making gst-plugins-good ----------; cd $PROJ_FOLDER/src/gst-plugins-good-0.10.11; ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE --disable-nls --disable-static --disable-x --disable-xshm --disable-xvideo --disable-gnome_vfs --disable-ogg --disable-oggtest --disable-vorbis --disable-esd --disable-esdtest --disable-shout2 --disable-shout2test --disable-gconf --disable-hal --disable-annodex --disable-equalizer --disable-examples --disable-external --disable-alsa --disable-libpng --disable-gst_v4l2 --disable-pango --disable-cairo --disable-gdk_pixbuf CPPFLAGS="-I$PROJ_CPPFLAGS" LDFLAGS="-L$PROJ_LDFLAGS -liconv -lintl -lgettextlib -loil-0.3" make install; [ "$?" == "0" ] || error_quit 1 ; echo --------Making gst-plugins-ugly ----------; cd $PROJ_FOLDER/src/gst-plugins-ugly-0.10.10; ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE make install; [ "$?" == "0" ] || error_quit 1 ; echo --------Making gst-plugins-bad ----------; cd $PROJ_FOLDER/src/gst-plugins-bad-0.10.9; ./configure --prefix=$PROJ_FOLDER --host=$PROJ_CROSSCOMPILE CPPFLAGS="-I$PROJ_CPPFLAGS" LDFLAGS="-L$PROJ_LDFLAGS -loil-0.3 -liconv -lintl" --disable-dvdnav --disable-examples --disable-apexsink --disable-alsa --disable-sdl --disable-metadata make install; [ "$?" == "0" ] || error_quit 1 ; echo ================ Finish building GStreamer ================; _________________________________________________________________ More than messages–check out the rest of the Windows Live™. http://www.microsoft.com/windows/windowslive/ |
From: Michael S. <ms...@xi...> - 2009-01-06 19:07:04
|
On Tue, Jan 6, 2009 at 1:30 AM, Nigel Hsiung <ni...@ho...> wrote: > Hi list, > > I crosscompiled gstreamer from source for mipsel-linux. It builds without > any problem, but gst-inspect segmentation faults when i run it on the target > (via nfs). > > $ ./gst_feedback-0.10 > > + GSTREAMER INFORMATION (0.10) > +++ which gst-inspect-0.10 > /root/smp8634/dfb_install/bin/gst-inspect-0.10 > +++ gst-inspect-0.10 > Segmentation fault So when this sort of thing happens, you should set GST_REGISTRY_FORK=no (to avoid extra complexity of tracing child processes), then run it in a debugger. That'll let you see which plugin/element is causing the crash. If you don't have a debugger, then you're probably doomed. However, you could try running with GST_DEBUG=5, and see what the last output is before the crash - it'll at least give you some idea what's going wrong, most likely. Mike |
From: Nigel H. <ni...@ho...> - 2009-01-09 05:36:18
|
Thanks Mike, This is what i've got - uclibc[bin]$ export GST_REGISTRY_FORK=no uclibc[bin]$ export GST_DEBUG=5 uclibc[bin]$ gst-inspect-0.10 fakesrc 0:00:00.003672000 923 0x44c100 INFO GST_INIT gst.c:608:init_pre: Initializing GStreamer Core Library version 0.10.21 0:00:00.005279000 923 0x44c100 INFO GST_INIT gst.c:609:init_pre: Using library installed in / root/smp8634/dfb_install/lib 0:00:00.006426000 923 0x44c100 INFO GST_INIT gst.c:619:init_pre: Linux uclibc 2.6.15-moto01 # 233 PREEMPT Thu Nov 27 15:25:59 CST 2008 mips The gdb output shows that the segmentation is happening here - 1794 if (group->post_parse_func) (gdb) 1796 if (!(* group->post_parse_func) (context, group, (gdb) Program received signal SIGSEGV, Segmentation fault. I've only set LD_LIBRARY_PATH and nothing else. Any idea? Thanks, Nigel The entire gdb output is copied here below main (argc=2, argv=0x7f862d14) at gst-inspect.c:1332 1332 }; (gdb) (gdb) next 1319 { (gdb) 1332 }; (gdb) 1320 gboolean print_all = FALSE; (gdb) 1332 }; (gdb) 1342 if (!g_thread_supported ()) (gdb) 1332 }; (gdb) 1342 if (!g_thread_supported ()) (gdb) 1332 }; (gdb) 1342 if (!g_thread_supported ()) (gdb) 1343 g_thread_init (NULL); (gdb) 1345 ctx = g_option_context_new ("[ELEMENT-NAME | PLUGIN-NAME]"); (gdb) 1346 g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE); (gdb) 1347 g_option_context_add_group (ctx, gst_init_get_option_group ()); (gdb) step gst_init_get_option_group () at gst.c:367 367 if (!g_thread_supported ()) { (gdb) 368 g_warning ("The GStreamer function gst_init_get_option_group() was\n" (gdb) next 367 if (!g_thread_supported ()) { (gdb) 368 g_warning ("The GStreamer function gst_init_get_option_group() was\n" (gdb) 367 if (!g_thread_supported ()) { (gdb) 378 group = g_option_group_new ("gst", _("GStreamer Options"), (gdb) 380 g_option_group_set_parse_hooks (group, (GOptionParseFunc) init_pre, (gdb) next 383 g_option_group_add_entries (group, gst_args); (gdb) 384 g_option_group_set_translation_domain (group, GETTEXT_PACKAGE); (gdb) 390 } (gdb) step 384 g_option_group_set_translation_domain (group, GETTEXT_PACKAGE); (gdb) 390 } (gdb) IA__g_option_context_add_group (context=0x44d838, group=0x44db48) at goption.c:366 366 { (gdb) 369 g_return_if_fail (context != NULL); (gdb) 370 g_return_if_fail (group != NULL); (gdb) 371 g_return_if_fail (group->name != NULL); (gdb) 372 g_return_if_fail (group->description != NULL); (gdb) 373 g_return_if_fail (group->help_description != NULL); (gdb) 375 for (list = context->groups; list; list = list->next) (gdb) next 385 context->groups = g_list_append (context->groups, group); (gdb) 386 } (gdb) step main (argc=2, argv=0x7f862d14) at gst-inspect.c:1348 1348 if (!g_option_context_parse (ctx, &argc, &argv, &err)) { (gdb) IA__g_option_context_parse (context=0x44d838, argc=0x7f862c38, argv=0x7f862c3c, error=0x7f862b90) at goption.c:1550 1550 if (!g_get_prgname()) (gdb) 1545 { (gdb) 1550 if (!g_get_prgname()) (gdb) IA__g_get_prgname () at gutils.c:1898 1898 G_LOCK (g_prgname); (gdb) next 1898 G_LOCK (g_prgname); (gdb) 1923 G_UNLOCK (g_prgname); (gdb) 1922 retval = g_prgname; (gdb) 1923 G_UNLOCK (g_prgname); (gdb) 1926 } (gdb) step 1923 G_UNLOCK (g_prgname); (gdb) 1926 } (gdb) IA__g_option_context_parse (context=0x44d838, argc=0x7f862c38, argv=0x7f862c3c, error=0x7f862b90) at goption.c:1552 1552 if (argc && argv && *argc) (gdb) next 1556 prgname = g_path_get_basename ((*argv)[0]); (gdb) 1557 g_set_prgname (prgname); (gdb) 1558 g_free (prgname); (gdb) 1565 list = context->groups; (gdb) 1566 while (list) (gdb) 1568 GOptionGroup *group = list->data; (gdb) 1572 if (!(* group->pre_parse_func) (context, group, (gdb) 1570 if (group->pre_parse_func) (gdb) 1572 if (!(* group->pre_parse_func) (context, group, (gdb) 1570 if (group->pre_parse_func) (gdb) 1572 if (!(* group->pre_parse_func) (context, group, (gdb) 1577 list = list->next; (gdb) 1566 while (list) (gdb) 1580 if (context->main_group && context->main_group->pre_parse_func) (gdb) 1587 if (argc && argv) (gdb) 1593 for (i = 1; i < *argc; i++) (gdb) 1598 if ((*argv)[i][0] == '-' && (*argv)[i][1] != '\0' && !stop_parsing) (gdb) 1596 gboolean parsed = FALSE; (gdb) 1598 if ((*argv)[i][0] == '-' && (*argv)[i][1] != '\0' && !stop_parsing) (gdb) 1773 if (context->main_group && (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1405 if (*index >= *argc) (gdb) 1408 if (group->entries[j].long_name[0]) (gdb) 1409 continue; (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1773 if (context->main_group && (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1408 if (group->entries[j].long_name[0]) (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1773 if (context->main_group && (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1408 if (group->entries[j].long_name[0]) (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1773 if (context->main_group && (gdb) 1403 for (j = 0; j < group->n_entries; j++) (gdb) 1778 if (!parsed && (has_unknown || (*argv)[i][0] == '-')) (gdb) 1783 if (separator_pos > 0) (gdb) 1789 list = context->groups; (gdb) 1790 while (list) (gdb) 1792 GOptionGroup *group = list->data; (gdb) 1796 if (!(* group->post_parse_func) (context, group, (gdb) 1794 if (group->post_parse_func) (gdb) 1796 if (!(* group->post_parse_func) (context, group, (gdb) 1794 if (group->post_parse_func) (gdb) 1796 if (!(* group->post_parse_func) (context, group, (gdb) Program received signal SIGSEGV, Segmentation fault. 0x00000000 in ?? () _________________________________________________________________ Show them the way! Add maps and directions to your party invites. http://www.microsoft.com/windows/windowslive/events.aspx |
From: Michael S. <ms...@xi...> - 2009-01-09 05:59:53
|
On Thu, Jan 8, 2009 at 9:36 PM, Nigel Hsiung <ni...@ho...> wrote: > > Thanks Mike, > This is what i've got - > uclibc[bin]$ export GST_REGISTRY_FORK=no > uclibc[bin]$ export GST_DEBUG=5 > uclibc[bin]$ gst-inspect-0.10 fakesrc > 0:00:00.003672000 923 0x44c100 INFO GST_INIT > gst.c:608:init_pre: Initializing GStreamer Core > Library version 0.10.21 > 0:00:00.005279000 923 0x44c100 INFO GST_INIT > gst.c:609:init_pre: Using library installed in / > root/smp8634/dfb_install/lib > 0:00:00.006426000 923 0x44c100 INFO GST_INIT > gst.c:619:init_pre: Linux uclibc 2.6.15-moto01 # > 233 PREEMPT Thu Nov 27 15:25:59 CST 2008 mips > > > The gdb output shows that the segmentation is happening here - > 1794 &nb sp; if (group->post_parse_func) > (gdb) > 1796 if (!(* group->post_parse_func) (context, group, > (gdb) > > Program received signal SIGSEGV, Segmentation fault. I've never seen a crash here - this is the command line option parsing code, which is using glib APIs. If it's crashing here, my best guess would be that you've somehow miscompiled glib - I'm unfamiliar with your platform, so I can't really be more specific, sorry. Good luck debugging this - it doesn't look to be anything gstreamer-specific. Mike |
From: Nigel H. <ni...@ho...> - 2009-01-09 06:37:35
|
> If it's crashing here, my best guess would be that you've somehow > miscompiled glib - I'm unfamiliar with your platform, so I can't > really be more specific, sorry. > Thanks man, u've been most helpful. best, Nigel Just pasting more gdb output just in case - _gst_format_initialize () at gstformat.c:69 69 g_hash_table_insert (_format_to_nick, GINT_TO_POINTER (standards->value), (gdb) step g_hash_table_insert (hash_table=0x452268, key=0x1, value=0x2ac02ff0) at glib/ghash.c:348 348 { (gdb) 351 g_return_if_fail (hash_table != NULL); (gdb) 352 g_return_if_fail (hash_table->ref_count > 0); (gdb) 245 node = &hash_table->nodes (gdb) 0x2aeeff40 in g_hash_table_insert (hash_table=0x452268, key=0x1, value=0x2ac02ff0) at glib/ghash.c:245 245 node = &hash_table->nodes <<-----------------something seems wrong here Could not insert single-step breakpoint at 0x0 _________________________________________________________________ Drag n’ drop—Get easy photo sharing with Windows Live™ Photos. http://www.microsoft.com/windows/windowslive/photos.aspx |
From: Nigel H. <ni...@ho...> - 2009-01-13 12:42:16
|
Finally found the problem - gettextlib internally implements a subset of glib functions. Since I used -lgettextlib when configuring, a few of the g_ functions is linking with gettextlib and not glib. best, Nigel _________________________________________________________________ Drag n’ drop—Get easy photo sharing with Windows Live™ Photos. http://www.microsoft.com/windows/windowslive/photos.aspx |