bugGnash - The GNU Flash player - Bugs: bug #33338, segfault in fb-gnash,...

 
 

bug #33338: segfault in fb-gnash, getSupportedOptions()

Submitted by:  Gabriele Mondada <gmondada>
Submitted on:  Wed 18 May 2011 02:05:04 PM UTC  
 
Category: guiSeverity: 3 - Normal
Release: NoneStatus: Fixed
Privacy: PublicAssigned to: Sandro Santilli <strk>
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Thu 19 May 2011 09:21:46 AM UTC, comment #4:

it works, thanks !

Gabriele Mondada <gmondada>
Thu 19 May 2011 07:52:40 AM UTC, comment #3:

Try with cfc86de, should work

Sandro Santilli <strk>
Project MemberIn charge of this item.
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

Sandro Santilli <strk>
Project MemberIn charge of this item.
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

Gabriele Mondada <gmondada>
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)

Gabriele Mondada <gmondada>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by strk (Posted a comment)
  • -unavailable- added by gmondada (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 5 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Thu 19 May 2011 09:23:03 AM UTCstrkStatusReady For Test=>Fixed
      Open/ClosedOpen=>Closed
    Thu 19 May 2011 07:52:40 AM UTCstrkStatusNone=>Ready For Test
      Assigned toNone=>strk
    Thu 19 May 2011 07:38:09 AM UTCstrkCategorycore=>gui

    Back to the top


    Powered by Savane 3.1-cleanup1