<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/54131>54131</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            msan: stat() result is seen as uninitialized (st_size)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          vstinner
      </td>
    </tr>
</table>

<pre>
    The following code fails with ``use-of-uninitialized-value``:

```
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    struct stat st;
    printf("sizeof(struct stat) = %zd\n", sizeof(struct stat));
    int fd = open(__FILE__, O_RDONLY);
    if (fd < 0) {
        return 1;
    }
    if (fstat(fd, &st)) {
        return 1;
    }
    if (st.st_size > 1) {
        return 2;
    }
    close(fd);
    return 0;
}
```

Output:

```
$ clang x.c -o x -fsanitize=memory && ./x; echo $?
sizeof(struct stat) = 144
==134123==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x49d9e5 in main (/home/vstinner/python/main/x+0x49d9e5)
    #1 0x7f874ea5355f in __libc_start_call_main (/lib64/libc.so.6+0x2d55f)
    #2 0x7f874ea5360b in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2d60b)
    #3 0x41c344 in _start (/home/vstinner/python/main/x+0x41c344)

SUMMARY: MemorySanitizer: use-of-uninitialized-value (/home/vstinner/python/main/x+0x49d9e5) in main
Exiting
1
```

I tested on Fedora 35 with versions:

```
$ clang --version
clang version 13.0.0 (Fedora 13.0.0-3.fc35)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

$ rpm -q clang
clang-13.0.0-3.fc35.x86_64
```

Issue discovered in Python: https://bugs.python.org/issue46887
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVVtvozoQ_jXkxQKBDSQ88NAmzapSL6vuHh3tE3KwCV45OItNm_bX79gmTdJusxdkGfB4vvnmZq8Uey6_thw1Skr1JLo1qhWDXyqkRk_CtCjIYxiD5qFqwqETnTCCSvHCWfhI5cC9PCAXQbwI4v3sF2H4X0xEV8sBkAMy1886wEttqInagFz9aktTd0Z-KAUW2rAPxSAT6ljqZtEZtKGiC_AswMUomV76DwSPNv1QG2R5wRSQI9G2B-3GaWINriv7fbQfAMHwAgU4e2FBNgcjOMBz9MFeO47hLbWGOQS15ZZhVS2vb66qyoLcVw-L-7ubb--0GrA3c3pzFDsKx-7Yp-dm6DuUnOgF08U7EE8MwKzBAOd6pPnvkNpE2lQ2AMDvCvafAcMfg9VSaT4yO3V_1I1fF1_13hafm-8Hsx3M78o0BYMUmmAX1ShUaIfCRlNb8S8csrPhG9U_2_jAQBEU8Q6sI163ChbTgCw9zrkSSdJ0NEYWMBKSJpj47_8vHu6u7z4BR3TrLH0ZTfd26UwHHkKHSYziXVqwgmdQVq7gkavbZas2EMjlozai6wASL7fPplVQbUvfFuAMvtwrv7bICJsA7LSZTVNOM5JljQWvKilWdQXe9aaqqZTVkTkQ5al_15FWUe7AMQPdt9j4GDuPV--wHb80_nRzfTmvcISj7DdGAOStEWLjktQkTR28A_7byDj1w-Hh5i__3d5ePHz766T9a1b2WfXWr3YA2639T3Km_K-R4dpwhlSHlpypniKS-QP-kfdaqE7_aW-E4ajhBX5xXEIJieIots6NVvxCSKKmJoeq-kr7NbfdiHazvMrTsOespSaUoht24bobxm1tzylDG7iSpN28VVrsRoc6SKGUnC2EizREatA2fqt9bA68--0GhT88_SPS4Qm3yDM5F0OtIW9M6FqBuxBLSMVnny0g0BqzdTHES8tiWOvIpzJS_RpWhNVO89lsOmElYQUp6MQII3m5gSPGIoyHsE1yz_UgDRIaac47RDU6KSF_wLrTFXZPhl6Wp-bXkNhhFdVqY7tDPu5f4bZX33lt9nzsRZylCUkmbck5zXGO4cVoSoosLuCsItmqKYppvSKziaQrLnUZZJdwvXX8CTkIe9Vli4kocYxxTOIkSUmS5hFpCOENm-W0wHjGODQwh8KVkeVhYzLpS0fJhgqEEu50fRBSrcW649yZA3w6QCz7ct8oE2e7dNx_Atl1glQ">