Part of our product is the IE plugin (BHO), which works successfully in many different environments in different OS versions / versions of IE.
However, in a trial setup for a single client running on XP SP3 computers through citrix XenDesktop, IE 7 fails when two of the following conditions are true:
- Our plugin is uploaded
- Added Shockwave Flash add-in (latest version is Flash11e.ocx)
Additional Information:
- A crash occurs when we then try to show the dialog to the user or shortly afterwards. However, our code does not crash, which is all written in C #, it happens in different places, often ole32.dll.
- Our dialogs are HTML pages displayed in a webbrowser control displayed in a form through form.ShowDialog (ownerWindow) in BHO.
Any plugin seems to work fine independently. Disabling flash memory or skipping any sites that use flash memory prevents a crash.
The client wisely accommodates, and I was able to launch IE using MS Debugging Tools to capture multiple dumps during the crash. I now have problems interpreting dumps. I think it was damage to the heap. I ran debugging tools with the interception function fully enabled, but this did not cause a breakpoint.
The analysis from the Debugging tools is as follows:
In iexplore_PID_5064_Date_12_20_2011__Time_11_19_26AM_161_Second_Chance_Exception_C0000005.dmp, the assembly instruction is in ole32! HandleIncomingCall + e2 in C: \ WINDOWS \ system32 \ ole32.dll from Microsoft Corporation caused an access violation exception (0xC0000005) when trying to read from memory location 0x03ce4ff8 in a stream
Stack trace at point of failure:
Thread 7 - System ID 1140 Entry point ieframe!CTabWindow::_TabWindowThreadProc Create time 20/12/2011 19:18:08 Time spent in user mode 0 Days 0:0:19.828 Time spent in kernel mode 0 Days 0:0:10.468 Full Call Stack Function Arg 1 Arg 2 Arg 3 Arg 4 Source ole32!HandleIncomingCall+e2 0f9aafbc 00000034 00000001 07e8ab6c ole32!STAInvoke+24 17444f80 00000001 0781efc0 077e8f10 ole32!AppInvoke+7e 17444f28 077e8f10 0781efc0 07e8ab6c ole32!ComInvokeWithLockAndIPID+2c2 17444f28 077ec420 00000000 17444f28 ole32!ComInvoke+60 17444f28 00000400 0774ee30 07bcfe48 ole32!ThreadDispatch+23 17444f28 07bcfeb0 7752b096 00000000 ole32!ThreadWndProc+fe 005d0594 078b6ee0 0000babe 17444f2c user32!InternalCallWinProc+28 7752b096 005d0594 00000400 0000babe user32!UserCallWinProcCheckWow+150 00000000 7752b096 005d0594 00000400 user32!DispatchMessageWorker+306 7bcff64 00000000 07bcffb4 3e25e69b user32!DispatchMessageW+f 07bcff64 0013e490 0013e5b8 07868ff0 ieframe!CTabWindow::_TabWindowThreadProc+189 07e03e30 0013e490 0013e5b8 07868ff0 kernel32!BaseThreadStart+37 3e25e464 07868ff0 00000000 00000000
I'm going to see what else I can get from this dump file, but I hope someone here has a great idea. I would like to test a lot more materials on the client’s site, but we only have so many chances with them, so I need to use any time I get there very wisely.
It seems to me that the following few steps:
- If the problem is that the flash memory will interfere with something in the way we show the dialogs, I would like to test the fully separated BHO, which just shows the dialogs, to show that the problem is not related to our code.
- Many other plugins are installed on the computer, it would be nice to start with a truncated image and create from there to see when the launch problem is running.
Sometimes a crash occurs in pseuoserverinproc.dll, which is part of the HDX MediaStream, which runs flash content locally and not on the server.
== update
I had quite a bit of success when WinDbg analyzed the dumps that I have. I think it makes sense to try and use gflags / windbg on a desktop that has problems and debug it live.
This would be my recommended next step for anyone in a similar position at the moment, would know more about how good this advice is during the week when I had the opportunity to apply it.