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