6
votes

We have a legacy VB6 application that is crashing at a certain point on Windows 10, but not on Windows 7. It also doesn't crash when run via the VB6 IDE (on either OS).

On trying to track down the differences I discovered that msvbvm60.dll is subtely different on Win7 and Win10. Specifically, it has the same version number and size, but different dates. Subsequent binary comparison shows that the versions are indeed different.

If we force the Win10 machine to use the Win7 version of msvbvm60.dll, the crash is fixed. Can anyone shed any light on the difference between these versions? I have confirmed that the two versions are the same as you get on clean installations of Win7 and Win10, so it is not due to any corruption.

The crash happens while trying to display information on a grid (MSFlxGrd.ocx). However, the grid works most of the time. The data set is larger than usual, but only 8000 rows so not extreme. The application is very convoluted, so it is not easy to examine the data or give more information.

The system event log shows the following:

Faulting module name: MSVBVM60.DLL, version: 6.0.98.15, time stamp: 0x49b01fc3
Exception code: 0xc00000fd
2
You mention the binary comparison - they are different beyond having the different timestamp? (e.g. it's different only because of the timestamp)this
Interesting, but I'm about 99% sure nobody but Microsoft can answer this.Mathieu Guindon
I should add that if your intention is to determine if the issue is observed by others, it might be good to have a MVCE so that you can get independent confirmation whether there exists a problem. That'll bolster your case when you do take up with Microsoft.this
Wrt binary comparison, I mean that HxD shows that the files are genuinely different, so it is not just the time stamp.Ant Waters
In my experience recompile on Win 10 to fix.ACatInLove

2 Answers

0
votes

So the extra rows count perhaps. But somewhere in your code is a recursive function. This is from a program of mine that converts NTStatus codes to Windows Error codes.

A stack is where a function's local variables, temporary variables, parameters to functions, return value, and the return address is stored. A program starts with 1 MByte of stack space with a guard page at the end. When the stack grows into the guard page a memory exception is raised by the virtual memory manager, which grows the stack by 4KByte, and puts a new guard page in. Your stack has hit memory that is not free and cannot grow.

---------------------------
Serenity's Unicode Text Editor
---------------------------
NT Status 0xC00000FD (-1073741571)

Windows Error 0x3E9 (1001)

---------------------------
NT Status Message:

A new guard page for the stack cannot be created.


---------------------------
Windows Error Message:

Recursion too deep; the stack overflowed.


---------------------------
OK   
---------------------------
-1
votes

I had problems in windows 10 with MSFlxGrd.ocx. These problems appeared as "license errors", though i suppose the ocx was supplied with vb6. Anyway, all these problems went away when I ran the exe in the followin zip file (unzip all files in a folder before running it).

First, close visual basic if open. Then unzip this file, then run the exe file in it