Asan аварийно завершает работу внутри libc++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Asan аварийно завершает работу внутри libc++

Сообщение Anonymous »

Немного предыстории:
Разработчики нашей команды используют в основном компьютеры Mac, а на целевых серверах работает Ubuntu. После того, как мы столкнулись с тонкими различиями в компиляторе и библиотеках между платформами, мы решили стандартизировать LLVM 17 по всем направлениям (clang, libc++, lldb, все работает).
До этого я использовал Apple Clang из инструментов командной строки Xcode и до сих пор установил его. После перехода я использую LLVM@17 от Homebrew
Продукт состоит из кода C++, связанного с несколькими сторонними библиотеками (grpc, redis, pqxx и т. д.), которые также были собраны локально из источник с использованием тех же инструментов. Наш код скомпилирован как -std=c++23, но некоторые библиотеки были скомпилированы в соответствии с предыдущим стандартом из-за несовместимости.
Проблема:
При создании исполняемого файла с помощью Address Sanitizer и его локальном запуске происходит сбой со следующим выводом:

Код: Выделить всё

/opt/homebrew/opt/llvm@17/bin/../include/c++/v1/__charconv/from_chars_integral.h:46:16: runtime error: call to function std::__1::from_chars_result std::__1::__from_chars_atoi[abi:ue170006](char const*, char const*, unsigned long long&) through pointer to incorrect function type 'std::from_chars_result (*)(const char *, const char *, unsigned long long &)'
(server:arm64+0x10083d154): note: std::__1::from_chars_result std::__1::__from_chars_atoi[abi:ue170006](char const*, char const*, unsigned long long&) defined here
#0 0x1011a4df4 in std::__1::from_chars_result std::__1::__sign_combinator[abi:ue170006](char const*, char const*, long long&, std::__1::from_chars_result (*)(char const*, char const*, unsigned long long&))+0x278 (server:arm64+0x1011a4df4)
#1 0x1011a4a7c in std::__1::from_chars_result std::__1::__from_chars_atoi[abi:ue170006](char const*, char const*, long long&)+0x188 (server:arm64+0x1011a4a7c)
#2 0x102730a90 in pqxx::internal::integral_traits::from_string(std::__1::basic_string_view)+0x54 (server:arm64+0x102730a90)
#3 0x100748320 in long long pqxx::from_string(std::__1::basic_string_view)+0x1b4 (server:arm64+0x100748320)
[... more stack frames here ...]
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /opt/homebrew/opt/llvm@17/bin/../include/c++/v1/__charconv/from_chars_integral.h:46:16 in
Таких ошибок нет при запуске исполняемого файла без asan.
Аналогично, таких ошибок нет, когда исполняемый файл запускается в Ubuntu (целевой серверы, среда сборки или разработчики, использующие WSL2 под Windows)
Мысли:[/b]
Я подозреваю, что это могло иметь что-то связано с тем, что исполняемый файл загружает две версии Библиотеки libc++ и libc++abi (Apple/Xcode и Homebrew/LLVM).
При работе под отладчиком я вижу, что обе загружены:

Код: Выделить всё

