Background
We have a .NET WinForms application written in C # that interacts with a pocket store scanner through a console application. The console application is written in good condition VB6 - there is no managed code. A VB6 application consists of several COM objects.
The .NET WinForms application updates the data in the scanner, invoking the console application with the correct parameters. When the console application starts, it pops up in a modal form, reminding the user to put the handheld device in its stand.
Problem
The client has a strange situation when the call to launch the console application hangs before displaying the reminder form. If the user presses any key - even something innocent, such as Shift or Alt - the application unfreezes and a reminder appears. Although it hangs, CPU utilization in the console application is very large.
We got a memory dump from the command line application using ProcDump . I have experience debugging managed dump files, but this dump of VB 6 is weird for me.
We grabbed a few complete memory dumps per line. Some of them seem to have stacks of COM glue. For example, several dump files show the call stack as follows:
msvbm60!BASIC_DISPINTERFACE_GetTICount
msvbm60!_vbaStrToAnsi
msvbm60!IIDIVbaHost
msvbm60!rtcDoEvents
msvbm60!IIDIVbaHost
msvbm60!BASICCLASS_QueryInterface
[our code which I think is trying to create and invoke a COM object]
, , , - . Microsoft PDB msvbm60.dll(, , 6.0.98.2).
, COM, .
1) ? , !threads, !threadstate, . , sos.dll. ~ !teb.
2) , COM- ? , !dumpheap, . - COM?
3) COM- ?