[mythtv-commits] Ticket #10926: Deadlock on mythfrontend (was: Deadlock on mythfrontend on first start)

MythTV noreply at mythtv.org
Sat Jul 21 06:44:49 UTC 2012


#10926: Deadlock on mythfrontend
----------------------------------------+-----------------------------
 Reporter:  jyavenard                   |          Owner:
     Type:  Bug Report - Hang/Deadlock  |         Status:  new
 Priority:  blocker                     |      Milestone:  0.26
Component:  MythTV - General            |        Version:  Unspecified
 Severity:  medium                      |     Resolution:
 Keywords:                              |  Ticket locked:  0
----------------------------------------+-----------------------------
Changes (by jyavenard):

 * priority:  critical => blocker


Old description:

> Fresh, new, blank system as per #10925.
> Create new mythconverg database
> run mythtv-setup and create a basic system (capture card, etc..)
> run mythbackend
>
> start mythfrontend
> it prompts you to choose your language.
> Save and mythfrontend now hangs.
>
> It is deadlocked
> {{{
> void MythPainter::DeleteFormatImage(MythImage *im)
> {
>     m_allocationLock.lock();
>     DeleteFormatImagePriv(im);
> }}}
>
> on m_allocationLock.lock();
>
> {{{
> (gdb) bt full
> #0  0x00007fff8bc900fa in __psynch_cvwait ()
> No symbol table info available.
> #1  0x00007fff86c85fc9 in _pthread_cond_wait ()
> No symbol table info available.
> #2  0x0000000105df9f5b in QMutexPrivate::wait ()
> No symbol table info available.
> #3  0x0000000105df520c in QMutex::lockInternal ()
> No symbol table info available.
> #4  0x00000001029ba377 in MythPainter::DeleteFormatImage
> (this=0x10a62d7a0, im=0x110266d70) at mythpainter.cpp:521
> No locals.
> #5  0x00000001029be060 in MythImage::~MythImage (this=0x110266d70) at
> mythimage.cpp:59
> No locals.
> #6  0x00000001029cb0e5 in MythQtImage::~MythQtImage (this=0x110266d70) at
> mythpainter_qt.cpp:15
> No locals.
> #7  0x00000001029ca7b5 in MythQtImage::~MythQtImage (this=0x110266d70) at
> mythpainter_qt.cpp:15
> No locals.
> #8  0x00000001029ca7d8 in MythQtImage::~MythQtImage (this=0x110266d70) at
> mythpainter_qt.cpp:15
> No locals.
> #9  0x00000001029ca85c in non-virtual thunk to
> MythQtImage::~MythQtImage() () at mythpainter_qt.cpp:15
> No symbol table info available.
> #10 0x0000000102787b64 in ReferenceCounter::DecrRef (this=0x110266d88) at
> referencecounter.cpp:147
>         val = 0
> #11 0x00000001029be21e in MythImage::DecrRef (this=0x110266d70) at
> mythimage.cpp:73
>         cached = false
>         cnt = 134942768
> #12 0x00000001029b686b in MythPainter::ExpireImages (this=0x10a62d7a0,
> max=0) at mythpainter.cpp:569
>         oldmsg = {
>   d = 0x110292000
> }
>         it = {
>   i = 0x1080b1030
> }
>         oldim = (MythImage *) 0x110266d70
>         recompute = false
> #13 0x00000001029b62e3 in MythPainter::~MythPainter (this=0x10a62d7a0) at
> mythpainter.cpp:28
>         locker = {
>   val = 4469217233
> }
> #14 0x00000001029c9be2 in MythQtPainter::~MythQtPainter
> (this=0x10a62d7a0) at mythpainter_qt.cpp:65
> No locals.
> #15 0x00000001029c9b65 in MythQtPainter::~MythQtPainter
> (this=0x10a62d7a0) at mythpainter_qt.cpp:63
> No locals.
> #16 0x00000001029c9b18 in MythQtPainter::~MythQtPainter
> (this=0x10a62d7a0) at mythpainter_qt.cpp:63
> No locals.
> #17 0x00000001029a128c in MythMainWindow::ReinitDone (this=0x10a60d170)
> at mythmainwindow.cpp:1248
> No locals.
> #18 0x000000010000f60a in reloadTheme () at main.cpp:1230
>         themename = {
>   d = 0x108514d40
> }
>         themedir = {
>   d = 0x1083d4020
> }
>         lcd = (LCD *) 0x100000000000001
> #19 0x000000010000ced8 in main (argc=10, argv=0x7fff5fbff9f0) at
> main.cpp:1613
>         bPromptForBackend = false
>         cmdline = {
>   <MythCommandLineParser> = {
>     _vptr$MythCommandLineParser = 0x1003df560,
>     m_appname = {
>       d = 0x10731d3c0
>     },
>     m_optionedArgs = {
>       {
>         d = 0x10731d950,
>         e = 0x10731d950
>       }
>     },
>     m_namedArgs = {
>       {
>         d = 0x10731d890,
>         e = 0x10731d890
>       }
>     },
>     m_passthroughActive = false,
>     m_overridesImported = true,
>     m_verbose = false
>   }, <No data fields>}
>         fileprefix = {
>   d = 0x108345580
> }
>         bonjour = {
>   d = 0x10a6266f0
> }
>         lcd = (LCD *) 0x0
>         themename = {
>   d = 0x108514d40
> }
>         mainWindow = (MythMainWindow *) 0x10a60d170
>         sysEventHandler = (MythSystemEventHandler *) 0x0
>         signallist = {
>   {
>     p = {
>       d = 0x10a04e650
>     },
>     d = 0x10a04e650
>   }
> }
>         handler = {
>   <QObject> = {
>     _vptr$QObject = 0x1028882b0,
>     d_ptr = {
>       d = 0x10a04d490
>     }
>   },
>   members of SignalHandler:
>   m_notifier = 0x10a04d560,
>   m_sigMap = {
>     {
>       d = 0x10830a7f0,
>       e = 0x10830a7f0
>     }
>   }
> }
>         retval = 0
>         themedir = {
>   d = 0x108062fe0
> }
>         themeUpdateChecker = (ThemeUpdateChecker *) 0x0
>         bBypassAutoDiscovery = false
>         mon = (MediaMonitor *) 0x0
>         ret = 32767
>         callCleanup = {
>   m_cleanFunction = 0x10000ed00 <cleanup>
> }
>         ResetSettings = false
>         dir = {
>   d_ptr = {
>     d = 0x10a625130
>   }
> }
>         networkControl = (NetworkControl *) 0x0
>         bcm = {
>   <QObject> = {
>     _vptr$QObject = 0x0,
>     d_ptr = {
>       d = 0x0
>     }
>   },
>   members of BackendConnectionManager:
>   m_reconnecting = 0x0,
>   m_reconnect_timer = 0x0
> }
> #20 0x000000010000b0e4 in start ()
> No symbol table info available.
> }}}

