Программы C++ не работают с ASAN (AddressSanitizer:DEADLYSIGNAL)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Программы C++ не работают с ASAN (AddressSanitizer:DEADLYSIGNAL)

Сообщение Anonymous »

Я уже давно использую ASAN на C++, а теперь просто подключаюсь к ASAN и получаю DEADLYSIGNAL, выполняющий полученную программу. Например:
p.cpp:

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

 int main() { return 0; }
Компилирую:

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

$ c++ -o p p.cpp -fsanitize=address -fsanitize=undefined
Выполняю:

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

$ ./p
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer:DEADLYSIGNAL
Segmentation fault (core dumped)
Такое стало происходить на некоторых машинах. На машинах, где работает компиляция с ASAN, также работает исполняемый файл, скомпилированный с ASAN, на машине, где ASAN не работает, поэтому проблема не возникает внутри самого исполняемого файла.
Если я используйте одну очистку: sanitize=undefined или sanitize=address, она также работает, но комбинация обоих не работает. Конечно, и без какой-либо дезинфекции все работает нормально.
Моя настройка:

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

$ c++ --version
c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 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.
В Ubuntu 22.04.4.
gdb не позволяет отлаживать программы, скомпилированные с помощью ASAN, но вот его вывод, чего стоит:
В Ubuntu 22.04.4.
gdb не позволяет отладку программ, скомпилированных с помощью ASAN, но вот его вывод, чего стоит:
р>

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

$ gdb p
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from p...
(gdb) run
Starting program: /tmp/p
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
==432014==LeakSanitizer has encountered a fatal error.
==432014==HINT: For debugging, try setting environment variable LSAN_OPTIONS=verbosity=1:log_threads=1
==432014==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc)
[Inferior 1 (process 432014) exited with code 01]
(gdb) bt
No stack.
(gdb)
Примечания позже:
  • эту ошибку можно прекрасно воспроизвести, установив новую версию Ubuntu 22.04 и установив g++.
    на некоторых машинах требуется несколько попыток, прежде чем воспроизвести ее.
  • на данный момент у меня нет ни одной машины с Ubuntu 22.04, на которой эта ошибка не воспроизводилась.


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Программы C++ не работают с ASAN (AddressSanitizer:DEADLYSIGNAL)
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Что это значит, когда AddressSanitizer выводит ошибку, но не имеет обратной трассировки, а код выхода программы по-прежн
    Anonymous » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • C ++ UndefinedBehaviorsAnitizer: DeadlySignal [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • ОШИБКА: AddressSanitizer: параметр отрицательного размера: (размер = -4)
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Что именно означает ошибка AddressSanitizer «Присоединение к уже присоединенному потоку, прерывание»?
    Anonymous » » в форуме C++
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

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