leecher1337 / ntvdmx64

Run Microsoft Windows NTVDM (DOS) on 64bit Editions
803 stars 81 forks source link

Cannot resolve LdrpInitializeProcess #206

Closed Cybdyn-Systems closed 1 year ago

Cybdyn-Systems commented 1 year ago

Hi. I updated Windows 10 two days ago to the latest updates from Microsoft, and then my previous working install of 'ntvdmx64' stopped working. So, I uninstalled it, rebooted my PC and then pulled the latest commit from this repo. I rebuit the files and re-installed the program. I did not close the command window (so the files were not deleted) but it kept asking at the end for missing files which I had to manually find and point it to. There were about 6 of them if I recall I needed to do.

Anyway, I got it installed. I rebooted, and then I started seeing this message pop up.

image

I thought I'd give it 2 days to see if Microsoft would update their symbol server (since I know that's a problem when they release updates), but I thought I'd run the check by the lead programmer here (@leecher1337) to make sure the logs are actually related to the symbols. This is what I get when I run 'edit'. It doesn't look like a symbol related issue.

{8B60E880-05F5-4E57-870F-DF7B8E84C9BD}

Any suggestions and/or ideas? Thanks.

Cybdyn-Systems commented 1 year ago

Okay, to fix it you must have Secure Boot disabled.

leecher1337 commented 1 year ago

Hi, I might have caused some confusion with the loader switch for Win 10. First, I found out that the Win 11 loader worked fine on my Win 10, so I made the Win 11 loader default. But then I got reports that it can cause troubles under certain configurations ( see: https://github.com/leecher1337/ntvdmx64/issues/197 ), so I reverted back to Win 10 loader and Win 10 loader indeed requires Secure Boot to be turned off. If you installed it with Secure Boot turned on, the installer should have asked you if you want to try with Win 11 loader instead. So I wonder which loaded did you use, Win 10 or Win 11 loader on Win 10?

It seems that indeed there was a problem resolving the symbol, the loader tried to update the symbols earlier in the log, because it should output if this fails, i.e. to lacking symbol files (most likely the problem, as you already correctly stated). The problem is that you cannot resolve the Symbols right in the loading process, because Symbol Server functions often get stuck in this configuration that's why Symbol resolution gets posponed to launching of a new process, normally.

Anyway, do you think it would be useful to include a util-batchfile that forcefully tries to resolve all symbols and update them in registry, because symbol resolution can still cause various problems under some configurations. At least it may be easier for users to see if there are symbol resolution problems right away?

Cybdyn-Systems commented 1 year ago

If I didn't install the Win 11 loader, the command window would simply close and not do anything. So, I had no option but to install the Win 11 loader with Secure Boot enabled. Again, I then faced all those missing files and had to find them manually by clicking on 'Browse' when it reported a particular file couldn't be found. Maybe there a problem with my build (since I did delete all my files and pull the repo again), but that's something to possibly consider.

Honestly, the best solution I reckon would be to ditch using command line based tools and make a C# program under Visual Studio which will give you better controlability and the ability to auto-update stuff.

leecher1337 commented 1 year ago

So did you install Win 11 loader, then it didn't work, then uninstall it, turned off secure boot and reinstalled, so that you switched to Win 10 loader and then it worked? Or did you keep Win 11 loader and just turned Secure Boot of and then it worked (that would be a bit weird...)?

The installer is usually working fine, so the missing files indeed seem to indicate that something went wrong duing building. However you said that you were able to point the installer to the correct location of the files and then it worked? One building issue that I'm aware of is that you have to start the build process from 64bit shell and not from 32bit application (i.e. 32bit cmd.exe or 32bit file browser). Otherwise it may result in incomplete installation packages.

Most of the symbol issues can be resolved by deleting the ldntvdm symbolcache and let it recreate (ldntvdm usually takes care of it when symbols are missing), but I thought it may be useful to have a batchfile that forces symbol cache update and reports about success/failure so that it makes it easier to see the symbol update results (and user can see with one click of i.e. symbols are indeed missing on MS Symbol Server), as 90% of update problems are symbol related isues.