Next Debugging Steps in the Client Environment

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.

+4
source share
3 answers

We solved the problem at the end (we worked well around it). If anyone is interested, we did it.

Stack dump analysis with WinDbg (which is a great tool). We found that after the problem was isolated, to show WinForms in iexplore.exe after loading the flash memory in the XenDesktop deployment. Knowing this, we were able to solve this problem.

The key was to get good crash dumps, develop a minimal playback scenario and have a good client that allows us to test our theory!

+1
source

There is a version of the flash player debugger that can output diagnostic information that can help you. I understand that the problem is not necessarily an outbreak, but it can give some idea of ​​the possible problems.

I must admit that I have not installed it for a while, but I believe that these links can help you:

Insutrctions on how to configure the debugger version for log output:

http://kb2.adobe.com/cps/403/kb403009.html

Link to download the debugger version:

http://www.adobe.com/support/flashplayer/downloads.html

+3
source

One thing you could do outside the client site is running your code through a static analyzer like pclint to see if there are any obvious errors in your own code that run in special situations.

+1
source

Source: https://habr.com/ru/post/1387364/


All Articles