[vdr] [PATCH] mp3-0.9.11 signals end of replay too late

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Wed Mar 16 18:15:54 CET 2005


Stefan Huelswitt wrote:
> On 15 Mar 2005 Wolfgang Fritz <wolfgang.fritz at gmx.net> wrote:
> 
> 
>>Stefan Huelswitt wrote:
>>
>>>Ok, I changed the location, but I think that the real flaw is in
>>>VDRs player.h where the "player" var isn't checked before access.
>>
>>If tested this (temporarily inserted a test for player == 0 in
>>player.h), but it didn't help.
>>
>>maybe
>>
>>void cMP3Control::Stop(void)
>>{
>>  delete player; player=0;
>>  mgr->Halt();
>>  mgr->Flush(); //XXX remove later
>>}
>>
>>has a concurrency problem? Who guarantees that no other thread
>>interrupts the mp3 thread while is in the destructor?
>>
>>Wouldn't be something like this a little bit safer:
>>
>>void cMP3Control::Stop(void)
>>{
>>  cMP3player *p = player;
>>  player = 0;
>>  delete p;
>>  mgr->Halt();
>>  mgr->Flush(); //XXX remove later
>>}
>>
>>There seem to be more concurrency problems which crop up with the
>>graphlcd plugin. In rare cases I get a segfault when exiting a normal
>>vdr replay.
> 
> 
> Of course it's a concurrency problem.
>>From the fact that there is no mutex protection for the player
> var (neither in MP3 plugin nor in any other player code), I would
> guess that the cControl API was designed for accesses from the
> VDR foreground thread only (no concurrency problem in this case).

That's right - a player is not supposed to be accessed from anything
else than the foreground thread.

Klaus

> If graphlcd is running on another thread, this could be the
> explanation...
> 
> Regards.
> 


-- 
_______________________________________________________________

Klaus Schmidinger                       Phone: +49-8635-6989-10
CadSoft Computer GmbH                   Fax:   +49-8635-6989-40
Hofmark 2                               Email:   kls at cadsoft.de
D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de
_______________________________________________________________



More information about the vdr mailing list