Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OED (Oxford English Dictionary) 1.0 error message #565

Closed
emendelson opened this issue Dec 16, 2019 · 34 comments · Fixed by #566
Closed

OED (Oxford English Dictionary) 1.0 error message #565

emendelson opened this issue Dec 16, 2019 · 34 comments · Fixed by #566

Comments

@emendelson
Copy link

emendelson commented Dec 16, 2019

Removed because of irrelevance. See the post that begins "My apologies" below.

@emendelson emendelson changed the title OED (Oxford English Dictionary) 1.0 error message: OED (Oxford English Dictionary) 1.0 error message Dec 16, 2019
@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

The trace doesn't show the crash.

@emendelson
Copy link
Author

Hm... I'll try again...

@emendelson
Copy link
Author

emendelson commented Dec 16, 2019

My apologies. I confused the issue. Here are the relevant facts.

  1. This program came with two executables, a 16-bit OED.EXE and a smaller executable named OEDXP.exe which launches the 16-bit version under 32-bit Windows. I'll concentrate on the 16-bit version (OED.EXE) here.

  2. When I launch OED.EXE, the start screen appears, but the program then crashes. I can't use the menu or the close buttons. There is no message that pops up.

  3. Here is the trace from OED.EXE:

https://www.dropbox.com/s/ecyw1stl9n6rfte/trace.7z?dl=1

EDIT: item 4 removed because of irrelevance.

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

I don't know what's happening but this trace doesn't show the crash either. The trace output should have the crash dump in it including the registers and stack backtrace. Is what you posted above exactly what it prints on the console? If so, something went really wrong because "ESP:A9FO,EBP:AA(X),ESI:0031,EDI:(XX>0" is nonsense.

@emendelson
Copy link
Author

emendelson commented Dec 16, 2019

Again, the error that I posted in the first message is NOT what happens when I run OED.EXE (the 16-bit app). That error is what happens when I run OEDXP.EXE, the small app that launches the 16-bit one under 32-bit Windows. I know I've confused the issue by trying both. But the trace is from OED.EXE (the 16-bit app), which crashes when I run it.

I'll try this again tomorrow and will report back after using the console version of winevdm.. Again, the error message with the nonsense in the first message (now removed) is NOT really relevant, because it's produced when I run the OEDXP.EXE launcher app, not the OED.EXE app itself. The error message in my (now-deleted) first post did NOT appear when I ran OED.EXE.

I've edited my earlier posts in the hope of clarifying this. Does the trace that i posted above show a crash at all?

If I've confused the issue beyond recovery, maybe I should just start again with a different bug report?

@otya128
Copy link
Owner

otya128 commented Dec 16, 2019

Perhaps the trace is broken because the process terminated without stderr being flushed.

@emendelson
Copy link
Author

emendelson commented Dec 16, 2019

OK, I downloaded the latest appveyor version with the flush-stderr fix, and made a new trace. Here is what happened:

When I started OED.exe, it opened its main window and stalled. I couldn't use the menus, so I closed winevdm from the Windows task manager. The link below contains the trace.txt file and a DEBUG file that seems to be created by the OED app, and which is probably useless, but here it is anyway:

https://www.dropbox.com/s/uaeyktlnjxpdwmx/OED-Trace.7z?dl=1

If there's any way to get more information, I'll be glad to try.

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

It seems to hang while trying to a display a MessageBox with "Error: 33400" in it which is the same error as the debug file. There's no obvious reason for the error in the trace that I can see.

@emendelson
Copy link
Author

Is there anything else I can do to get more information? There may be ten people in the world still using this program, so it really doesn't call for an enormous amount of effort.

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

The program appears to use a library called XVT and it calls PrinterDlg just before the error so I'd suspect the error to be related to this, http://forums.peachtreeusers.com/showthread.php?t=12565. What printers do you have installed? Maybe try installing a generic printer driver and make it the default.

@emendelson
Copy link
Author

emendelson commented Dec 16, 2019

