Link to home
Start Free TrialLog in
Avatar of Gabe_Rivera
Gabe_Rivera

asked on

DOS apps and the NTVDM.EXE process? HELP!

I am in a real bind here. The environment I work in is migrating from a Novell 3.x/DOS based environment to a Win2K AD/WinXP environment.

We are transitioning off of this 16 bit application that communicates with an old Btrieve database that resides on a Novell 3.x server.

The client runs fine in XP. You can get into the application without any problems. Once you click on a customer record though, the trouble begins. The processor (machines are Dell 2.0ghz) pegs out to 100% and the application just sits there. If you open up the task manager you can see the NTVDM.EXE is the process that's eating up all of the processors resources.

From a little bit of research I have learned that the NTVDM is the built in 16 bit emulator for 2k/XP. I need to figure out what is going on and why this doesn't work. There is almost no overhead on the Novell box where this database resides, so I know it's not a bandwidth issue. This app runs like a champ in 95/98. I need some ideas or things to try, bad. Thanks in advance.
Avatar of GregD
GregD

Have you tried running the app in compatability mode??

Also are you running the app in a window or full screen?

I've had a lot of problems tring to run old dos apps in windows, however they appear to run ok when run in full screen.
Avatar of Gabe_Rivera

ASKER

Well it's actually a window client that runs, so you can't run it in "full screen" mode.

Checking the properties of the shortcut, the compatibility options are all greyed out.
Avatar of Adam Leinss
Right click directly on the executable in question (not the shortcut) and see if you the the compatibility options.
Right click directly on the executable in question (not the shortcut) and see if you the the compatibility options.
Nope, still greyed out.
Nope, still greyed out.
ASKER CERTIFIED SOLUTION
Avatar of LRI41
LRI41

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I take it then this is not a DOS program per se but a 16bit Windows program. Chances are the problem has to do with the Btrieve driver and how it communicates with the database on the other machine. I am just curious as a test if you moved the database over to the XP machine and made sure the client software points to the database on the XP machine does the problem still exist?


The Crazy One
http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q310310

Several network components are not included with Windows XP because of their dependence on real-mode configuration. If these components are detected during Windows XP Setup, you receive a message that informs you that they must be removed before Setup can proceed.

Clients:
Banyan MS-DOS/Windows 3.1 client.

Novell NetWare [Workstation Shell 3. X (NETX)]: This client predates Windows 95 and provides read-mode communication with NetWare 3. X and 4. X servers. At this time, no 32-bit clients are available from Novell to enable Windows XP to communicate with NetWare servers.

Novell NetWare [Workstation Shell 4.0 and above (VLM)]: This client predates Windows 95 and provides real-mode communication with NetWare 3. X and 4. X servers. At this time, no 32-bit clients are available from Novell to enable Windows XP to communicate with NetWare servers.
I think that this is a repeated question from the Windows 2000 section.

If it is, can one be deleted? Would you rather both stayed open?

If you are an expert working on this thread you may want to take a look at the other thread also...

https://www.experts-exchange.com/questions/20316577/16-bit-client-Btrieve-database-and-NTVDM-HELP.html
I also know of some 16-bit application that can not be run in long file paths. Can you make sure that the application is installed in a path like:
C:\TESTAPP
The path should have no spaces and be less than 8 characters.
along the same lines as jmiller47's comment, make sure your %TEMP% environment variable is in a 8.3 path, i.e. C:\TEMP

-dog*
Sorry for the delay in updates.

- Crazyone, yes this is most likely a problem with the driver we're using. Unfortunately due to the age of the program, it's no longer supported by the vendor. We couldn't get a new driver without buying a crapload of new licenses and since we've moving off the platform anyways, that's just not an option.

- The support articles on Microsoft's site in relation to NTVDM don't apply to me or didn't match up with the symptoms I'm experiencing.

- I downloaded the compatibility toolkit and have been playing with it a bit. I'm not really sure what flags I should be setting. I pretty much just let the compatibility toolkit choose the flags for me and hoped for the best. I would say 3 times out of 5 it works like it's supposed to. Sometimes it will crap out like it always does, I'll kill the NTVDM service and try it again and it works like a champ. Not sure what that is all about.

The CTK makes a .sdb file that you can exectute if you have the toolkit installed. I have noticed that it apparently makes no changes to the files themselves (the actual program executable), so how would I get this fix out to every desktop in my environment? Am I correct in assuming that the CTK would need to be installed on everyone's machine?

Also, I seem to have more success if I execute the .sdb file before I run the application. Is that just coincidence or is that actually the way it's supposed to work? So many questions, so little time...
Also, it won't let me increase the points on this question to any more than 500. I have a similar question posted on the Win2k side which is also valued at 500 points. I'd like to award massive points to all that have contributed to help me find a solution. If I can make this work even 75% of the time, I will save this company thousands of dollars... which makes me look pretty damn good. =)

Thanks in advance.
Well it would be nice, but 500pts is the maximum.  If you want to offer more, you can make "Points for xxxxx" questions in a topic area to award the expert who helped.  EE considers a 500 point question to be extremely difficult, but hey they're your points...

-dog*
From what I collected at one of my last MS seminars, the MCTK will create a wrapper for you application. It would create an additional installation application (Very small) for you to install on your XP workstations. It might also lead you to understand the compatabilty issue and lead you to a way to resolve the issue programatically yourself (fixing your app). Another option is you can call MS and (for a fee :)) they can create a compatability fix for you...
Ok as an update, after running the compatibility toolkit, and a fresh reboot this is what happens:

