[PATCH] fix segfault in cSkins::Message

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

 



Wolfgang Rohdewald wrote:
> On Sonntag 31 Juli 2005 18:29, Klaus Schmidinger wrote:
> 
>>>Does vdr have a way to notice if a background thread accesses the
>>>OSD?
>>
>>A background thread should never access the OSD directly.
> 
> 
> I do understand that. I just think it might be helpful to not
> simply say it is forbidden but to enforce it instead of
> segfaulting.
> 
> Considering the enormous amount of plugins there will always be
> some plugin developers trying to do forbidden things and if a
> user tells them "sometimes vdr restarts but I have no idea why"
> it is almost impossible to debug that.
> 
> If you take my original two patches you could do
> 
>  void cSkinClassicDisplayMessage::Flush(void)
>  {
>   if (osd)
>          osd->Flush();
>   else
> 	     warn: background thread is not allowed to access osd
>  }

You don't _know_ that this is because of a background thread.
Besides, I'd hate to have to check 'osd' all over the place
(and every plugin that implements a skin would have to do the same).

I guess I'll simply put a test into cSkinDisplay::cSkinDisplay()
that aborts in case it gets called from a thread other than the
foreground thread.

> Otherwise I believe I understand what you propose and it seems
> to be a good solution to me.

Ok, so I'll implement it that way.

Klaus


[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