Stop reason: Function type mismatch
Stop reason: signal SIGABRT
image list
[  0] 4C4C44F0-5555-3144-A1BA-7CD98681E0B4 0x0000000100000000 /Users/oren/work/server-2/build/server/server
[  1] 4CE86D18-F3FA-3D2A-A1B8-E7CD8A52FB0D 0x000000018c0de000 /usr/lib/dyld
[  2] 86BB7A29-1B92-38E5-A47D-7AD8FA8E9C19 0x00000001127bc000 /opt/homebrew/Cellar/llvm@17/17.0.6/lib/c++/libc++.1.0.dylib
[  3] 59CB7CE8-1EB3-3DBE-98C8-DB08E836312D 0x0000000112c64000 /opt/homebrew/Cellar/llvm@17/17.0.6/lib/clang/17/lib/darwin/libclang_rt.asan_osx_dynamic.dylib
... more lines ...
[ 42] 17A73968-9D77-3CC1-8382-84292D845617 0x0000000199fed000 /usr/lib/system/libunwind.dylib
[ 47] 6477CE88-B069-395C-B258-7C6162AD5257 0x000000018c407000 /usr/lib/libc++abi.dylib
[ 48] 6CCA803C-BBBE-3265-889E-AF4F60CAFD5D 0x000000026bee9000 /usr/lib/liboah.dylib
[ 49] FE5F2FBB-D3B5-30BC-BAD8-3571AC2A72A0 0x000000018c379000 /usr/lib/libc++.1.dylib
... many more lines ...
[301] 7AA0CBE1-6414-34F0-AE51-1071BE00C574 0x00000001125e0000 /opt/homebrew/Cellar/llvm@17/17.0.6/lib/c++/libc++abi.1.0.dylib
Кроме того, когда отладчик загружает программу, он жалуется на ошибки динамического приведения:
2025-01-23 14:13:13.845486-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. St9type_info, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv117__class_type_infoE.
2025-01-23 14:13:13.846495-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv120__si_class_type_infoE.
2025-01-23 14:13:13.846507-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv120__si_class_type_infoE.
2025-01-23 14:13:13.846718-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv120__si_class_type_infoE.
2025-01-23 14:13:13.846814-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv120__si_class_type_infoE.
2025-01-23 14:13:13.847835-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. St9type_info, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv117__class_type_infoE.
2025-01-23 14:13:13.851894-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv120__si_class_type_infoE.
2025-01-23 14:13:13.852247-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. St9type_info, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv117__class_type_infoE.
2025-01-23 14:13:13.888734-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv121__vmi_class_type_infoE, N10__cxxabiv121__vmi_class_type_infoE.
2025-01-23 14:13:13.915920-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. St9type_info, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv117__class_type_infoE.
[... program log entries here ...]
2025-01-23 14:13:14.010867-0500 server[13655:110398063] dynamic_cast error 2: One or more of the following type_info's has hidden visibility or is defined in more than one translation unit. They should all have public visibility. N10__cxxabiv117__class_type_infoE, N10__cxxabiv120__si_class_type_infoE, N10__cxxabiv120__si_class_type_infoE.
/opt/homebrew/opt/llvm@17/bin/../include/c++/v1/__charconv/from_chars_integral.h:46:16: runtime error: call to function std::__1::from_chars_result std::__1::__from_chars_atoi[abi:ue170006](char const*, char const*, unsigned long long&) through pointer to incorrect function type 'std::from_chars_result (*)(const char *, const char *, unsigned long long &)'
(server:arm64+0x10083d154): note: std::__1::from_chars_result std::__1::__from_chars_atoi[abi:ue170006](char const*, char const*, unsigned long long&) defined here
#0 0x1011a4df4 in std::__1::from_chars_result std::__1::__sign_combinator[abi:ue170006](char const*, char const*, long long&, std::__1::from_chars_result (*)(char const*, char const*, unsigned long long&))+0x278 (server:arm64+0x1011a4df4)
#1 0x1011a4a7c in std::__1::from_chars_result std::__1::__from_chars_atoi[abi:ue170006](char const*, char const*, long long&)+0x188 (server:arm64+0x1011a4a7c)
#2 0x102730a90 in pqxx::internal::integral_traits::from_string(std::__1::basic_string_view)+0x54 (server:arm64+0x102730a90)
#3 0x100748320 in long long pqxx::from_string(std::__1::basic_string_view)+0x1b4 (server:arm64+0x100748320)
[... more stack frames here ...]
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /opt/homebrew/opt/llvm@17/bin/../include/c++/v1/__charconv/from_chars_integral.h:46:16 in
< /code>
Эти динамические ошибки отливки также не появляются, когда я строю исполняемый файл без Asan. Хотя простое включение ASAN может нести ответственность за аварии, это не объяснило бы, почему это никогда не происходит на Ubuntu. Библиотеки под другой версией стандарта C ++ - виноваты. MacOS 15.2 (и также обновляется инструменты xcode и командной строки Xcode).
и исключить отладчик как виновник, аварий также происходит при запуске программы из оболочки.
Я в настоящее время отключил Asan для местных сборки, но вместо этого я бы предпочел исправить (или обойти). < /p>

Подробнее здесь: https://stackoverflow.com/questions/793 ... nside-libc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Android 14 аварийно завершает работу с libc OpenCV
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Python аварийно завершает работу с LD_PRELOAD и библиотекой ThreadSanitizer
    Гость » » в форуме Python
    0 Ответы
    173 Просмотры
    Последнее сообщение Гость
  • ReactJS аварийно завершает работу при запуске в докере
    Гость » » в форуме Javascript
    0 Ответы
    188 Просмотры
    Последнее сообщение Гость
  • Приложение аварийно завершает работу при использовании предварительно заполненной базы данных номеров.
    Гость » » в форуме Android
    0 Ответы
    196 Просмотры
    Последнее сообщение Гость
  • Api.video-flutter-live-stream iOS аварийно завершает работу после обновления до XCode 15 и CocoaPods 1.13.0
    Гость » » в форуме IOS
    0 Ответы
    108 Просмотры
    Последнее сообщение Гость

Вернуться в «C++»