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


bug #42416: deadlock on exit

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

Add a New Comment(Rich Markup)

You are not logged in

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


( 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>
Project 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>
Project 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>
Project 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>
Project MemberIn charge of this item.
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>
Project 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>
Project 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>
Project 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>
Project Member
Sat 24 May 2014 08:31:10 PM UTC, comment #2:

Can you please provide steps to reproduce?

Bastiaan Jacques <bjacques>
Project MemberIn charge of this item.
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>
Project 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>
Project 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)

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

    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.3