Thu 19 May 2011 07:38:09 AM UTC, comment #2:
Ah, now it makes sense, as handlers.front() would return an invalid iterator at best, an exception if you're lucky, and in this case it looks like a segfault...
The fix would be to check for handlers.size() before calling .front() and skip the setMedia call at all if it isn't found
|
Thu 19 May 2011 07:06:48 AM UTC, comment #1:
More precisely, the problem is due to this piece of code:
("media,M", po::value<string>()
->default_value(rcfile.getMediaHandler().empty() ? handlers.front()
: rcfile.getMediaHandler() )
->notifier(boost::bind(&Player::setMedia, &p, _1)),
(string(_("The media handler to use"))
+ string("\n") + boost::join(handlers, "|")
).c_str())
So, it seems linked to the option --enable-media=none
|
Wed 18 May 2011 02:05:04 PM UTC, original submission:
On debian squeeze i686, gnash 0.8.9 from tarball, with:
./configure --prefix=/usr/xxx --disable-menus --enable-renderer=agg --enable-gui=fb --disable-plugins --disable-sound --enable-media=none --enable-input=touchscreen
I got segmentation fault by launching fb-gnash. Here is the backtrace:
Program received signal SIGSEGV, Segmentation fault.
0xb76fbf85 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) () from /usr/lib/libstdc++.so.6
(gdb) bt
#0 0xb76fbf85 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) () from /usr/lib/libstdc++.so.6
#1 0x0805fb33 in holder (p=<value optimized out>) at /usr/include/boost/any.hpp:121
#2 any<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > (
p=<value optimized out>) at /usr/include/boost/any.hpp:46
#3 boost::program_options::typed_value<std::string, char>::default_value (
p=<value optimized out>)
at /usr/include/boost/program_options/value_semantic.hpp:197
#4 getSupportedOptions (p=<value optimized out>) at ../gnash.cpp:441
#5 0x08064327 in main (argc=1, argv=0xbffffce4) at ../gnash.cpp:98
Workaround (patch):
diff -ru gnash-0.8.9.orig/gui/gnash.cpp gnash-0.8.9/gui/gnash.cpp
--- gnash-0.8.9.orig/gui/gnash.cpp 2011-02-26 19:11:07.000000000 +0100
+++ gnash-0.8.9/gui/gnash.cpp 2011-05-18 11:08:56.000000000 +0200
@@ -316,6 +316,7 @@
("version,V",
_("Print version information and exit"))
+ /*
("scale,s", po::value<float>()
->notifier(boost::bind(&Player::setScale, &p,
@@ -435,7 +436,7 @@
("screenshot-quality", po::value<size_t>()
->notifier(boost::bind(&Player::setScreenShotQuality, &p, _1)),
_("Quality for screenshot output (not all formats)"))
-
+*/
("input-file", po::value<std::vector<std::string> >(&infiles),
_("Input files"))
;
Linked libraries:
$ ldd /usr/gmo/bin/fb-gnash
linux-gate.so.1 => (0xb78d6000)
libts-0.0.so.0 => /usr/lib/libts-0.0.so.0 (0xb78c9000)
libboost_program_options.so.1.42.0 => /usr/lib/libboost_program_options.so.1.42.0 (0xb7877000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb785d000)
libgnashcore-0.8.9.so => /usr/gmo/lib/gnash/libgnashcore-0.8.9.so (0xb71fe000)
libgnashrender-0.8.9.so => /usr/gmo/lib/gnash/libgnashrender-0.8.9.so (0xb70b2000)
libgnashsound-0.8.9.so => /usr/gmo/lib/gnash/libgnashsound-0.8.9.so (0xb708e000)
libgnashmedia-0.8.9.so => /usr/gmo/lib/gnash/libgnashmedia-0.8.9.so (0xb705f000)
libgnashbase-0.8.9.so => /usr/gmo/lib/gnash/libgnashbase-0.8.9.so (0xb6fc3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6ece000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6eb0000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb6d6a000)
libdirectfb-1.4.so.5 => not found
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb6d65000)
librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb6d5c000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb6d36000)
/lib/ld-linux.so.2 (0xb78d7000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb6d16000)
libpng12.so.0 => /lib/libpng12.so.0 (0xb6cf2000)
libgif.so.4 => /usr/lib/libgif.so.4 (0xb6ce9000)
libz.so.1 => /usr/lib/libz.so.1 (0xb6cd5000)
libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb6c7b000)
libltdl.so.7 => /usr/lib/libltdl.so.7 (0xb6c73000)
libboost_thread.so.1.42.0 => /usr/lib/libboost_thread.so.1.42.0 (0xb6c60000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb6be8000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb6bb9000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb6a9c000)
liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0xb6a90000)
libdirectfb-1.4.so.5 => /usr/gmo/lib/libdirectfb-1.4.so.5 (0xb69fb000)
libfusion-1.4.so.5 => /usr/gmo/lib/libfusion-1.4.so.5 (0xb69e5000)
libdirect-1.4.so.5 => /usr/gmo/lib/libdirect-1.4.so.5 (0xb69cc000)
libidn.so.11 => /usr/lib/libidn.so.11 (0xb699b000)
libssh2.so.1 => /usr/lib/libssh2.so.1 (0xb697a000)
libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0xb6935000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb6905000)
libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb68bb000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb6763000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb673d000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb6724000)
libresolv.so.2 => /lib/i686/cmov/libresolv.so.2 (0xb670f000)
libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb669b000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb6684000)
libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb65ec000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb653a000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb6516000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb6513000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb650c000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb6509000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb6506000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb6500000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb64fc000)
libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb64ec000)
|