Re: [PATCH] Add thread safety to cRingBufferLinear

Patrick Lerda <[email protected]> Mon, 06 Feb 2023 21:11:16 +0100
Newsgroups gmane.linux.vdr
Message-ID <[email protected]>
On 03/02/2023 10:36, Klaus Schmidinger wrote:
> On 02.02.23 23:47, [email protected] wrote:
>> On 02/02/2023 23:27, Klaus Schmidinger wrote:
>>> On 02.02.23 23:16, Patrick Lerda wrote:
>>>> Beside preventing crashes with vdr-2.6.3 this is required to
>>>> get vdr to work properly with the gcc thread sanitizer.
>>> 
>>> cRingBufferLinear was designed to be thread safe without locking.
>>> What "crashes with vdr-2.6.3" are you referring to?
>>> 
>>> Klaus
>> 
>> With a -fsanitize=thread compiled version of vdr, I had some crashes 
>> that happened quickly, for instance:
>> ...
> 
> Before making such deep changes to code that has been running 
> flawlessly for
> years (or even decades) I need to be convinced that this is absolutely
> necessary.
> 
> Is there a problem that occurs if you run VDR *without* 
> -fsanitize=thread?
> 
> Klaus

I had in the past a crash from time to time, with vdr-2.6.3 this seems 
to be worse. Anyway, I was checking with vdr-2.4.7 and the problem is 
the same. This class is shared by at least 2 threads with more than one 
shared object; this means that without a mutex, the behavior is 
undefined from a C++ perspective. With -fsanitize=thread the compiler 
could add some jitter and that seems to trigger quickly a crash. You 
should check in your environment with -fsanitize=thread, this is fastest 
way to check for thread safety.

Patrick

_______________________________________________
vdr mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr