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


bug #42416: deadlock on exit

Submitted by:  Sandro Santilli <strk>
Submitted on:  Sat May 24 13:37:46 2014  
Category: NoneSeverity: 5 - Blocker
Release: NoneStatus: Invalid
Privacy: PublicAssigned to: Bastiaan Jacques <bjacques>
Open/Closed: Closed

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

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


(Jump to the original submission Jump to the original submission)

Sat Jan 24 21:03:48 2015, comment #10:

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

Sandro Santilli <strk>
Project Member
Sat Jan 24 21:02:44 2015, comment #9:

Filed bug #44079 for the lack of pending loads cancelation

Sandro Santilli <strk>
Project Member
Sat Jan 24 20:52:20 2015, 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>
Project Member
Sat Jan 24 20:16:52 2015, 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>
Project MemberIn charge of this item.
Fri Oct 10 10:04:10 2014, 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>
Project Member
Fri Oct 10 09:43:57 2014, comment #5:

I can't reproduce anymore as of f2ad7118e732da54be5afa5e3a01df801a34f595 so closing

Sandro Santilli <strk>
Project Member
Thu Jun 12 12:59:06 2014, 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>
Project Member
Mon May 26 09:40:12 2014, 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>
Project Member
Sat May 24 20:31:10 2014, comment #2:

Can you please provide steps to reproduce?

Bastiaan Jacques <bjacques>
Project MemberIn charge of this item.
Sat May 24 13:41:03 2014, 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>
Project Member
Sat May 24 13:37:46 2014, 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>
Project Member


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

Attach File(s):

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 bjacques (Posted a comment)
  • -unavailable- added by strk (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 8 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat Jan 24 21:04:00 2015bjacquesStatusFixed=>Invalid
    Sat Jan 24 21:03:48 2015strkStatusNone=>Fixed
    Fri Oct 10 10:04:10 2014strkStatusFixed=>None
    Fri Oct 10 09:43:57 2014strkStatusNeed Info=>Fixed
    Thu Jun 12 09:40:50 2014bjacquesStatusNone=>Need Info

    Back to the top

    Powered by Savane 3.1-cleanup1