Где достать MSVCR80.dll, version 8.0.50727.4016
От: Glenn  
Дата: 23.07.10 12:02
Оценка:
У меня есть программа на Visual C++ 2005. Она падает на компьютере моего клиента с таким сообщением в Application Log'е:

EventID: 0x000003E8 "Faulting application MyApp.exe, version 2.0.0.2, time stamp 0x4babd8fc, faulting module MSVCR80.dll, version 8.0.50727.4016, time stamp 0x49cc5361, exception code 0xc000000d, fault offset 0x00014ba1,
process id 0xd568, application start time 0x01cb28dc2e8366e0."

Я хочу взять MSVCR80.dll, загрузить её в дизассемблер (например IDA) и посмотреть чот находится по этому адресу 0x00014ba1 — возможно это даст мне ключ к пониманию проблемы. Однако у меня нет именно этой версии 8.0.50727.4016; есть версия 8.0.50727.4053. Откуда можно скачать MSVCR80.dll версии 8.0.50727.4016?
Glen
Re: Где достать MSVCR80.dll, version 8.0.50727.4016
От: bnk СССР http://unmanagedvisio.com/
Дата: 23.07.10 13:20
Оценка:
Здравствуйте, Glenn, Вы писали:

G>У меня есть программа на Visual C++ 2005. Она падает на компьютере моего клиента с таким сообщением в Application Log'е:


G>EventID: 0x000003E8 "Faulting application MyApp.exe, version 2.0.0.2, time stamp 0x4babd8fc, faulting module MSVCR80.dll, version 8.0.50727.4016, time stamp 0x49cc5361, exception code 0xc000000d, fault offset 0x00014ba1,

G>process id 0xd568, application start time 0x01cb28dc2e8366e0."

G>Я хочу взять MSVCR80.dll, загрузить её в дизассемблер (например IDA) и посмотреть чот находится по этому адресу 0x00014ba1 — возможно это даст мне ключ к пониманию проблемы. Однако у меня нет именно этой версии 8.0.50727.4016; есть версия 8.0.50727.4053. Откуда можно скачать MSVCR80.dll версии 8.0.50727.4016?


IMHO, ничего это тебе не даст, даже если все совпадет до последней цифры.
А IDA — это (IMHO) вообще идея из области фантастики.

Я бы рекомендовал просто попросить твоего клиента сделать и прислать тебе крэш дамп (чтобы тебе потом тупо открыть его студией, чтобы увидеть, где упало)
Благо начиная с Vista мега-фича появилась — теперь можно писать дампы, просто добавив ключ реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\MyApp.exe


Ну или же "отлаживаться принтфами" по старинке (вести лог)

Еще вариант, спросить какая у него система, поставить точно такую же у себя на виртуалке, и посмотреть как твоя прога падает.
Re[2]: Где достать MSVCR80.dll, version 8.0.50727.4016
От: Glenn  
Дата: 24.07.10 12:43
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Glenn, Вы писали:


G>>У меня есть программа на Visual C++ 2005. Она падает на компьютере моего клиента с таким сообщением в Application Log'е:


G>>EventID: 0x000003E8 "Faulting application MyApp.exe, version 2.0.0.2, time stamp 0x4babd8fc, faulting module MSVCR80.dll, version 8.0.50727.4016, time stamp 0x49cc5361, exception code 0xc000000d, fault offset 0x00014ba1,

G>>process id 0xd568, application start time 0x01cb28dc2e8366e0."

G>>Я хочу взять MSVCR80.dll, загрузить её в дизассемблер (например IDA) и посмотреть чот находится по этому адресу 0x00014ba1 — возможно это даст мне ключ к пониманию проблемы. Однако у меня нет именно этой версии 8.0.50727.4016; есть версия 8.0.50727.4053. Откуда можно скачать MSVCR80.dll версии 8.0.50727.4016?


bnk>IMHO, ничего это тебе не даст, даже если все совпадет до последней цифры.

bnk>А IDA — это (IMHO) вообще идея из области фантастики.

bnk>Я бы рекомендовал просто попросить твоего клиента сделать и прислать тебе крэш дамп (чтобы тебе потом тупо открыть его студией, чтобы увидеть, где упало)

bnk>Благо начиная с Vista мега-фича появилась — теперь можно писать дампы, просто добавив ключ реестра :up:

bnk>

bnk>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\MyApp.exe


bnk>Ну или же "отлаживаться принтфами" по старинке (вести лог)


bnk>Еще вариант, спросить какая у него система, поставить точно такую же у себя на виртуалке, и посмотреть как твоя прога падает.


'А IDA — это (IMHO) вообще идея из области фантастики.' — как раз это мне помогло. Я получил у клиента ту самую версию DLL, открыл её IDA, перешёл на тот адрес fault offset 0x00014ba1 и ясно увидел что дело было в функции wcscpy_s: она получила неправильный аргумент и завершила мою программу в соответствии с правилами принятыми при Parameter Validation. Конечно, я не знаю какой именно из моих вызовов wcscpy_s привёл к проблеме; но это уже некий ключ.

'Благо начиная с Vista мега-фича появилась' — за эту информацию спасибо. А если этая моя программа — сервис, дамп тоже будет записан?
Glen
Re[3]: Где достать MSVCR80.dll, version 8.0.50727.4016
От: bnk СССР http://unmanagedvisio.com/
Дата: 24.07.10 14:29
Оценка:
Здравствуйте, Glenn, Вы писали:

G>Конечно, я не знаю какой именно из моих вызовов wcscpy_s привёл к проблеме; но это уже некий ключ.


Ага, точно, еще какой ключ! Теперь ты знаешь, что это косяк в твоей проге, а не в микрософтовской либе, гы-гы-гы

G>'Благо начиная с Vista мега-фича появилась' — за эту информацию спасибо. А если этая моя программа — сервис, дамп тоже будет записан?


Да. Только папка куда файл дампа будет записан для сервиса (по умолчанию) отличается.
Там все написано, RTFM.
Re[3]: Где достать MSVCR80.dll, version 8.0.50727.4016
От: Аноним  
Дата: 02.08.10 07:50
Оценка:
Здравствуйте, Glenn, Вы писали:

G>'А IDA — это (IMHO) вообще идея из области фантастики.' — как раз это мне помогло.


Однако.

dbghelp.lib + SetUnhandledExceptionFilter() для получение дампа памяти при падении, можно же и автоматом его отсылать.

WinDbg (или VS) + debug symbols — для анализа дампа.

Получить дебаг символы для dll проще, чем саму dll найти, и с такой странной версией, к тому же.

P.S.
официальные были 762, 4053

какой-то недообновленный комп получается
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.