2 / 2 / 0
Регистрация: 04.05.2010
Сообщений: 93

Короткая функция на си/си++, вызывающая в win10 appcrash приложения

24.04.2025, 08:41. Показов 18671. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Короткая функция на си/си++, вызывающая в win10 appcrash приложения. То есть чтобы приложение не тихо выходило в ОС, а появлялось оконце.
Миниатюры
Короткая функция на си/си++, вызывающая в win10 appcrash приложения  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2025, 08:41
Ответы с готовыми решениями:

Класс, созданный в DLL, не хочет удалятся из вызывающего приложения
Привет! Приведу пример проблеммы на тестовом примере. Создаю DLL при помощи визарда: С++...

Как отследить ошибку, вызывающую выгрузку приложения?
Всем здравствуйте. Приложение, работающее с Com-портом, после нескольких суток непрерывной...

Падает то не падает) APPCRASH StackHash PCH FROM ntdll
При работе приложения вызывается метод класса и с вероятностью 50/50 программа доживает до конца...

34
Злостный нарушитель
 Аватар для Verevkin
10249 / 5676 / 1262
Регистрация: 12.03.2015
Сообщений: 26,311
24.04.2025, 09:08
Для чего это тебе?
0
фрилансер
 Аватар для Алексей1153
6449 / 5644 / 1129
Регистрация: 11.10.2019
Сообщений: 15,024
24.04.2025, 09:40
Zerg1, достаточно короткая ?

C++
1
int main(){throw;}
0
Злостный нарушитель
 Аватар для Verevkin
10249 / 5676 / 1262
Регистрация: 12.03.2015
Сообщений: 26,311
24.04.2025, 11:43
Цитата Сообщение от Алексей1153 Посмотреть сообщение
достаточно короткая ?
Ты проверял, эффект есть?
0
фрилансер
 Аватар для Алексей1153
6449 / 5644 / 1129
Регистрация: 11.10.2019
Сообщений: 15,024
24.04.2025, 12:15
Verevkin, падает же. Проверить он и сам сможет
0
Злостный нарушитель
 Аватар для Verevkin
10249 / 5676 / 1262
Регистрация: 12.03.2015
Сообщений: 26,311
24.04.2025, 12:31
Цитата Сообщение от Алексей1153 Посмотреть сообщение
падает же. Проверить он и сам сможет
То, что падает - понятно. Но цель-то - шоб окно вылезло вот это вот, со скриншота.
0
Заблокирован
24.04.2025, 13:26
[тут было НЛО]
0
2 / 2 / 0
Регистрация: 04.05.2010
Сообщений: 93
24.04.2025, 14:11  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
int main(){throw;}
это не работает, как и abort() и прочее. программа просто выходит молча в ОС. А нужно именно окно апкрэша.

компилюсь под win10 gcc 12.2.0
моё приложение консольное

для чего это нужно? Консольный сервер работает, но по какой-то пока не установленной причине может внезапно на ровном киле упасть. Может день проработать, а может и 2 недели, но потом все равно крашится. Причем утечек нет, я проверял дебагцрт. Если бы он просто молча выходил в ОС, или как-то гуманно завершался, то нет проблем. Я написал другую программу ("пошевелятор"), которая если не находит первый процесс, то запускает его экзешник снова. Даже, потом усилил пошевелятор, который условно раз в три минуты создаёт файлик, а сервер его ежеминутно трёт. Таким образом если пошевелятор перед созданием видит этот нестертый файл, то значит сервер умер. Но схемка не работает. Сервер падает с аппкрашем, и видимо это не дает прибить его процесс программно и перезапустить заново. Хочется смоделировать ситуацию и научиться самому прибивать это дурацкое окно.
0
Злостный нарушитель
 Аватар для Verevkin
10249 / 5676 / 1262
Регистрация: 12.03.2015
Сообщений: 26,311
24.04.2025, 14:42
Цитата Сообщение от Zerg1 Посмотреть сообщение
Причем утечек нет, я проверял дебагцрт.
Приложение может крашится не только от утечек памяти.

Добавлено через 3 минуты
Цитата Сообщение от Zerg1 Посмотреть сообщение
Хочется смоделировать ситуацию и научиться самому прибивать это дурацкое окно.
Не надо делать ещё один костыль, чтобы научиться прибивать старый костыль. Надо писать в лог действия программы (например) и понаставить в разных местах всяких ассёртов. Это постепенно сузит объём поисков бага. Да, на это нужно время, но это правильный джедайский путь.
0
Заблокирован
24.04.2025, 15:48
Лучший ответ Сообщение было отмечено Zerg1 как решение

