bugGnash - The GNU Flash player - Bugs: bug #23318, Crashing with an assertion error...

 
 

bug #23318: Crashing with an assertion error with the latest snap

Submitter:  Brad Smith <brad0>
Submitted:  Thu 22 May 2008 05:21:42 AM UTC
   
 
Category:  core Severity:  3 - Normal
Release:  None Status:  Wont Fix
Privacy:  Public Assigned to:  None
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Mon 26 May 2008 11:38:43 PM UTC, comment #8: 

Problem solved -

Telling boost to use libpthread instead of libstdc++ for atomic counters stops the assertion error.

This can be done either by using -DBOOST_AC_USE_PTHREAD at compile time, or including <boost/detail/atomic_count_pthreads.hpp> directly (instead of <boost/detail/atomic_count.hpp>)



Deanna Phillips <deanna>
Mon 26 May 2008 08:37:54 PM UTC, comment #7: 

There was some speculation that this might be related to a broken libbboost_thread on OpenBSD.  I just ran the boost 1.34.1 regression test for the thread lib and all tests passed.

We do have some boost date_time failures, but AFAICS gnash doesn't use date_time yet.

Deanna Phillips <deanna>
Sun 25 May 2008 05:55:45 PM UTC, comment #6: 

However, Deanna tested that the assertion still fails with LOAD_MOVIES_IN_A_SEPARATE_THREAD undefined.

Bastiaan Jacques <bjacques>
Group Member
Sun 25 May 2008 05:38:22 PM UTC, comment #5: 

Perhaps it is related to this Helgrind output:

==13431== Possible data race during write of size 1 at 0x51108D4
==13431==    at 0x468BAF5: gnash::movie_def_impl::~movie_def_impl() (movie_def_impl.cpp:229)
==13431==    by 0x80AF8F6: gnash::ref_counted::drop_ref() const (ref_counted.h:87)
==13431==    by 0x80AF92B: gnash::intrusive_ptr_release(gnash::ref_counted const*) (smart_ptr.h:65)
==13431==    by 0x80AF96C: boost::intrusive_ptr<gnash::movie_definition>::~intrusive_ptr() (intrusive_ptr.hpp:83)
==13431==    by 0x80A7E53: gnash::Gui::~Gui() (gui.cpp:161)
==13431==    by 0x80CB3D4: gnash::GtkGui::~GtkGui() (gtk.cpp:97)
==13431==    by 0x80BE59D: std::auto_ptr<gnash::Gui>::~auto_ptr() (auto_ptr.h:173)
==13431==    by 0xC3663D: exit (exit.c:75)
==13431==    by 0xC20397: (below main) (libc-start.c:252)
==13431==   Old state: owned exclusively by thread #2
==13431==   New state: shared-modified by threads #1, #2
==13431==   Reason:    this thread, #1, holds no locks at all

Bastiaan Jacques <bjacques>
Group Member
Sun 25 May 2008 03:48:51 PM UTC, comment #4: 

I can reproduce this with HEAD and with strk's patch #6524 applied.  I also tried backing up to boost 1.33.1 and the problem remains.


Deanna Phillips <deanna>
Fri 23 May 2008 02:52:41 AM UTC, comment #3: 

This was definitely a clean build built with no optimization and debug symbols.

schild.swf was some random Flash file I had around but I experienced the same crash with a bunch of other Flash files I have. All of these files worked with 0.8.2.

Brad Smith <brad0>
Fri 23 May 2008 02:17:51 AM UTC, comment #2: 

Brad0:
what is schild.swf?



Zou Lunkai <zoulunkai>
Thu 22 May 2008 03:52:48 PM UTC, comment #1: 

ref_counted.h assertions often come from a bad build tree. If you weren't building from a fresh checkout / make distclean, can you do so and see if you still get the failure?

See bug #23142 for a similar example (though not exactly the same) - I've also had the same problem in the past.

Benjamin Wolsey <bwy>
Group Member
Thu 22 May 2008 05:21:42 AM UTC, original submission:  

Using the latest snap from the 21st results in crashing with an
assertion error when loading Flash files with the standalone player.

$ gnash schild.swf                                                                                                       
RcInitFile: couldn't open file: /etc/gnashrc
RcInitFile: parsing /home/brad/.gnashrc
Warning: unrecognized directive "splash_screen" in rcfile /home/brad/.gnashrc line 2
assertion "m_ref_count >= 0" failed: file "../libbase/ref_counted.h", line 77, function "add_ref"
Abort trap (core dumped)


#0  0x08dac5e1 in kill () from /usr/lib/libc.so.44.0
#1  0x08de4df3 in abort () at /usr/src/lib/libc/stdlib/abort.c:68
#2  0x08d85947 in __assert2 (file=0x3c0031fd "../libbase/ref_counted.h", line=77, func=0x3c0031e4 "add_ref",
    failedexpr=0x3c0031ec "m_ref_count >= 0") at /usr/src/lib/libc/gen/assert.c:52
#3  0x1c08fedc in gnash::ref_counted::add_ref() const (this=0x84f10400) at ref_counted.h:77
#4  0x1c08bcbd in intrusive_ptr_add_ref (o=0x84f10400) at smart_ptr.h:59
#5  0x1c08a97f in intrusive_ptr (this=0xcfbef860, p=0x84f10400, add_ref=true) at intrusive_ptr.hpp:64
#6  0x1c08b8ea in boost::intrusive_ptr<gnash::movie_definition>::operator=(gnash::movie_definition*) (this=0xcfbef8a0,
    rhs=0x84f10400) at intrusive_ptr.hpp:104
#7  0x095b9a13 in gnash::MovieLibrary::add(std::string const&, gnash::movie_definition*) (this=0x293b6a6c,
    key=@0xcfbef970, mov=0x84f10400) at impl.cpp:709
#8  0x095b89c1 in gnash::create_library_movie(gnash::URL const&, char const*, bool, std::string const*) (url=@0xcfbef9d0,
    real_url=0x859c38b4 "schild.swf", startLoaderThread=false, postdata=0x0) at impl.cpp:826
#9  0x1c091f72 in gnash::Player::load_movie() (this=0xcfbefb90) at Player.cpp:263
#10 0x1c0927a6 in gnash::Player::run(int, char**, std::string const&, std::string const&) (this=0xcfbefb90, argc=2,
    argv=0xcfbefc4c, infile=@0xcfbefb50, url=@0xcfbefb70) at Player.cpp:354
#11 0x1c078c15 in main (argc=2, argv=0xcfbefc4c) at gnash.cpp:455

Brad Smith <brad0>

 

(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 bjacques (Posted a comment)
  • -email is unavailable- added by deanna (Posted a comment)
  • -email is unavailable- added by zoulunkai (Posted a comment)
  • -email is unavailable- added by bwy (Posted a comment)
  • -email is unavailable- added by brad0 (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 2 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2008-05-27 bjacques StatusNone Wont Fix
        Open/ClosedOpen Closed

    Back to the top

    Powered by Savane 3.13-758e.
    Corresponding source code