Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2021, 16:49   #1
Салага
Пользователь
 
Регистрация: 03.03.2018
Сообщений: 17
По умолчанию Segmentation fault при выходе из функции.

Здравствуйте.

Подскажите, пожалуйста, в какую сторону стоит копать, когда падает программа при выходе из функции?
Всё обложил логированием и вижу, что именно после return программа падает.
В чём может быть суть?
Салага вне форума Ответить с цитированием
Старый 08.12.2021, 16:57   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Код покажите или секрет?
ForenLi вне форума Ответить с цитированием
Старый 08.12.2021, 17:12   #3
Салага
Пользователь
 
Регистрация: 03.03.2018
Сообщений: 17
По умолчанию

Код огромный и коммерческий.

В голову приходит только одно - мы где-то затираем адрес возврата из функции. Переполнение буфера где-то. Как понять можно где?
Салага вне форума Ответить с цитированием
Старый 08.12.2021, 17:17   #4
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

А также выход за границы массива, неправильная адресная арифметика, ошибка в каком-то деструкторе, операторе копирования/перемещения, ...
Прогоните статическим анализатором или включите адрессанитайзер.
ForenLi вне форума Ответить с цитированием
Старый 08.12.2021, 17:20   #5
Салага
Пользователь
 
Регистрация: 03.03.2018
Сообщений: 17
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
адрессанитайзер
А что это за инструмент такой?
Салага вне форума Ответить с цитированием
Старый 08.12.2021, 17:29   #6
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

https://docs.microsoft.com/en-us/cpp...?view=msvc-170
https://clang.llvm.org/docs/AddressSanitizer.html
ForenLi вне форума Ответить с цитированием
Старый 09.12.2021, 06:50   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

Цитата:
Сообщение от Салага Посмотреть сообщение
В чём может быть суть
в неопределённом поведении

без кода сложно сказать, где именно.
Сначала пройтись статическим анализатором на максималках (это может быть шокирующим приключением, однако)
Если логами не ловится, значит тихо портится память, а стреляет в каком-нибудь деструкторе.

Делаем новую ветку проекта в GIT, определяем, после какого действия появляется ошибка. Затем понемногу вырезаем функционал, пока ошибка не "пропадает". Последнее вырезанное - скорее всего примерная локализация бага

Но довольно часто помогает просто запуск на отладку без точек останова - дебаггер умеет останавливаться на некоторых сомнительных манипуляциях с памятью
Алексей1153 вне форума Ответить с цитированием
Старый 09.12.2021, 09:28   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Обычно это неправильные указатели или выход индекса за границы массива.
Неправильные указатели в 90% связаны с утечкой памяти или Обращение к удаленному объекту.

Выход за пределы массива проверяется, к примеру с использованием ключа
https://codeforces.com/blog/entry/13875
Или статического анализатора кода
https://pvs-studio.com/ru/blog/terms/0071/

Утечки памяти ловим как описано в статье:
https://pro-prof.com/forums/topic/cpp_memory_leaks

Так же для прочих проблем с указателями стоит овладеть динамическим анализатором кода Valgrind.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При удалении класса происходит segmentation fault gunsoy Общие вопросы C/C++ 24 19.08.2015 20:27
C++ vector segmentation fault Misa Помощь студентам 4 08.01.2015 19:02
Segmentation fault Hemul Общие вопросы C/C++ 7 16.08.2011 03:23
QT4 segmentation fault jojahti Qt и кроссплатформенное программирование С/С++ 6 06.01.2010 09:57
GCL и segmentation fault. jojahti Свободное общение 0 14.09.2009 19:20