Решение

Цитата Сообщение от Zerg1 Посмотреть сообщение
Если бы он просто молча выходил в ОС
Windows Batch file
1
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting" /v "DontShowUI" /t REG_DWORD /d 1 /f
Будет падать тихо, наверное.
Если это не .NET приложение. Там могут быть свои правила.
1
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,796
Записей в блоге: 1
24.04.2025, 17:08
Короткое по бинарному коду или кол-ву символов в исходнике?

C
1
int main() {char* t=0; return (*t = 0);}
Под линухой делает именно то, что требуется:
Bash
1
2
3
4
5
6
%Rizen53600% cat 12.cpp
int main() {char* t=0; return (*t = 0);}
Rizen53600% gcc 12.cpp
Rizen53600% ./a.out
zsh: segmentation fault (core dumped)  ./a.out
Rizen53600%
0
2 / 2 / 0
Регистрация: 04.05.2010
Сообщений: 93
25.04.2025, 00:48  [ТС]
Цитата Сообщение от drfaust Посмотреть сообщение
Короткое по бинарному коду или кол-ву символов в исходнике?
по исходному тексту, простая функция, которую можно вызвать - и каюк.
Цитата Сообщение от drfaust Посмотреть сообщение
int main() {char* t=0; return (*t = 0);}
это тоже выходит по-тихому, без окошка из скрина

Добавлено через 1 минуту
Цитата Сообщение от SmallEvil Посмотреть сообщение
Будет падать тихо, наверное.
Если это не .NET приложение. Там могут быть свои правила.
спасибо! это уже применил, жду не дождусь падения. приложуха не .NET

Добавлено через 4 минуты
Цитата Сообщение от Verevkin Посмотреть сообщение
Не надо делать ещё один костыль, чтобы научиться прибивать старый костыль
согласен, но сервер должен работать любой ценой, поэтому пока так
Цитата Сообщение от Verevkin Посмотреть сообщение
Надо писать в лог действия программы (например)
есть там у меня свой логгер, всё логит и на консоль и в файл. но из лога причину падения понять нельзя, на ровном киле, кувырк и фсйо. иногда когда он просто сидит на порту и ничего не делает, ждёт коннекта.
Цитата Сообщение от Verevkin Посмотреть сообщение
понаставить в разных местах всяких ассёртов. Это постепенно сузит объём поисков бага. Да, на это нужно время, но это правильный джедайский путь.
я джедай, но понять бы на что их ставить. скорее всего просто пишет в память что-то куда нельзя. но как это понять где. исходник тыщ 12 строк.
0
Заблокирован
25.04.2025, 01:15
Цитата Сообщение от Zerg1 Посмотреть сообщение
но как это понять где. исходник тыщ 12 строк.
Применить статический анализатор.
Сделать рефакторинг кода потенциально опасных мест.

Сервер переписать на службу.
ОС имеет механизмы для их перезапуска после сбоя.
Всё это ляжет на ОС.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,012
25.04.2025, 06:59
Zerg1, а весь текст "подробностей проблемы" имеется?
Там на картинке (из первого поста) внизу видно (по части текста), что ошибка под кодом 5.
Это может быть (в каком-то виде) ошибка доступа к памяти или (в крайнем случае, но это вряд ли "наша" ситуация) проблемы с оперативкой (глючная / работающая неправильно).
0
Злостный нарушитель
 Аватар для Verevkin
