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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 0xC0000005: Access violation 
:(
    Опции темы
Leopard25
Дата 30.5.2004, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



Программа работает нормально.

При выходе из программы
в компиляторе появляется сообщение.

First-chance exception at 0x77d4c2fc in Alisa2.exe: 0xC0000005: Access violation reading location 0x25b70f8c.

В чем может быть причина этого и как это исправить ? butbut.gif

Это исключение возникает только если загружена демоверсия переводчика: "Сократ Персональный 4.1"

Исключение возникает в "wincore.cpp" :

// The WndProc for all CWnd's and derived classes

LRESULT CALLBACK
AfxWndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
// special message which identifies the window as using AfxWndProc
if (nMsg == WM_QUERYAFXWNDPROC)
return 1;

// all other messages route through message map
CWnd* pWnd = CWnd::FromHandlePermanent(hWnd);
ASSERT(pWnd != NULL);
ASSERT(pWnd->m_hWnd == hWnd);

// В ЭТОЙ СТРОКЕ
return AfxCallWndProc(pWnd, hWnd, nMsg, wParam, lParam);
}
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
AndyY
Дата 30.5.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



проблема скорее всего в кривых хуках от сократа.
но решать такие проблемы все равно тебеsad.gif

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

и еще - поставь везде, где можно _heapchk() - она проверяет целостность памяти. Например, во все окна на WindowProc (перед и после вызова)
если станет валится на _heapchk - значит портится память, где-то запись по неинициализированному указателю или выход за границы массива.


--------------------
PM MAIL WWW   Вверх
Leopard25
Дата 30.5.2004, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



Я несовсем понял что делать.

Всё валится :

после OnCloseDocument() уходит в "wincore.cpp" (см.выше)

как посмотреть: есть ли в стеке при GPF сократские dll
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
AndyY
Дата 30.5.2004, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



стек вызова можно посмотреть в отладчике (в студии 6 это:
View/Debug Windows/Call Stack)
там будут адреса функций и названия модулей для тех модулей, для которых нет символьной информации, и названия функций для тех у которых нет.

например при старте программы стек выглядит так:
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f09, int 1) line 640
WinMainCRTStartup() line 198 + 54 bytes
KERNEL32! 77e7eb69()

нужно посмотреть стек во время падения (когда студия указывает ошибку в AfxCallWndProc).
В OnCloseDocument - однозначно проверку _heapchk();

А на какое окно указывает pWnd при вызове? может наведет на мысли какие-нибудь.



--------------------
PM MAIL WWW   Вверх
Leopard25
Дата 31.5.2004, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



Я пишу в VC++7 и как добраться до стека я ненашел.

При появлении ошибки выводятся загруженные библиотеки
и одна из строк:

"'Alisa2.exe': Loaded 'C:\Program Files\Arsenal Company\Сократ Персональный 4.1\SpvHook.dll', No symbols loaded."



При ошибке pWnd указывает на СMainFrame.


В OnCloseDocument делал так:

void CAlisa2Doc::OnCloseDocument()
{
_heapchk();
CDocument::OnCloseDocument();
_heapchk();
}

Это правильно? (ошибок здесь небыло)
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.