Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

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

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

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

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

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

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

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

Цитата:
Сообщение от 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
Сообщений: 668
По умолчанию

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

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

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

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

Обычно это неправильные указатели или выход индекса за границы массива.
Неправильные указатели в 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 вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При удалении класса происходит 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