[vdr] 1.3.27 with NPTL: (wapd) always crashes at shutdown

Ville Skyttä ville.skytta at iki.fi
Mon Jun 20 21:41:36 CEST 2005


On Mon, 2005-06-20 at 15:47 +0200, Udo Richter wrote:
> Ville Skyttä wrote:
> > The culprit seems to be cWapServer::Action() in server.c, which I tried
> > to convert to use cCondWait::SleepMs() instead of usleep(), and added an
> > "active" boolean into the class that would control the while loop in
> > Action() and that would be set to false in the destructor, but those
> > changes did not help.
> 
> (without taking any close look at the source code)
> I assume this is a main while loop in a cThread. Stopping a thread from
> within the destructor is quite risky, as the object is already partially
> destructed, and if you dont explicitly wait for the thread to finish,
> the object may be gone before the thread ends.
> 
> The best way is to stop the thread before the object gets destroyed,
> using some thread.Stop(). The right place for stopping threads is in
> cPlugin::Stop().

Okay, I think I may have got it, thanks.  The attached patch seems to
fix the crash here.  Dunno if the usleep changes were actually necessary
but since I already had them available...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vdr-wapd-nptl.patch
Type: text/x-patch
Size: 2110 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/vdr/attachments/20050620/b4690674/vdr-wapd-nptl.bin


More information about the vdr mailing list