<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64946>64946</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
False positive msan error with strtol and -std=c2x or _GNU_SOURCE
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tavianator
</td>
</tr>
</table>
<pre>
A recent glibc update added a new `strtol()` implementation to support the `0b` prefix from C23. This new symbol seems to be missing an interceptor:
```console
tavianator@graphene $ cat foo.c
#include <assert.h>
#include <stdlib.h>
int main(void) {
char *end;
long l = strtol("42", &end, 0);
assert(l == 42);
assert(*end == '\0');
return 0;
}
tavianator@graphene $ clang -fsanitize=memory foo.c -o foo && ./foo
tavianator@graphene $ clang -std=c2x -fsanitize=memory foo.c -o foo && ./foo
==58541==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x55994bbe00da in main (/home/tavianator/code/bfs/foo+0xb50da) (BuildId: 43c18b79db0838f533698c3e83e9322a882086d9)
#1 0x7f1a12c27ccf (/usr/lib/libc.so.6+0x27ccf) (BuildId: 316d0d3666387f0e8fb98773f51aa1801027c5ab)
#2 0x7f1a12c27d89 in __libc_start_main (/usr/lib/libc.so.6+0x27d89) (BuildId: 316d0d3666387f0e8fb98773f51aa1801027c5ab)
#3 0x55994bb4d134 in _start (/home/tavianator/code/bfs/foo+0x22134) (BuildId: 43c18b79db0838f533698c3e83e9322a882086d9)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/home/tavianator/code/bfs/foo+0xb50da) (BuildId: 43c18b79db0838f533698c3e83e9322a882086d9) in main
Exiting
tavianator@graphene $ clang -D_GNU_SOURCE -fsanitize=memory foo.c -o foo && ./foo
==58556==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x5643ee5720da in main (/home/tavianator/code/bfs/foo+0xb50da) (BuildId: 43c18b79db0838f533698c3e83e9322a882086d9)
#1 0x7f302fc27ccf (/usr/lib/libc.so.6+0x27ccf) (BuildId: 316d0d3666387f0e8fb98773f51aa1801027c5ab)
#2 0x7f302fc27d89 in __libc_start_main (/usr/lib/libc.so.6+0x27d89) (BuildId: 316d0d3666387f0e8fb98773f51aa1801027c5ab)
#3 0x5643ee4df134 in _start (/home/tavianator/code/bfs/foo+0x22134) (BuildId: 43c18b79db0838f533698c3e83e9322a882086d9)
SUMMARY: MemorySanitizer: use-of-uninitialized-value (/home/tavianator/code/bfs/foo+0xb50da) (BuildId: 43c18b79db0838f533698c3e83e9322a882086d9) in main
Exiting
tavianator@graphene $ nm -u foo | grep strtol
U __isoc23_strtol@GLIBC_2.38
tavianator@graphene $ clang --version
clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
tavianator@graphene $ /usr/lib/libc.so.6
GNU C Library (GNU libc) stable release version 2.38.
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 13.2.1 20230801.
libc ABIs: UNIQUE IFUNC ABSOLUTE
Minimum supported kernel: 4.4.0
For bug reporting instructions, please see:
<https://bugs.archlinux.org/>.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV1tv67gR_jX0y8ACRcq6PPjBl_jUQOKcJjGKfTIocWSzlUiDpBJnf31BSXbSvbRn24PtPmwQyMbc-M03M_JQOKeOGnFOZksyW09E50_Gzr14VUILb-ykNPJ9vgCLFWoPx0aVFXRnKTyCkBIlCND4BiSlzltvGsJywgqSUlDtucEWtRdeGQ3egOvOZ2M9-BMGB1oGs7PFWl2gtqaFFeMRwMtJuT6oe29L04BDbF3wLxFa5ZzSRxAalPZoKzx7YwlfELom9PpM6fBfGe1Mg4P0IymS0KMV5xNqBMISqISH2pioGt0ZV7pqOolA-Eo4h9ZHJ8LvfkntvGxU-VndP5X20AqlCctfjZKEFUCy5aCD8a86CQuELVBLwn-ia4w-QgOEr-ETryxhhDHCVkBYGtzYCmig--Y-oCUs732De3Apfhb_ZjecfzUmLCOzFQ0fv-Bk0XdWA70pSLb-j9w2Qh9hWjuhlVc_IuHrFltj3wfGYWrCl5APYSlEhG1qY74xqPOS8HXFLv9d_CHnWT5L4uHr3xZPu-3uC-ELeOhjPI9BQ4NB53Bq6mmnVRCKRv2Icvoqmm7sLyCMU6CX2awokrJESqUApfs2gJ7pzcm0SNjmU2JsUxkZZGXtRmxsSS_ljErRNw3Ll51q5FYGCAmv4rzMClnSnOf1jPO0yCuOOceCMybynNE8lUUo3q1yhPEY6CWrYxGzimVVVY9wOhcANKocnlXkTJT25_dWPz-fx6mkkqdpyvOsppjXZZFnGa9nsRBxTmPKsmomyp-ezz6fL_Mi0HI4hCMPzgvrD584-negZF58P1D8o1aJjHnSg-rh_NZqMRbz5DtUa3g-7x8eFk8__OYu_P177NrdA-67i_JKH79xdteHL7v94flx_7S6-x_Hd5Z-l_EduqKf4DThiLOM_dEmmFNW_z8neDz_DzXBfa0SWf85wb_XBOsWpt0wltkKjhbP1x1lKM4eDgflTMX4YZQn9Mv9drk6sIjn3_h-mL6idcqMyAbhKIJ4FtEoGzQvwh7Rh7QveXpIk-m5mjZKd5fpUXejycmikNAaiU0wPBunLoNqq50XTYNyrfra3Lq3vHLy60B_tdN7vy-7PazgXpVW2PdQoCAINoF150XZIFhsUDi85RXoiQb3lTm_W3U89Z28Cj6MMg4biwjPpvZvwiJsTKdlv12HRXCrq-iasHKgHNTB2o3WhC_DJt0v3850tkKojYXKnN_DQl0ZLVUI5W5B0GKIsnuEN2Gt0P49xNDGA76i7r0f7p5Wf1nsXhbL7f325QcwFjbbl93d8zNsHp9gnIevi6eX7Wp_v3iCr_unr4_Pd7cs27NqUEL5Dj1hq48a84hFcZ81zWk8OvTXj8Vy60Kx9rvtX_d3sN3sdytYLJ8f7_cv4xL-oLRqu_Z640AJ_0Crh_InURLRwWxjLJTdESwGq0CD0s7bruqJCKSehwo5xI87Bl-dvD8HCIRtQq90RxcJW536vouMPQY5vyZ5u41M5JzLghdigvM4LViepFnKJ6d5TpNZRSmncYUFTxATHmc8SZjMsrxi5UTNBx5YQnnMEh6JOkmSWtA4Fhgj5ySh2ArVRE3z2gYEE-Vch_M0KZJ00ogSG9ff8RgLF6teGW4Ss_XEzoPPNCRBEtoo591HFK98g_ONaBz2Y-PVK0LrhAa01lh4U_40Dj8ILT-v5MbCp5_4SWeb-b_SdlT-1JVRZdowPc3r9WN6tubvWHnCNj3O8Mbr8_hnAAAA__-oUlVd">