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

 
 

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

Submitter:  Gabriele Mondada <gmondada>
Submitted:  Wed 18 May 2011 02:05:04 PM UTC
   
 
Category:  gui Severity:  3 - Normal
Release:  None Status:  Fixed
Privacy:  Public Assigned to:  strk
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

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>
Group Member
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>
Group Member
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 Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

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

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2011-05-19 strk StatusReady For Test Fixed
        Open/ClosedOpen Closed
    2011-05-19 strk StatusNone Ready For Test
        Assigned toNone strk
    2011-05-19 strk Categorycore gui

    Back to the top

    Powered by Savane 3.13-4b48.
    Corresponding source code