bugGnash - The GNU Flash player - Bugs: bug #42416, deadlock on exit


bug #42416: deadlock on exit

Submitter:  Sandro Santilli <strk>
Submitted:  Sat 24 May 2014 01:37:46 PM UTC
Category:  None Severity:  5 - Blocker
Release:  None Status:  Invalid
Privacy:  Public Assigned to:  bjacques
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup

Jump to the original submission

Sat 24 Jan 2015 09:03:48 PM UTC, comment #10: 

And... re-closed since the re-opening event was found to be invalid

Sandro Santilli <strk>
Group Member
Sat 24 Jan 2015 09:02:44 PM UTC, comment #9: 

Filed bug #44079 for the lack of pending loads cancelation

Sandro Santilli <strk>
Group Member
Sat 24 Jan 2015 08:52:20 PM UTC, comment #8: 

Uhm, confirmed. It's stuck in a load. I guess it'd make sense to cancel pending loads but that is likely worth a different ticket.

Sandro Santilli <strk>
Group Member
Sat 24 Jan 2015 08:16:52 PM UTC, comment #7: 

Are you quite sure this is a deadlock? I am able to reproduce a significant delay when quitting early, but after the following message (verbose output), Gnash quits normally:

16551:3] 60716 ERROR: Timeout (60000 milliseconds) while loading from URL

Bastiaan Jacques <bjacques>
Group Member
Fri 10 Oct 2014 10:04:10 AM UTC, comment #6: 

Reopening as it just happened again.
Movie being played:
fa8091d61ec4d1ef3e75330b4c7d2a58  bubbletroublewm.swf

The backtrace this time does not involve SDL:

(gdb) bt
#0  0x00007fab7173366b in pthread_join (threadid=140373989623552, thread_return=0x0) at pthread_join.c:92
#1  0x00007fab71f159e7 in std::thread::join() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007fab745ec4fb in gnash::MovieLoader::clear (this=this@entry=0x7ffff5512ad8) at /usr/src/gnash/gnash-head/libcore/MovieLoader.cpp:189
#3  0x00007fab7457f583 in gnash::movie_root::~movie_root (this=0x7ffff5511ff0, __in_chrg=<optimized out>)
    at /usr/src/gnash/gnash-head/libcore/movie_root.cpp:194
#4  0x00007fab74ce9333 in gnash::Player::run (this=<optimized out>, argc=<optimized out>, argv=0x7ffff5513cf8, infile=..., url=...)
    at /usr/src/gnash/gnash-head/gui/Player.cpp:666
#5  0x00007fab74cc432a in playFile (player=..., argc=2, argv=0x7ffff5513cf8, filename=...) at /usr/src/gnash/gnash-head/gui/gnash.cpp:92
#6  0x00007fab74cc2e17 in __call<void, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, 0ul, 1ul, 2ul, 3ul> (
    __args=<optimized out>, this=<optimized out>) at /usr/include/c++/4.8/functional:1296
#7  operator()<std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, void> (this=<optimized out>)
    at /usr/include/c++/4.8/functional:1355
#8  for_each<__gnu_cxx::__normal_iterator<std::basic_string<char>*, std::vector<std::basic_string<char> > >, std::_Bind<void ((std::reference_wrapper<gnash::Player>, int, char*, std::_Placeholder<1>))(gnash::Player&, int, char**, const std::basic_string<char>&)> > (__f=..., __last=...,
    __first=...) at /usr/include/c++/4.8/bits/stl_algo.h:4417
#9  main (argc=2, argv=0x7ffff5513cf8) at /usr/src/gnash/gnash-head/gui/gnash.cpp:176
(gdb) frame 4
#4  0x00007fab74ce9333 in gnash::Player::run (this=<optimized out>, argc=<optimized out>, argv=0x7ffff5513cf8, infile=..., url=...)
    at /usr/src/gnash/gnash-head/gui/Player.cpp:666
666         log_debug("Main loop ended, cleaning up");

