странный бектрейс

olega

Программа падает с сегфолтом. Бектрейс имеет вид:

0x0000000000000000 in ?
0x000000000042c2e5 in <...> at <...>
0x000000000042b448 in <...> at <...>

Непонятно, откуда берется 0x0000000000000000. Как будто вместо вызова функции программа переходит по нулевому адресу! Что это такое и как с этим бороться?

okis

ты это в отладчике получил?
может память попортилась где, вот и ноль

Serab

что за прога, что за компилятор?
Вроде бы видел компиляторы плюсов, которые чистовиртуальные функции реализуют через нулевой указатель. Еще может быть просто баг: указатель на функцию нулевой вызвали.

olega

Это получено при анализе core-файла после падения. Если запускать прямо из-под gdb, результат тот же.

olega

Указатель на функцию там не используется, во всяком случае явно.
Компилятор "gcc version 4.6.3", прога на плюсах.
> чистовиртуальные функции реализуют через нулевой указатель
Жесть! Я всю жизнь думал, что это exception будет.

Maurog

Что это такое и как с этим бороться?
дебужить и медитировать над исходниками :grin:
пример из той же области: http://stackoverflow.com/questions/121326/what-does-the-gdb-...

Serab

так исходники есть?

Serab

Жесть! Я всю жизнь думал, что это exception будет.
UB

Papazyan

Непонятно, откуда берется 0x0000000000000000. Как будто вместо вызова функции программа переходит по нулевому адресу! Что это такое и как с этим бороться?
Память засрал в стеке или еще где-нибудь.

Werdna

Программа падает с сегфолтом.
Валгринд поможет, только разбирай прогу по частям.
На вид — загаженный стек.
Оставить комментарий
Имя или ник:
Комментарий: