[libcxx-commits] [libcxx] [libc++] Speed up classic locale (PR #72112)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Nov 27 08:04:33 PST 2023
ldionne wrote:
> This caused the following error on bots.
>
> @ldionne perhaps classic_locale_imp_ should be constinit?
>
> https://lab.llvm.org/buildbot/#/builders/168/builds/17053
>
> ```
> ==1639930==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x7f9576845828 at pc 0x7f95767c189d bp 0x7fff76544cb0 sp 0x7fff76544ca8
> WRITE of size 8 at 0x7f9576845828 thread T0
> #0 0x7f95767c189c in __shared_count /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/shared_ptr.h:160:11
> #1 0x7f95767c189c in facet /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__locale:150:11
> #2 0x7f95767c189c in std::__1::locale::__imp::__imp(unsigned long) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/locale.cpp:169:7
> #3 0x7f95767c4382 in __emplace<unsigned int> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__utility/no_destroy.h:41:19
> #4 0x7f95767c4382 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/locale.cpp:554:40
> #5 0x7f95767c4382 in std::__1::locale::classic() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/locale.cpp:552:69
> #6 0x7f95767cae5d in __global /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/locale.cpp:561:33
> #7 0x7f95767cae5d in std::__1::locale::locale() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/locale.cpp:575:39
> #8 0x7f95767309f2 in std::__1::basic_streambuf<char, std::__1::char_traits<char>>::basic_streambuf() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/streambuf:314:35
> #9 0x7f9576762283 in __stdinbuf /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/std_stream.h:76:21
> #10 0x7f9576762283 in std::__1::DoIOSInit::DoIOSInit() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/iostream.cpp:124:59
> #11 0x7f9576762e23 in std::__1::ios_base::Init::Init() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/iostream.cpp:161:22
> #12 0x7f9576766450 in __cxx_global_var_init /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/iostream_init.h:2:31
> #13 0x7f9576766450 in _GLOBAL__I_000100 /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/iostream.cpp
> #14 0x7f9576a0f33d (/lib64/ld-linux-x86-64.so.2+0x533d) (BuildId: cc23bad777ae59d26be0445659cd1c94244d6bc7)
> #15 0x7f9576a0f427 (/lib64/ld-linux-x86-64.so.2+0x5427) (BuildId: cc23bad777ae59d26be0445659cd1c94244d6bc7)
> #16 0x7f9576a26e0f (/lib64/ld-linux-x86-64.so.2+0x1ce0f) (BuildId: cc23bad777ae59d26be0445659cd1c94244d6bc7)
>
> 0x7f9576845828 is located 8 bytes inside of global variable 'std::__1::locale::__imp::classic_locale_imp_' defined in '/b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/libcxx/src/locale.cpp' (0x7f9576845820) of size 312
> registered at:
> #0 0x557b4c0dae06 in __asan_register_globals /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_globals.cpp:369:3
> #1 0x557b4c0dbf29 in __asan_register_elf_globals /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_globals.cpp:352:3
> #2 0x7f9576a0f33d (/lib64/ld-linux-x86-64.so.2+0x533d) (BuildId: cc23bad777ae59d26be0445659cd1c94244d6bc7)
>
> SUMMARY: AddressSanitizer: initialization-order-fiasco /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/shared_ptr.h:160:11 in __shared_count
> Shadow bytes around the buggy address:
> 0x7f9576845580: 00 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 00
> 0x7f9576845600: f9 f9 f9 f9 00 f9 f9 f9 01 f9 f9 f9 00 f9 f9 f9
> 0x7f9576845680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 0x7f9576845700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 0x7f9576845780: 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 f9 f9
> =>0x7f9576845800: 00 f9 f9 f9 f6[f6]f6 f6 f6 f6 f6 f6 f6 f6 f6 f6
> 0x7f9576845880: f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6
> 0x7f9576845900: f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6
> ```
Thanks for the heads up. See https://github.com/llvm/llvm-project/pull/73533
https://github.com/llvm/llvm-project/pull/72112
More information about the libcxx-commits
mailing list