New description:

 Fresh, new, blank system as per #10925.
 Create new mythconverg database
 run mythtv-setup and create a basic system (capture card, etc..)
 run mythbackend

 start mythfrontend
 it prompts you to choose your language.
 Save and mythfrontend now hangs.

 It is deadlocked
 {{{
 void MythPainter::DeleteFormatImage(MythImage *im)
 {
     m_allocationLock.lock();
     DeleteFormatImagePriv(im);
 }}}

 on m_allocationLock.lock();

 {{{
 (gdb) bt full
 #0  0x00007fff8bc900fa in __psynch_cvwait ()
 No symbol table info available.
 #1  0x00007fff86c85fc9 in _pthread_cond_wait ()
 No symbol table info available.
 #2  0x0000000105df9f5b in QMutexPrivate::wait ()
 No symbol table info available.
 #3  0x0000000105df520c in QMutex::lockInternal ()
 No symbol table info available.
 #4  0x00000001029ba377 in MythPainter::DeleteFormatImage
 (this=0x10a62d7a0, im=0x110266d70) at mythpainter.cpp:521
 No locals.
 #5  0x00000001029be060 in MythImage::~MythImage (this=0x110266d70) at
 mythimage.cpp:59
 No locals.
 #6  0x00000001029cb0e5 in MythQtImage::~MythQtImage (this=0x110266d70) at
 mythpainter_qt.cpp:15
 No locals.
 #7  0x00000001029ca7b5 in MythQtImage::~MythQtImage (this=0x110266d70) at
 mythpainter_qt.cpp:15
 No locals.
 #8  0x00000001029ca7d8 in MythQtImage::~MythQtImage (this=0x110266d70) at
 mythpainter_qt.cpp:15
 No locals.
 #9  0x00000001029ca85c in non-virtual thunk to MythQtImage::~MythQtImage()
 () at mythpainter_qt.cpp:15
 No symbol table info available.
 #10 0x0000000102787b64 in ReferenceCounter::DecrRef (this=0x110266d88) at
 referencecounter.cpp:147
         val = 0
 #11 0x00000001029be21e in MythImage::DecrRef (this=0x110266d70) at
 mythimage.cpp:73
         cached = false
         cnt = 134942768
 #12 0x00000001029b686b in MythPainter::ExpireImages (this=0x10a62d7a0,
 max=0) at mythpainter.cpp:569
         oldmsg = {
   d = 0x110292000
 }
         it = {
   i = 0x1080b1030
 }
         oldim = (MythImage *) 0x110266d70
         recompute = false
 #13 0x00000001029b62e3 in MythPainter::~MythPainter (this=0x10a62d7a0) at
 mythpainter.cpp:28
         locker = {
   val = 4469217233
 }
 #14 0x00000001029c9be2 in MythQtPainter::~MythQtPainter (this=0x10a62d7a0)
 at mythpainter_qt.cpp:65
 No locals.
 #15 0x00000001029c9b65 in MythQtPainter::~MythQtPainter (this=0x10a62d7a0)
 at mythpainter_qt.cpp:63
 No locals.
 #16 0x00000001029c9b18 in MythQtPainter::~MythQtPainter (this=0x10a62d7a0)
 at mythpainter_qt.cpp:63
 No locals.
 #17 0x00000001029a128c in MythMainWindow::ReinitDone (this=0x10a60d170) at
 mythmainwindow.cpp:1248
 No locals.
 #18 0x000000010000f60a in reloadTheme () at main.cpp:1230
         themename = {
   d = 0x108514d40
 }
         themedir = {
   d = 0x1083d4020
 }
         lcd = (LCD *) 0x100000000000001
 #19 0x000000010000ced8 in main (argc=10, argv=0x7fff5fbff9f0) at
 main.cpp:1613
         bPromptForBackend = false
         cmdline = {
   <MythCommandLineParser> = {
     _vptr$MythCommandLineParser = 0x1003df560,
     m_appname = {
       d = 0x10731d3c0
     },
     m_optionedArgs = {
       {
         d = 0x10731d950,
         e = 0x10731d950
       }
     },
     m_namedArgs = {
       {
         d = 0x10731d890,
         e = 0x10731d890
       }
     },
     m_passthroughActive = false,
     m_overridesImported = true,
     m_verbose = false
   }, <No data fields>}
         fileprefix = {
   d = 0x108345580
 }
         bonjour = {
   d = 0x10a6266f0
 }
         lcd = (LCD *) 0x0
         themename = {
   d = 0x108514d40
 }
         mainWindow = (MythMainWindow *) 0x10a60d170
         sysEventHandler = (MythSystemEventHandler *) 0x0
         signallist = {
   {
     p = {
       d = 0x10a04e650
     },
     d = 0x10a04e650
   }
 }
         handler = {
   <QObject> = {
     _vptr$QObject = 0x1028882b0,
     d_ptr = {
       d = 0x10a04d490
     }
   },
   members of SignalHandler:
   m_notifier = 0x10a04d560,
   m_sigMap = {
     {
       d = 0x10830a7f0,
       e = 0x10830a7f0
     }
   }
 }
         retval = 0
         themedir = {
   d = 0x108062fe0
 }
         themeUpdateChecker = (ThemeUpdateChecker *) 0x0
         bBypassAutoDiscovery = false
         mon = (MediaMonitor *) 0x0
         ret = 32767
         callCleanup = {
   m_cleanFunction = 0x10000ed00 <cleanup>
 }
         ResetSettings = false
         dir = {
   d_ptr = {
     d = 0x10a625130
   }
 }
         networkControl = (NetworkControl *) 0x0
         bcm = {
   <QObject> = {
     _vptr$QObject = 0x0,
     d_ptr = {
       d = 0x0
     }
   },
   members of BackendConnectionManager:
   m_reconnecting = 0x0,
   m_reconnect_timer = 0x0
 }
 #20 0x000000010000b0e4 in start ()
 No symbol table info available.
 }}}

 This deadlock can be reproduce by simply going into Settings -> Theme
 Chooser and downloading another theme.

 Sometimes browsing Myth Videos will see the deadlock occurring too.

--

-- 
Ticket URL: <http://code.mythtv.org/trac/ticket/10926#comment:3>
MythTV <http://code.mythtv.org/trac>
MythTV Media Center


More information about the mythtv-commits mailing list