The first time I run this 16 bit application, the client comes up properly. When I got to access a record that pulls from the database, I get the hour glass mouse pointer and the processor pegs out. I have to go in and kill the NTVDM.EXE process, which closes the application.

If I run the application again, everything works like it should. I can access records and what not that made everything freeze up the time before.

So I guess now I'm wondering what has changed from the first time I initially run the application, to the time that I run the second one. What is going on here??
After you run it again, does it run under NTVDM?
Yes.
And after you ran the Application Compatability Toolkit, it gave you a small program to install, or what exactly did it do for you?
Yes, it gave me a small .SDB file, which is executable. Since I've run this little file, I have the functionality that I described above. It craps out during the first initial load, but after that 4 out of 5 times I can access objects in the database and the client continues to respond.

It's close, but it's still not acceptable. I can't expect my user base to understand how to kill processes and what not. I need it to work the right way, no exceptions.
The unfortunate fact that you may have to face is that DOS apps were never meant to run under a modern NT-based OS, they were designed for DOS so that's what they like the best.  I don't have any additional ideas for you, I think jmiller is getting you awfully close; maybe you can fool around with the ACT some more and find the option you're missing...?

Have you tried running the app from within a command.com DOS box (not cmd.exe)?

-dog*
What benefit would I get from running it from a "command.com" prompt when it just fires up a 16 bit window?

I just don't understand why it works the second time around, after the NTVDM.EXE component has been fired up and choked on the first run. Doesn't make since to me.

I don't know that there would be any benefit; I'm just proposing another option which may help.  Its impossible for us to know how your application will work with XP, so all we can do obviously is make suggestions.

I do wish you luck, but maybe you'll need to resort to keeping a few WIn98 machines around to run this legacy application...There are AD clients for Win98 BTW.

-dog*
Well, would it be possible for me to write some script that fires up this process (the NTVDM.EXE), then kills it, and then runs the executable for this application?

I'm not much of a scripter, I suppose I could do some research and find out how to do it, if it's even possible to begin with.
If you want to script it you could try rkill, it's a resource kit app that allows you to kill local & remote processes. Your batch file could look something like this

rkill.exe /install \\%COMPUTERNAME%
rkill.exe /nkill \\%COMPUTERNAME% NTVDM.EXE

This will install the rkill service, if it's not allready installed, and kill a named process called NTVDM.EXE.

I've tested this script & it works, to my surprise, even when the process your killing is the one running the rkill command...

Hope your going to migrate off this app soon :))
Good Luck
Greg.
 
Thanks GregD.

I have found a solution that works, even as half assed as it is. Basically you fire up the client, let it load, it stops at the login section where you enter in your user ID and password. You close the application at that point. Then you fire it up again and log in normally. If you follow these steps, the program works like a champ. How strange is that?

I'm going to award points to several people who offered input.
Your users are going to love you!!! :)))

I can't help wondering what the app is trying to do on the first execution. Have you tried running a snapshot app to see if any files are changed between executions??

I know you've got a solution, but it's got me thinking now :)

Cheers
Greg.
Have you been helped here or is more needed?  Since time has passed since your last comment, an update is appreciated (in case things have changed).  If you've been helped, convert the expert's comment to the Accepted Answer to grade and close it.  If more than one helped you, ask for a point split by posting a zero point question in the Community Support topic area, include this link and details with your request (expert name and point values to each).

This is the Community Support link:
https://www.experts-exchange.com/jsp/qList.jsp?ta=commspt

Thanks,
":0)
Asta
I reduced the points to 200 and refunded the rest. Please accept LP141's comment as an answer and post seperate questions for the other experts with a title like : "Points for xxx" and a body "For your help in  ."

** Mindphaser - Community Support Moderator **
Thank You! Now I have answered 2 questions!!!!!
ROFL

LRI41
Interesting that you selected LRI41's comment as an answer, since the compatability mode was suggested by at least 2 other people first.  Your decision I suppose...

-dog*
dogzar
LR141's coemmnt was used because the asker decided to award points not equally split:

Please award 200 points to LR141
Please award 100 points to CrazyOne
Please award 100 points to Jmiller47
Please award 75 points to GregD
Please award 25 points to dogztar

So you should see these questions pop up very soon.

I hope that satisfies at least a bit :-)

** Mindphaser - Community Support Moderator **
Mindphaser, hats off to you, for being most excellent and fair.
Thanks.
":0) Asta
I am just glad that at least I can at least contribute
a little bit now and then. This has been the most helpful
site to me for problem solving and my unattainable goal
is to have as many of my comments accepted as answers and
I have posted questions.
Ahh, I am still going through my notifications for the past 5 days and didn't see the "points for" yet.  In that case, OK :)

Glad to have you on board LRI41.

-dog*
Give him some time ... I adjusted the points last night ...
much appreciated.
Gabe,

I just had the same problem with ntvdm.exe eating up all my processor and I solved the problem by running Task Manager and setting the Priority to Low. (Right-click the process)

Joe
Working Solution: When configuring an XP workstation for connection to a Netware Server for access to a legacy btrieve database, use the Microsoft Netware Client supplied with XP rather than a Novell supplied client for XP.