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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Stefan Huelswitt wrote:
> On 12 Mar 2005 Wolfgang Fritz <wolfgang.fritz@xxxxxxx> wrote:
> 
> 
>>Graphlcd crashes with segfault when stopping an MP3 replay because it
>>calls cMP3Control::GetIndex after the MP3 player object is already
>>destroyed.
>>
>>Reason: MP3 plugin signals end of replay too late. The attaches patch
>>fixes it.
> 
> 
> 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.

Wolfgang

> Regards.
> 




[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux