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