Saturday, March 27, 2010

Flash9.ocx frequent crashes with Flex...

We are developing a Flex 2 application, and are having a very
hard time getting the application to run consistently without
crashing the Flash9.ocx dll.



Since the dll itself crashes, we pretty much get no debugging
information. I have managed to track it down to Flash.ocx crashing
in response to a mouse move message, and need to get help resolving
this issue.



The current crash we get is the flash player crashing when
moving the mouse over the contents of a Flex application's VBox
control with a bunch of Flex CheckBox buttons in the container



This is using the 9.0.28 debug player:



In the debugger the call stack is as follows:



%26gt; FlDbg9b.ocx!3006c772()

[Frames below may be incorrect and/or missing, no symbols
loaded for FlDbg9b.ocx]

FlDbg9b.ocx!3008ee9f()

FlDbg9b.ocx!3009d9c6()

FlDbg9b.ocx!300c08b8()

FlDbg9b.ocx!300c103d()

FlDbg9b.ocx!300ad5f9()

FlDbg9b.ocx!300ad994()

user32.dll!77d48734()

user32.dll!77d48816()

user32.dll!77d4c63f()

user32.dll!77d4e905()

App.exe!CWnd::DefWindowProcA(unsigned int nMsg=512, unsigned
int wParam=0, long lParam=24904274) Line 1035 + 0x13 bytes C++

App.exe!CWnd::WindowProc(unsigned int message=512, unsigned
int wParam=0, long lParam=24904274) Line 1742 + 0x13 bytes C++

App.exe!AfxCallWndProc(CWnd * pWnd=0x00000000, HWND__ *
hWnd=0x001206a8, unsigned int nMsg=512, unsigned int wParam=0, long
lParam=24904274) Line 243 C++

App.exe!AfxWndProc(HWND__ * hWnd=0x001206a8, unsigned int
nMsg=512, unsigned int wParam=0, long lParam=24904274) Line 388 +
0x10 bytes C++

user32.dll!77d48734()

user32.dll!77d48816()

user32.dll!77d489cd()

App.exe!CWnd::FromHandle(HWND__ * hWnd=0x00185d70) Line 311
C++

user32.dll!77d496c7()

App.exe!AfxInternalPumpMessage() Line 183 C++

App.exe!CWnd::RunModalLoop(unsigned long dwFlags=5) Line
4322 + 0x5 bytes C++

App.exe!CDialog::DoModal() Line 544 + 0x8 bytes C++

App.exe!CreatorApp::InitInstance() Line 65 C++

App.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000,
HINSTANCE__ * hPrevInstance=0x00000000, char *
lpCmdLine=0x00161f06, int nCmdShow=1) Line 37 + 0x7 bytes C++

App.exe!__tmainCRTStartup() Line 315 + 0x1c bytes C



The message is WM_MOUSEMOVE, and the assembly and exception
indicate dereferencing a NULL pointer:



Assembly:

3006C742 FF 74 24 04 push dword ptr [esp+4]

3006C746 8B 4C 24 0C mov ecx,dword ptr [esp+0Ch]

3006C74A E8 F5 6B FC FF call 30033344

3006C74F FF 74 24 04 push dword ptr [esp+4]

3006C753 E8 01 87 14 00 call 301B4E59

3006C758 59 pop ecx

3006C759 C3 ret

3006C75A 81 E1 00 F0 FF FF and ecx,0FFFFF000h

3006C760 8B 01 mov eax,dword ptr [ecx]

3006C762 8B 80 28 01 00 00 mov eax,dword ptr [eax+128h]

3006C768 C3 ret

3006C769 F6 41 57 02 test byte ptr [ecx+57h],2

3006C76D 8B 41 78 mov eax,dword ptr [ecx+78h]

3006C770 74 02 je 3006C774

-----%26gt; 3006C772 8B 00 mov eax,dword ptr [eax] ; eax is 0,
so it crashes

3006C774 C3 ret



I can't really think of anything we could be doing that would
cause a valid crash inside of flash in response to moving the
mouse.



Is there any way to get support for this? We can't really
release our application like this.



No comments:

Post a Comment