Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
2 / 2 / 0
Регистрация: 04.05.2010
Сообщений: 93

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

24.04.2025, 08:41. Показов 18214. Ответов 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
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,270
24.04.2025, 09:08
Для чего это тебе?
0
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,005
24.04.2025, 09:40
Zerg1, достаточно короткая ?

C++
1
int main(){throw;}
0
Злостный нарушитель
 Аватар для Verevkin
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,270
24.04.2025, 11:43
Цитата Сообщение от Алексей1153 Посмотреть сообщение
достаточно короткая ?
Ты проверял, эффект есть?
0
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,005
24.04.2025, 12:15
Verevkin, падает же. Проверить он и сам сможет
0
Злостный нарушитель
 Аватар для Verevkin
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,270
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
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,270
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 / 136
Регистрация: 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,010
25.04.2025, 06:59
Zerg1, а весь текст "подробностей проблемы" имеется?
Там на картинке (из первого поста) внизу видно (по части текста), что ошибка под кодом 5.
Это может быть (в каком-то виде) ошибка доступа к памяти или (в крайнем случае, но это вряд ли "наша" ситуация) проблемы с оперативкой (глючная / работающая неправильно).
0
Злостный нарушитель
 Аватар для Verevkin
10242 / 5670 / 1260
Регистрация: 12.03.2015
Сообщений: 26,270
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
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,005
25.04.2025, 13:31
Цитата Сообщение от Zerg1 Посмотреть сообщение
ни STL
а что мешает? Без него накосячить намного реальнее

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

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

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

1
599 / 421 / 136
Регистрация: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru