Решено: APPCRASH как искать или как исправить?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Решено: APPCRASH как искать или как исправить?

Сообщение azsx »

У меня 15 виртуальных машин вин 7, 32 бита в квм, чистая установка. На них запущена одна программа на лазарус, которая запускает файл cmd (запуск видно на экране), затем обрабатывает текстовые файлы и пишет в бд постгрес. Где то за неделю запуска на 4 машинах вышла абсолютно одинаковая проблема:

Код: Выделить всё

Сигнатура проблемы:
  Имя события проблемы:   APPCRASH
  Имя приложения:   my.exe
  Версия приложения:   0.0.0.0
  Отметка времени приложения:   00000000
  Имя модуля с ошибкой:   KERNELBASE.dll
  Версия модуля с ошибкой:   6.1.7601.17514
  Отметка времени модуля с ошибкой:   4ce7b8f0
  Код исключения:   c00000fd
  Смещение исключения:   00008eb5
  Версия ОС:   6.1.7601.2.1.0.256.1
  Код языка:   1049
  Дополнительные сведения 1:   ebfd
  Дополнительные сведения 2:   ebfd5bd2b3c4cc86144ebbb6b30defe5
  Дополнительные сведения 3:   3823
  Дополнительные сведения 4:   3823584df2305eb591b9ad39486d7d62

В сети очень много написно по этой ошибке, чаще не решают ее никак. Советы, например: 1. очистить темп; 2. запустить от админа; 3. переставить винду; 4. - sfc /scannow в кмд; 5. переустановить директ х (которого у меня нет) и так далее. Короче, перебирают разные варианты.
Вопросы:
1. Сталкивался ли кто то с такой проблемой?
2. Есть ли какой то официальный ресурс, где по кодам ошибки можно искать официальные ответы?
Заранее спасибо за ответы.
-------------------
Решено наполовину. Я нашел проблему, она в файле нулевой длины. Дальше где то по коду программа зависала. Я не нашел из-за чего именно происходило зависание, а также не разобрался как по ошибке искать проблему. Просто обработал ошибку.
Последний раз редактировалось azsx 02.07.2016 11:01:32, всего редактировалось 1 раз.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

azsx писал(а):Где то за неделю запуска на 4 машинах вышла абсолютно одинаковая проблема


То есть, программа, один раз запущенная, неделю обрабатывала текстовые файлы и свалилась с этой ошибкой?
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

а "подсунуть" длл пробовали? : https://social.msdn.microsoft.com/Forums/vstudio/en-US/d9aaa309-7799-43c8-8b57-fce278a5be0e/kernelbasedll-error?forum=vcgeneral
Есть ли какой то официальный ресурс, где по кодам ошибки можно искать официальные ответы?
сдк мелких?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Код: Выделить всё

You can look up exception code 0xC00000FD in ntstatus.h, which can be found in the Microsoft Windows SDK and the Windows Driver Kit (WDK). This exception code is STATUS_STACK_OVERFLOW.
Т. е. это переполнение стека. Судя по всему,библиотека "течет".
azsx писал(а):Есть ли какой то официальный ресурс, где по кодам ошибки можно искать официальные ответы?


Вроде как кошерный ресурс https://msdn.microsoft.com
azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Сообщение azsx »

То есть, программа, один раз запущенная, неделю обрабатывала текстовые файлы и свалилась с этой ошибкой?

да. 4 программы из 15 программ в разных гостях упали.
а "подсунуть" длл пробовали?

Судя по всему в этой теме предлагают файлы MSVCR120.DLL and MSVCP120.DLL разместить в той же папке, что и программа? Боюсь это такое же гадание, как найденные мной в сети способы, но если чо - попробую.
Thanks for e-mailing the files. I reproduced the error. You need to redistribute the VC++ Runtime, specifically MSVCR120.DLL and MSVCP120.DLL, which are located in e.g. C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT. Put these files in the same folder as ConnectFour.exe. (You could also tell your users to run the redistributable installer that you can search for and download from Microsoft, but just copying these files is easier.)
These are the Release (not Debug) DLL’s. For these to work, you need to build the Release version of your program (not the Debug). This is a combobox in the VC++ toolbar.

сдк мелких?

тут беда, что я не понимаю. Вот установлю я microsoft windows sdk (не ставлю, так как там фреймворк 4 надо) и? Там можно по ошибке найти описание? У вас есть, вы не можете посмотреть, можно найти по коду ошибки описание чего случилось или нет?
Вроде как кошерный ресурс https://msdn.microsoft.com

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

течет библиотека kernelbase.dll? Что-то можно предпринять по этому поводу?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Если проблема с утечками, то может помочь автоматический перезапуск программы, например, раз в сутки. Мне на некоторых дельфийских "долгоиграющих" программах помогало.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

течет библиотека kernelbase.dll? Что-то можно предпринять по этому поводу?
пожаловаться мелким. И указать на их ошибку :mrgreen:
А в реальности - проверить свой код.
п.с.
Лекс Айрин отсюда стащили: https://msdn.microsoft.com/en-us/library/windows/hardware/ff540620(v=vs.85).aspx?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

azsx писал(а): Гадают что хотят.


Ну если сама майкросоофт не устраивает, то больше ресурсов нет.

pupsik писал(а):п.с.
Лекс Айрин отсюда стащили: https://msdn.microsoft.com/en-us/librar ... 20(v=vs.85).aspx?


ну да... посмотрел историю, именно отсюда