Sandro Santilli <strk>
Group Member
Fri 10 Oct 2014 09:43:57 AM UTC, comment #5: 

I can't reproduce anymore as of f2ad7118e732da54be5afa5e3a01df801a34f595 so closing

Sandro Santilli <strk>
Group Member
Thu 12 Jun 2014 12:59:06 PM UTC, comment #4: 

If you've done with all your changes I could try running my tests again. Just tell me when the dust poses.

Sandro Santilli <strk>
Group Member
Mon 26 May 2014 09:40:12 AM UTC, comment #3: 

Not really, I was just running my "test_all_tests" script (for file in `find_all_swf_files`; do gnash $file; done) and at one point (after quitting one window) no new window came out, so I attached the process with gdb and the stacktrace is below.

Again, it could be related to the fact that meanwhile I was installing/upgrading sound-related things so could be there was an hard lock on the audio backend.

In any case if it was a deadlock due to a race condition it would not be easy to reproduce :/

Sandro Santilli <strk>
Group Member
Sat 24 May 2014 08:31:10 PM UTC, comment #2: 

Can you please provide steps to reproduce?

Bastiaan Jacques <bjacques>
Group Member
Sat 24 May 2014 01:41:03 PM UTC, comment #1: 

Sorry my backtrace could be specific to the fact I'm messing up with pulseaudio. Will try to fix that locally, but also see
a possible deadlock on a buildbot: http://gnashdev.org:8010/builders/jessie-linux-i386/builds/1298/steps/make_anal/logs/stdio

Sandro Santilli <strk>
Group Member
Sat 24 May 2014 01:37:46 PM UTC, original submission:  

Got the process stuck on exit.
Attaching it with gdb gave this stacktrace:

(gdb) bt
#0  0x00007fdd68f891f8 in pthread_join (threadid=140588372457216,
    thread_return=0x0) at pthread_join.c:92
#1  0x00007fdd654f8cb6 in SDL_WaitThread ()
   from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#2  0x00007fdd654f107a in SDL_AudioQuit ()
   from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#3  0x00007fdd654eff95 in SDL_QuitSubSystem ()
   from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#4  0x00007fdd6b2e7b83 in gnash::sound::SDL_sound_handler::~SDL_sound_handler
    (this=0x7fdd6dcc7310, __in_chrg=<optimized out>)
    at /usr/src/gnash/gnash-head/libsound/sdl/sound_handler_sdl.cpp:131
#5  0x00007fdd6b2e7bc9 in gnash::sound::SDL_sound_handler::~SDL_sound_handler
    (this=0x7fdd6dcc7310, __in_chrg=<optimized out>)
    at /usr/src/gnash/gnash-head/libsound/sdl/sound_handler_sdl.cpp:133
#6  0x00007fdd6c525019 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x7fdd6dd00fb0)
    at /usr/include/c++/4.8/bits/shared_ptr_base.h:144
#7  0x00007fdd6c540aef in ~__shared_count (this=0x7fffa7e47110,
    __in_chrg=<optimized out>)
    at /usr/include/c++/4.8/bits/shared_ptr_base.h:553
#8  ~__shared_ptr (this=0x7fffa7e47108, __in_chrg=<optimized out>)
    at /usr/include/c++/4.8/bits/shared_ptr_base.h:810
#9  ~shared_ptr (this=0x7fffa7e47108, __in_chrg=<optimized out>)

Assigning to bjacques as he recently removed barriers and mutexes. This is with Gnash 0.8.11dev (master-22144-6cb7f6f)

Sandro Santilli <strk>
Group Member


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

Attach Files:

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 strk (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 8 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2015-01-24 bjacques StatusFixed Invalid
    2015-01-24 strk StatusNone Fixed
        Open/ClosedOpen Closed
    2014-10-10 strk StatusFixed None
        Open/ClosedClosed Open
    2014-10-10 strk StatusNeed Info Fixed
        Open/ClosedOpen Closed
    2014-06-12 bjacques StatusNone Need Info

    Back to the top

    Powered by Savane 3.13-6ae7.
    Corresponding source code