10249 / 5676 / 1262
Регистрация: 12.03.2015
Сообщений: 26,311
25.04.2025, 08:02
Цитата Сообщение от Zerg1 Посмотреть сообщение
скорее всего просто пишет в память что-то куда нельзя.
Вероятно, да.
Цитата Сообщение от Zerg1 Посмотреть сообщение
но как это понять где. исходник тыщ 12 строк.
Туды, где нет работы с динамической памятью, не ставить. 12к строк - это совсем немного. Прога написана нс С++?
0
2 / 2 / 0
Регистрация: 04.05.2010
Сообщений: 93
25.04.2025, 13:23  [ТС]
кстати, а как если сервер в консольном окошке вывалится по ассерту, узнать что за ассерт сработал? Окно же сразу закроется
Цитата Сообщение от SmallEvil Посмотреть сообщение
Применить статический анализатор.
Сделать рефакторинг кода потенциально опасных мест.
какой порекомендуешь? желательно самый простой в юзании, для идиотов, бесплатный
Цитата Сообщение от Verevkin Посмотреть сообщение
Туды, где нет работы с динамической памятью, не ставить. 12к строк - это совсем немного. Прога написана нс С++?
прога написана строго говоря на си с классами. И с компилятором я там выше ошибся, зачем-то написал gcc12, но сорян, это другие проекты. Этот сервер компилится msvc60, в командной строке. Сделал давно ещё обрезок компилятора для консольных прог (50 метров в архиве), оч удобно. Переводить его на что-то современнее мне лень. Кстати
Цитата Сообщение от gunslinger Посмотреть сообщение
а весь текст "подробностей проблемы" имеется?
Там на картинке (из первого поста) внизу видно (по части текста), что ошибка под кодом 5.
Дык, что добавить и не знаю. Консольное приложение, msvc60. Ничего не использует, ни MFC, ни STL, ничего. Сидит на порту, ждет подключение клиентов и обменивается с ними сообщениями по tcp/ip. Памяти много не ем, по возможности стараюсь обходится локальными массивами на стеке. Если что-то надо побольше, малочу вручную и стараюсь сразу освободить далеко не отходя от кассы.
0
фрилансер
 Аватар для Алексей1153
6449 / 5644 / 1129
Регистрация: 11.10.2019
Сообщений: 15,024
25.04.2025, 13:31
Цитата Сообщение от Zerg1 Посмотреть сообщение
ни STL
а что мешает? Без него накосячить намного реальнее

Добавлено через 1 минуту
Zerg1, можно попробовать поймать "в лоб":

1) запустить без точек останова в режиме отладки. С некоторой вероятностью отладчик остановится там, где возникает ошибка

2) можно наделать вывод в лог/консоль сообщения из некоторых контрольных точек программы. Будет видно, где программа упала в обморок
1
Злостный нарушитель
 Аватар для Verevkin
10249 / 5676 / 1262
Регистрация: 12.03.2015
Сообщений: 26,311
25.04.2025, 13:45
Цитата Сообщение от Zerg1 Посмотреть сообщение
кстати, а как если сервер в консольном окошке вывалится по ассерту, узнать что за ассерт сработал? Окно же сразу закроется
Ну я тя умоляю, ты не айтишник, штоли?

1
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,796
Записей в блоге: 1
25.04.2025, 15:43
Цитата Сообщение от Zerg1 Посмотреть сообщение
Консольное приложение, msvc60.
Я так понимаю прога 32битная и выполняется в 64битной системе благодаря syswow64.

Была такая шляпа в 64битной 10ке - после каких-то обнов начали 32битные игры валиться в 0xc0000005. У всех по разному, но у всех была ломаная 10ка. Сам с клиентом WoT столкнулся - пришлось ставить лицензионную 7ку и обновлять до 10ки (тогда и лицензия 7шная подхватывалась) - теперь у меня халявная уже 11я
1
Заблокирован
25.04.2025, 15:48
Цитата Сообщение от Zerg1 Посмотреть сообщение
Сообщение от SmallEvil
Применить статический анализатор.
Сделать рефакторинг кода потенциально опасных мест.
какой порекомендуешь? желательно самый простой в юзании, для идиотов, бесплатный
Например CppCheck.
Но если честно, я им не пользовался. Может есть что и лучше и поновее.

Проверил папку с некоторыми исходниками с форума. Довольно забавное зрелище)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2025, 15:48
Помогаю со студенческими работами здесь

[MySQL] AppCrash при mysql_fetch_row()
Прошу помощи, проблема такова: при инжекте .dll в процесс сам процесс крашится, ни в каком виде не...

Ошибка APPCRASH после запуска программы
помогите исправить проблему в dev++ компилирует без ошибок а при запуске программы выдает это ...

Как правильно создать несколько потоков, вызывающий одну и ту же функцию?
Пробовал так: ... #include "process.h" ... __fastcall TForm1::TForm1(TComponent* Owner) :...

в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант!
Собсно //Это типа служебного класса. (Внимание! В оригинальном коде он вложен в класс xx,...

Передача массива вызывающей функции
Как можно передать массив целиком в вызывающую функцию? И можно ли сделать так: есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru