Почему SIGABRT уничтожает программу командной строки?

¿Qué pasa con una variable? En tu.bashrc:

export p2013=~/Documents/Courses/EDX/physics2013/

Y luego en bash:

cd $p2013
1
09.07.2019, 20:55
1 ответ

На справочной странице signal(7)говорится:

Signal     Value     Action   Comment
──────────────────────────────────────────────────────────────────────
SIGABRT       6       Core    Abort signal from abort(3)

Иabort(3):

NAME
abort - cause abnormal process termination

DESCRIPTION
The  abort()  first  unblocks the SIGABRT signal, and then raises that
signal for the calling process (as though raise(3) was called).  This
results in the abnormal termination of the process

Таким образом, смерть от SIGABRT, скорее всего, происходит, когда сама программа решает, ну, прерваться. У него может быть некоторая проверка работоспособности данных и прерывание, если данные недействительны.

Макросassert()также вызывает abort(), и, как оказалось, ваше сообщение об ошибке содержит этот бит:

std::__cxx11::basic_string...: Assertion '__pos <= size()' failed.

, что, по-видимому, указывает на то, что недопустимое значение используется где-то в библиотеке C++, и есть проверка на невозможную ситуацию, которая срабатывает из-за недопустимых данных.

2
27.01.2020, 23:41

Теги

Похожие вопросы