[LLVMbugs] [Bug 23786] New: msan false negative on a trivial uninitialized read

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Jun 8 13:30:56 PDT 2015


            Bug ID: 23786
           Summary: msan false negative on a trivial uninitialized read
           Product: compiler-rt
           Version: 3.6
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: compiler-rt
          Assignee: unassignedbugs at nondot.org
          Reporter: msebor at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Memory sanitizer doesn't report the uninitialized read in the call to printf in
the program below.  It does, however, report the uninitialized read of the same
object in the return statement when it's executed.  Similar false negatives can
be reproduced with similarly simple programs, including the one below the test

$ cat t.c && /build/llvm-trunk/bin/clang -fsanitize=memory -O0 t.c && ./a.out
&& echo SUCCESS && ./a.out 1
#include <stdio.h>

void __attribute__ ((weak)) foo (int *p) { *p = *p + 1; }

int main (int argc, char *argv[]) {
    int a;
    int *p = &a;

    foo (p);

    printf ("%i\n", *p);

    if (1 < argc) return *p;
==32134==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x7fb8d6ce0946  (/build/msan/a.out+0x88945)
    #1 0x7fb8d5b4ffe0  (/lib64/libc.so.6+0x1ffdf)
    #2 0x7fb8d6c7135f  (/build/msan/a.out+0x1935e)

SUMMARY: MemorySanitizer: use-of-uninitialized-value

Another program for which the sanitizer does't issue a diagnostic:

#include <stdlib.h>

void __attribute__ ((weak)) bar (int n) { exit (n | 1); }

int main (int argc, char *argv[]) {
    int a;

    bar (a);

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150608/80b58d08/attachment.html>

More information about the llvm-bugs mailing list