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().

Reply via email to