Well, you clearly figured it out, and some more research shows that it's not enough to choose a generic print driver to make this program work - I have to disable the print spooler service while the program launches, and then turn it on again after the program runs.

I've made two traces:

https://www.dropbox.com/s/gj5e98ybeukwlsk/OED.7z?dl=1

trace-crash.txt is a trace made while the Windows Generic/Text Only driver was the default printer driver.

trace-spoolOff.txt is a trace made with the print spooler service stopped, when the program runs normally.

Question: I know that I can set up an AutoIt script or an elevated batch file or something similar to turn off the spool service, launch the program, and then turn on the spool service again, but is it worth the effort to make winevdm intercept the XVT library and turn off the print spooler while launching a program that uses it? It sounds like a lot of work, but that PeachTree forum post suggests that it might help quite a few other users.

Thanks again for the work you've been putting into this one.

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

Optimal solution would be to find out what about printdlg makes it unhappy and change it to avoid the problem which would require disassembling a program which uses xvt. That might not be possible though. I'd strongly prefer not to runtime patch programs (other than real mode windows programs which do all kinds of nasty things).

@emendelson
Copy link
Author

If it is worth the effort for you, I would be happy to send you the program. But the solution of turning off the print spooler seems to be the best workaround.

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

Willmaker 5 (https://archive.org/details/SoftKey_WillMaker_v5_Win31_1996_Eng) gives the same error when opening the printer setup dialog. It happens when the devmodea.dmdriverextra field, https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea, is greater than 0x2bc. It might be okay to set it to 0 since there's unlikely to be any win16 program which will be able to use anything from that with modern printer drivers.

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

I created a draft pr for you to test. It fixes that error in Willmaker but it blows up when trying to print. It also fails in ntvdm too so the problem there might be different. If the program runs it would be good to actually try printing if you have a printer or a pdf generator.

@emendelson
Copy link
Author

emendelson commented Dec 16, 2019

I downloaded the latest appveyor version ("zero dmdriverextra because some programs don't like large values there") - is that what you meant by a "draft pr"? The program runs with no errors except when I try to print. It has a Print/Setup menu item and a Print/Entry item (which prints the selected entry from the dictionary).

The results are intermittent. The Print/Setup menu mostly produces an error message "Can't get printer information"; but sometimes (unpredictably) it gives me a Windows printer-selection dialog, with my current default ("Generic / Text Only") displayed. But when I try to print, it gives me a "Cannot Print" or "Unable to print" error.

I changed my default printer to a PCL driver, and also got the "Unable to print" message.

In all cases, the program continues to run after giving the error message.

I think it's asking too much to ask for printing from this app, and I'm very grateful to be able to use the program at all!

@cracyc
Copy link
Contributor

cracyc commented Dec 16, 2019

What happened with the print dialog before when you stopped and started the spooler? I'd guess it would just printer error 33400 and exit but it'd be interesting to know, If you look through the bug reports here you'll find lots of printing issues (look for printer name too long) and most/all of those also fail in ntvdm. Seems like Microsoft gave up on backward compatibility for printing at some point.

@emendelson
Copy link
Author

I reinstalled the earlier build of winevdm to find out. Yes, as you thought: any attempt to print or setup printing produces error 33400 and exit.

I have a 32-bit Windows 10 setup that I can boot to, and will try it in the next day or two. Will report what happens in ntvdm. I've never tried printing from this program before...

@emendelson
Copy link
Author

Another program that seems to show the same behavior: WordSearch (which I can't find...):

http://discussions.virtualdr.com/showthread.php?51039-NT-Workstation-Application-error

@emendelson
Copy link
Author

Under Win10-32 NTVDM, I get the same Error 33400 if I do anything that involves printing, including an attempt to select a Generic / Text Only printer driver.

@emendelson
Copy link
Author

emendelson commented Dec 18, 2019

For some reason, the recommended-build for this update isn't available on the appveyor site. There's a note saying that the build failed. Is it possible to try it again?

EDIT: Fixed now. Thank you.

@LinuxOnTheDesktop
Copy link

LinuxOnTheDesktop commented Apr 25, 2022

I tried to install the OED version 2 (so, not OP's version, which is version 1) using the latest experimental recommended build of winedvm (which is build 2293). The OED program did not work; it installs, but when run I get a hang. Nor do I see any way to enable the workaround - to do with printer drivers - discussed above. I see a console with this output:


version: 2293
3b24:err:file:RedirectDriveRoot c:\oed2.dat => C:\Users\<my username>\Desktop\otvdm-master-2293\c\oed2.dat

EDIT: oh, and subsequently a little Win 3.1 box pops up saying 'CD-ROM not found', and the program exits.

@cracyc
Copy link
Contributor

cracyc commented Apr 25, 2022

Do you mean this one https://archive.org/details/oxford-english-dictionary-second-edition because it works for me. Need a trace.

@LinuxOnTheDesktop
Copy link

I do mean that one. Please tell me how to make this trace of which you speak. Thanks.

@cracyc
Copy link
Contributor

cracyc commented Apr 25, 2022

#226 (comment)

@LinuxOnTheDesktop
Copy link

Thanks.

However, just how those instructions apply to the present case is unclear. But here is what I did - having already, and without a trace, installed the OED program.

As you can see, I have failed to get the trace to work:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\Users\<my user name> cmd.exe
Microsoft Windows [Version 10.0.19044.1645]
(c) Microsoft Corporation. All rights reserved.

C:\Users\<my user name>cd C:\OED

C:\OED>dir
 Volume in drive C is WINDOWS
 Volume Serial Number is A839-0730

 Directory of C:\OED

25/04/2022  23:32    <DIR>          .
25/04/2022  23:32    <DIR>          ..
25/04/2022  11:47                25 DEBUG
25/04/2022  11:47             2,336 INSTALL.LOG
31/05/1996  15:01           473,392 OED.EXE
24/02/1994  16:52           160,450 OED.HLP
18/04/1996  17:01            11,962 OEDMACR2.DOC
23/04/1996  13:35            18,944 OEDMACRO.DOC
21/01/1994  11:27           140,680 OED_LOGO.BMP
29/09/1995  11:37            30,048 UNWISE.EXE
07/10/1993  11:21           211,285 XWI321.DLL
07/10/1993  11:21            58,759 XWI321TE.DLL
              10 File(s)      1,107,881 bytes
               2 Dir(s)  151,641,989,120 bytes free

C:\OED>set WINEDEBUG=+all,-snoop,-ldt,-fixup,-module,-global,-local,-disasm,-syslevel,-thunk

C:\OED>OED.EXE 2> trace.txt

C:\OED>type trace.txt
The system cannot find the file C:\OED\OED.EXE.

I think I am doing something stupid but at present I do not know what it is.

@cracyc
Copy link
Contributor

cracyc commented Apr 25, 2022

Do you have winevdm installed with the inf file so you can run win16 programs directly? If not you need to add otvdm.exe to the commandline. Or are you running that command prompt elevated?

@LinuxOnTheDesktop
Copy link

LinuxOnTheDesktop commented Apr 25, 2022

Ah: I had forgotten that I had uninstalled otvdm. I have reinstalled it.

But now, whilst the OED program runs - and hangs - the trace file is empty, and that is so whether I run the OED program as admin or not, and whether I run it from cmd or from powershell. (EDITED.)

@cracyc
Copy link
Contributor

cracyc commented Apr 25, 2022

When running a trace the program runs slower so as long as the trace file isn't empty it's potentially useful.

@LinuxOnTheDesktop
Copy link

Sorry: my previous post was mistyped; I had meant to say, but did not say, that the trace file was empty. (I have now corrected my previous comment.) Just now I tried the procedure again and the trace file is still empty. For, things went as follows.

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\OED> set WINEDEBUG=+all,-snoop,-ldt,-fixup,-module,-global,-local,-disasm,-syslevel,-thunk
PS C:\OED> .\OED.EXE 2> trace.txt
PS C:\OED> sleep 20
PS C:\OED> type trace.txt
PS C:\OED> dir


    Directory: C:\OED


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        26/04/2022     00:40             25 DEBUG
-a----        25/04/2022     11:47           2336 INSTALL.LOG
-a----        31/05/1996     15:01         473392 OED.EXE
-a----        24/02/1994     15:52         160450 OED.HLP
-a----        18/04/1996     17:01          11962 OEDMACR2.DOC
-a----        23/04/1996     13:35          18944 OEDMACRO.DOC
-a----        21/01/1994     10:27         140680 OED_LOGO.BMP
-a----        26/04/2022     00:40              0 trace.txt
-a----        29/09/1995     11:37          30048 UNWISE.EXE
-a----        07/10/1993     11:21         211285 XWI321.DLL
-a----        07/10/1993     11:21          58759 XWI321TE.DLL

Thank you for trying to help. Thank you too for your software.

@cracyc
Copy link
Contributor

cracyc commented Apr 25, 2022

Seems this doesn't work in powershell for whatever reason. You need to use cmd.

@emendelson
Copy link
Author

emendelson commented Apr 26, 2022

@LinuxOnTheDesktop - There may be some confusion here. The iso image on Archive.org is of the OED Second Edition, version 1.13, It is not OED Second Edition version 2.0. The confusion results from the fact that all VERSIONS of the OED are versions of OED Second Edition, and have version numbers from 1 to 4.

The file dates that you post are those of OED Second Edition version 1.13. Version 2.0 dates from 2000.

According to this page - http://xywrite.org/xywwweb/oed.shtml - version 1.11 is the last that doesn't require a disk image. That's what I've been using with otvdm.

@LinuxOnTheDesktop
Copy link

@emendelson: thank you. With the help of that 'XyWWWeb' page that you mentioned I managed to get things working - as follows.

I located a copy of version 1.14 of the OED software. Here is a direct link to that version. (I could not find version 1.11.) But that instance of the software (1.14) - at least the particular instance of it that I had obtained - contained only SETUP.EXE. But o use the OED one needs the data file - OED2.DAT - as well. Yet, I had a copy of OED2.DAT from archive.org. So I used that - i.e., a setup file from one version of the software and a data file from another version (and this combination did work).

It does seem that OED version 1.14 needs to be run from a real CD. My PC does have a CD drive. However, I ended up installing to my hard drive anyway - as follows. As recommended by the XyWWWeb page, I obtained the program ImgBurn (from here). I used ImgBurn to turn the aforementioned dat file into an iso file. Then I mounted that file using the native Windows Files/Explorer program. (The XyWWWeb page recommends ImgBurn and, also, two third-party tools that one can use for the mounting; but Windows 10 can do the mounting itself.)

Then I executed SETUP.exe from the mounted ISO. I told it to install the software to my hard drive (to C:\OED). This worked, though I had to choose 'ignore' on repeated pop-up warnings. The warnings had to do with fonts being in use. I think what is happening here is that winevdm had installed those fonts already.

After the installation, I ran OED.EXE from my hard drive - and, perhaps because I had winedvm installed, it worked!

My thanks to both @emendelson and @otya128.

@LinuxOnTheDesktop
Copy link

Let me add the following.

Getting the OED to run can remain a problem - because one needs to have the aforementioned ISO file mounted as a (virtual) drive; one needs that drive to exist every time one runs the program. To that end, each time one wants to run the program, one can manually mount the ISO, and then run the executable (and the executable is not within the mounted drive). To get around this chore, one can write a script that mounts the drive automatically and (still in the script) runs the executable. I wrote such a script in PowerShell - so then I had to create a shortcut that could run the PowerShell script. It is all rather involved, but I'm happy to provide the details and the code if anyone wants it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants