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