pupsik писал(а):пожаловаться мелким. И указать на их ошибку :mrgreen:


Скажут, ставьте новую версию WDK... и что там все исправлено... а то и вовсе скажут, что надо переходить на C# и вин10...

azsx писал(а):Нет, я хочу сайт (программу) в которую вводишь код ошибки, а она в ответ выплевывает из-за чего такое бывает и как решать.


на выбор : Гугл, Яндех, Бинг, Нигма... но если ошибка в чужой библиотеке, то здесь мало что можно сделать.
Последний раз редактировалось Лекс Айрин 18.06.2016 12:43:49, всего редактировалось 1 раз.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Скажут, ставьте новую версию WDK...
дык оно и на сях ругается, как я понимаю. А вот насчёт пошлют- это да..а.
но если ошибка в чужой библиотеке
нет гарантии что ошибка в ней... Т.е. код программы не известен, что она делает - только поверхностно. Вывод ошибки... Да..а мелкие их штампуют, а ошибка может быть иная. Можно попытаться просмотреть журналы. Может там полезное найдётся.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

pupsik писал(а):дык оно и на сях ругается, как я понимаю.


Ну так, библиотека на сях и написана...

pupsik писал(а): а ошибка может быть иная.


В ином месте, но ошибка именно та. Не стоит забывать, что ругнулась не программа, а библиотека... Это видно по выхлопу. Случай, когда библиотеке дали неверные данные это тоже ошибка библиотеки (нет проверки корректности данных). Конечно, может быть и ошибка в программе или можно будет исправить в программе... но сильно не похоже.

azsx, попробуйте в настройках проекта программы увеличить размер стека. Решение, в силу вполне понятных причин, не совсем корректное, но должно (по крайней мере) отодвинуть момент краха.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Случай, когда библиотеке дали неверные данные это тоже ошибка библиотеки..
офигительно. Т.е. в магазине вы заплатили фальшивками, а виноват торговец... Он заметил подвох.

Из того что известно:
1. "которая запускает файл cmd"
2. "(запуск видно на экране)"
3. " затем обрабатывает текстовые файлы"
4. " и пишет в бд постгрес"
5. "Где то за неделю запуска..."

И всё. ..
Вы советуете:
в настройках проекта программы увеличить размер стека
. Может нет такого в программе. Может это простая обработка файла через stringlist. И там все решено десятком строк. А может и куда сложнее.
Это всё гадания. Тем более, как я понимаю, вопрошающему необходим "мёд с ложкой"...
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

pupsik писал(а):Т.е. в магазине вы заплатили фальшивками, а виноват торговец... Он заметил подвох.


В этом случае, речь идет скорее об обсчете.

pupsik писал(а): Может нет такого в программе.

Получше курите маны. Библиотека выполняется, в контексте вызывающей программы (и использует ее стек).

pupsik писал(а):Может это простая обработка файла через stringlist. И там все решено десятком строк. А может и куда сложнее.


Текстовое представление ошибки говорит о переполнении стека, соответственно надо либо его увеличивать, либо перестроить размер так чтобы он расходовался менее интенсивно. И уже не так важно какая работа выполняется. Второй путь нам недоступен, так как библиотека скомпонована.
azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Сообщение azsx »

на самом деле у меня есть флаг с логированием по тексту программы (где приблизительно находится). Я логи включил на всех 15 программах, уже сутки прошли - сбоев нет. Поджидаю. Спасибо всем за советы, жаль что нет поиска по ошибкам. Стек пока я увеличивать не буду, так как не смог понять что это и почему мне не хватает стандартного (у меня рекурсий нет). На сколько поставить стек и какой из двух - соответственно также не понимаю. Перезапуск программы, возможно, если совсем не победю. Спасибо большое за ответы, я читаю всё.
Я реально использую stringlist. Типа сперва я определяю размер файла (я не обрабатываю файлы больше 100 мб), а затем читаю файл целиком в строку с помощью TStringList. Тут может быть утечка?
В день каждая программа обрабатывает не более 30 000 (может 50 тысяч) файлов разного размера.

Код: Выделить всё

function GetFileSize(FileName: String): Int64;
var
  FS: TFileStream;
begin
  try
    FS := TFileStream.Create(Filename, fmOpenRead);
  except
    Result := -1;
  end;
  if Result <> -1 then Result := FS.Size;
  FS.Free;
end;

function TextFileToString(const FName: TFileName): string;
var
  St: TStringList;
begin
  St:= TStringList.Create;
  try
    St.LoadFromFile(FName);
    Result:= St.Text
  finally
    St.Free
    end
end;   
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Типа сперва я определяю размер файла (я не обрабатываю файлы больше 100 мб), а затем читаю файл целиком в строку с помощью TStringList. Тут может быть утечка?
угу. Если быть точнее: это может стать поводом...
Построчное чтение из файла, или "кусками" не подойдут варианты?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>1. Сталкивался ли кто то с такой проблемой?
С багами в своих программах сталкиваются все регулярно))

>>2. Есть ли какой то официальный ресурс, где по кодам ошибки можно искать официальные ответы?
Сомневаюсь что там содержится чтото информативное. Копать надо в своем огороде.
Получить стек - отладить программу. Если стек не поможет - сделать подробный лог и ловить момент когда программа начинает вести себя нештатно

Добавлено спустя 1 минуту 6 секунд:
>>Тут может быть утечка?
Есть соответствующие инструменты для ловли утечек - ключик -gh
Ответить