Re: Threadsanitizer Detection on GM

Bob Friesenhahn <[email protected]> Mon, 25 Feb 2019 12:20:29 -0600 (CST)
Newsgroups gmane.comp.video.graphicsmagick.bugs
Message-ID <[email protected]>
On Mon, 25 Feb 2019, Hongxu Chen wrote:

> Sorry didn't notice the attachment size exceeds the allowed limit. Please
> see gist link instead.
> https://gist.github.com/HongxuChen/03ec5eb797af72609637fed77be86dfa

Feel free to send emails with large attachments you want me to see 
directly to my email address.

I do appreciate the open discussion on this mailing list.

>>     If the data races are real, they may be more relevant.
>>     One case is the read/write of "y_start" inside DrawPolygonPrimitive.
>> For example,
>> at line 5112, there is a write:
>>     y_start=(long) ceil(bounds.y1-0.5);
>> and at line 5123 there is a read:
>>     for (y=y_start; y <= y_stop; y++)
>>
>> So the essential is that whether "y_start" (and similarly others) is
>> shared.

The initial value of y_start is assigned outside of OpenMP loop 
context and I don't see it being updated within the loop.  The only 
possibility I could see is if OpenMP recursion is enabled (not the 
default) so that loops can produce subordinate loops.

I am not seeing a data race here.  What am I missing?

Bob
-- 
Bob Friesenhahn
[email protected], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/
Public Key,     http://www.simplesystems.org/users/bfriesen/public-key.txt