https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82109
Bug ID: 82109 Summary: False positive when using pthread_cleanup_push() and pthread_cancel() Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: mephi42 at gmail dot com CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, marxin at gcc dot gnu.org Target Milestone: --- Created attachment 42131 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42131&action=edit minimal reproducible example The attached program generates what I believe is a false positive: WRITE of size 4096 thread T1 #1 in cleanup_routine (asan_pthread_cancel) #2 in start_routine (asan_pthread_cancel) #3 in start_thread (libpthread.so) #4 in __clone (libc.so) The reason seems to be that ASAN does not zero out shadow memory bytes set by sleep_routine() when pthread_cancel() is called, which then overlap text variable in cleanup_routine().