[WNDPROC] assert + __crtMessageBox
От: IROV..  
Дата: 19.09.15 14:43
Оценка:
в программе, внутри питона PyString_FromString

сработал асерт

assert(str != NULL);

сработал так сработал, для этого он и стоял.

Но!

дальше произошли интересные события.

  Call Stack
7fe8f43b() Unknown
[Frames below may be incorrect and/or missing]
WinApplication.exe!Menge::Node::renderChild_(const Menge::RenderViewportInterface * _viewport=0x04f835cc, const Menge::RenderCameraInterface * _camera=0x0500e89c, unsigned int _debugMask=0) Line 1034 C++
WinApplication.exe!Menge::Node::render(const Menge::RenderViewportInterface * _viewport=0x04f835cc, const Menge::RenderCameraInterface * _camera=0x0500e89c, unsigned int _debugMask=0) Line 946 C++
WinApplication.exe!Menge::Player::render() Line 1395 C++
WinApplication.exe!Menge::Game::render() Line 239 C++
WinApplication.exe!Menge::Application::paint() Line 2283 C++
WinApplication.exe!Menge::WinApplication::wndProc(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=15, unsigned int wParam=0, long lParam=0) Line 2387 C++
WinApplication.exe!Menge::s_wndProc(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=15, unsigned int wParam=0, long lParam=0) Line 2282 C++
user32.dll!_InternalCallWinProc@20() Unknown
user32.dll!_UserCallWinProcCheckWow@32() Unknown
user32.dll!_DispatchClientMessage@24() Unknown
user32.dll!___fnDWORD@4() Unknown
ntdll.dll!777a010a() Unknown
user32.dll!_NtUserCallHwndLock@8() Unknown
user32.dll!_UpdateWindow@4() Unknown
WinApplication.exe!Menge::WinApplication::wndProcInput(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=1025, unsigned int wParam=0, long lParam=0, int & _result=-858993460) Line 2563 C++
WinApplication.exe!Menge::WinApplication::wndProc(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=1025, unsigned int wParam=0, long lParam=0) Line 2529 C++
WinApplication.exe!Menge::s_wndProc(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=1025, unsigned int wParam=0, long lParam=0) Line 2282 C++
user32.dll!_InternalCallWinProc@20() Unknown
user32.dll!_UserCallWinProcCheckWow@32() Unknown
user32.dll!_SendMessageWorker@24() Unknown
user32.dll!_SendMessageW@16() Unknown
WinApplication.exe!Menge::WinMouseEvent::verify(HWND__ * _hWnd=0x002d0b1c) Line 45 C++
WinApplication.exe!Menge::WinApplication::wndProcInput(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=275, unsigned int wParam=1, long lParam=0, int & _result=-858993460) Line 2554 C++
WinApplication.exe!Menge::WinApplication::wndProc(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=275, unsigned int wParam=1, long lParam=0) Line 2529 C++
WinApplication.exe!Menge::s_wndProc(HWND__ * hWnd=0x002d0b1c, unsigned int uMsg=275, unsigned int wParam=1, long lParam=0) Line 2282 C++
user32.dll!_InternalCallWinProc@20() Unknown
user32.dll!_UserCallWinProcCheckWow@32() Unknown
user32.dll!_DispatchMessageWorker@8() Unknown
user32.dll!_DispatchMessageW@4() Unknown
user32.dll!_DialogBox2@16() Unknown
user32.dll!_InternalDialogBox@24() Unknown
user32.dll!_SoftModalMessageBox@4() Unknown
user32.dll!_MessageBoxWorker@4() Unknown
user32.dll!_MessageBoxTimeoutW@24() Unknown
user32.dll!_MessageBoxExW@20() Unknown
user32.dll!_MessageBoxW@16() Unknown
WinApplication.exe!__crtMessageBoxW(const wchar_t * lpText=0x0039f320, const wchar_t * lpCaption=0x01f09460, unsigned int uType=73746) Line 250 C
WinApplication.exe!_wassert(const wchar_t * expr=0x02046d28, const wchar_t * filename=0x02046ca8, unsigned int lineno=120) Line 351 C
> WinApplication.exe!PyString_FromString(const char * str=0x00000000) Line 120 C


как мы видим произошла обработка wndProc, зачем? и как это лечить?

в конце концов вызвалось вот это
WinApplication.exe!Menge::Node::renderChild_(

и всем стало плохо
я не волшебник, я только учусь!
Re: [WNDPROC] assert + __crtMessageBox
От: Alexander G Украина  
Дата: 19.09.15 15:35
Оценка: 4 (1)
Здравствуйте, IROV.., Вы писали:

IRO>как мы видим произошла обработка wndProc, зачем?


Показалось окно Assertion Falied с кнопками Abort, Retry, Ignore.
Оно через функцию MessageBox, которая внутри себя крутит оконный цикл, обрабатывающий сообщения всех окон текущей нити.

IRO>и как это лечить?


Поведение assertions настраивается, можно Message Box заменить на что-либо иное.
Русский военный корабль идёт ко дну!
Re[2]: [WNDPROC] assert + __crtMessageBox
От: IROV..  
Дата: 20.09.15 20:21
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Здравствуйте, IROV.., Вы писали:


IRO>>как мы видим произошла обработка wndProc, зачем?


AG>Показалось окно Assertion Falied с кнопками Abort, Retry, Ignore.

AG>Оно через функцию MessageBox, которая внутри себя крутит оконный цикл, обрабатывающий сообщения всех окон текущей нити.
Странно что за годы ловли мессадж бокса не было такой ситуации, починил место где это падало, добавил проверку что если идет апдейт то не рендерить.
я не волшебник, я только учусь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.