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: NoneSeverity: 5 - Blocker
Release: NoneStatus: Invalid
Privacy: PublicAssigned 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 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 http://64.239.33.252/stats/SWFcounters/BubbleTroubleOS@BubbleTroubleOS.swf

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
http://strk.keybit.net/tmp/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 File(s):
   
   
Comment:
   

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 24 Jan 2015 09:04:00 PM UTCbjacquesStatusFixed=>Invalid
    Sat 24 Jan 2015 09:03:48 PM UTCstrkStatusNone=>Fixed
      Open/ClosedOpen=>Closed
    Fri 10 Oct 2014 10:04:10 AM UTCstrkStatusFixed=>None
      Open/ClosedClosed=>Open
    Fri 10 Oct 2014 09:43:57 AM UTCstrkStatusNeed Info=>Fixed
      Open/ClosedOpen=>Closed
    Thu 12 Jun 2014 09:40:50 AM UTCbjacquesStatusNone=>Need Info

    Back to the top


    Powered by Savane 3.1-cleanup1