https://bugs.winehq.org/show_bug.cgi?id=56225
Bug ID: 56225 Summary: Myst deadlocks on start since Wine 3.2 Product: Wine Version: 3.2 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: alexhenrie24@gmail.com Distribution: ---
Steps to reproduce:
1. Run `sudo sysctl vm.mmap_min_addr=0`
2. Run `DISPLAY=:1 wine MYST.EXE`
In Wine 3.1, the game pops up a dialog that says "Myst requires a 256-color palettized display driver." But in Wine 3.2 and later, Wine just prints an error like the following:
00f0:err:sync:RtlpWaitForCriticalSection section 777129E0 "../wine/dlls/krnl386.exe16/syslevel.c: Win16Mutex" wait timed out in thread 00f0, blocked by 0114, retrying (60 sec)
`git bisect` says:
ed6bdb3c51cd4b8c94f9839806321703e7aa9765 is the first bad commit commit ed6bdb3c51cd4b8c94f9839806321703e7aa9765 Author: Alexandre Julliard julliard@winehq.org Date: Mon Feb 5 17:03:48 2018 +0100
krnl386: Remove support for DPMI real-mode calls.
Signed-off-by: Alexandre Julliard julliard@winehq.org
$ sha256sum myst_win3x_win.7z 562d3a3d829648352b94ab0d828290f17f90406d34218ebe3ffd0ac012cb12e3
https://bugs.winehq.org/show_bug.cgi?id=56225
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |https://gamesnostalgia.com/ | |download/myst/3403 Keywords| |download, regression
https://bugs.winehq.org/show_bug.cgi?id=56225
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |ed6bdb3c51cd4b8c94f98398063 | |21703e7aa9765
https://bugs.winehq.org/show_bug.cgi?id=56225
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dark.shadow4@web.de Keywords| |win16
--- Comment #1 from Fabian Maurer dark.shadow4@web.de --- This seems to be a program using a DOS extender, I don't think that is something that wine wants to support anymore. In the main directly there is a Myst.bat, that works on windows. But under wine dosbox seems to have issues.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #2 from Alexandre Julliard julliard@winehq.org --- It seems to work fine here using the bundled DOSBox.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #3 from Alex Henrie alexhenrie24@gmail.com --- `wine Myst.bat` works for me too. But is there no way to get MYST.EXE to work in Wine without DOSBox?
https://bugs.winehq.org/show_bug.cgi?id=56225
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #4 from Zeb Figura z.figura12@gmail.com --- Wait, so is this an NE program that uses DPMI?
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #5 from Alex Henrie alexhenrie24@gmail.com --- $ file MYST.EXE MYST.EXE: MS-DOS executable, NE for MS Windows 3.x (3.10) (EXE)
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #6 from Fabian Maurer dark.shadow4@web.de --- (In reply to Alexandre Julliard from comment #2)
It seems to work fine here using the bundled DOSBox.
Weird, I don't get any graphical output. It plays some sound after a while, so I assume it's running, but completely black.
https://bugs.winehq.org/show_bug.cgi?id=56225
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |WONTFIX
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- (In reply to Alex Henrie from comment #3)
`wine Myst.bat` works for me too. But is there no way to get MYST.EXE to work in Wine without DOSBox?
There might be, but I don't think we want to invest more effort in DOS support at this point.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #8 from Alex Henrie alexhenrie24@gmail.com --- (In reply to Alexandre Julliard from comment #7)
(In reply to Alex Henrie from comment #3)
`wine Myst.bat` works for me too. But is there no way to get MYST.EXE to work in Wine without DOSBox?
There might be, but I don't think we want to invest more effort in DOS support at this point.
You've marked this bug as WONTFIX. Maybe it's obvious to everyone else, but since it's not obvious to me, I'll ask: Why does Wine now have a policy that forbids supporting NE programs that use DPMI?
Myst was originally distributed on CD without conveniently bundled copies of Windows 3.1 and DOSBox. Unless users find this bug report, they will have no idea why the CD doesn't work.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #9 from Alexandre Julliard julliard@winehq.org --- (In reply to Alex Henrie from comment #8)
(In reply to Alexandre Julliard from comment #7)
(In reply to Alex Henrie from comment #3)
`wine Myst.bat` works for me too. But is there no way to get MYST.EXE to work in Wine without DOSBox?
There might be, but I don't think we want to invest more effort in DOS support at this point.
You've marked this bug as WONTFIX. Maybe it's obvious to everyone else, but since it's not obvious to me, I'll ask: Why does Wine now have a policy that forbids supporting NE programs that use DPMI?
If the app is using DPMI, sooner or later it's going to want to call to vm86 mode, which is no longer supported on any recent system. It doesn't work on Windows either, which is why the app has to be shipped with DOSBox.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #10 from Fabian Maurer dark.shadow4@web.de ---
It doesn't work on Windows either, which is why the app has to be shipped with DOSBox.
I think that's because 64bit windows doesn't support 16Bit code at all.
FWIW the game seems to run without problems in my XP VM. Not sure if that means XP supports vm86 or that the program doesn't use it.
It also works on otvdm, but that uses emulation.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #11 from Alexandre Julliard julliard@winehq.org --- It is using DPMI calls to invoke DOS interrupts in real mode. It may be possible to emulate this, but I don't think it's worth the trouble.
FWIW the contents of the cd directory, which I assume is the original CD, install and work fine here.
https://bugs.winehq.org/show_bug.cgi?id=56225
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Myst deadlocks on start |16-bit Myst deadlocks on |since Wine 3.2 |start since Wine 3.2
--- Comment #12 from Alex Henrie alexhenrie24@gmail.com --- There were several versions of Myst. Later CDs included a 32-bit version that can be made to work on Wine, but the earlier CDs only included the 16-bit version, which used to work on Wine and doesn't anymore. One of the early 16-bit-only CDs is available at https://archive.org/download/myst_20200711/MYST.ISO
I've updated the bug title to clarify that this bug only happens on the 16-bit versions.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #13 from Alex Henrie alexhenrie24@gmail.com --- Created attachment 75961 --> https://bugs.winehq.org/attachment.cgi?id=75961 [PATCH] krnl386: Restore simulated real mode interrupts.
This might not actually be that hard to implement. The attached patch is enough for 16-bit Myst to start, although Myst is very particular about its installer being run from the D drive. Steps to install and run:
1. Insert the Myst CD
2. Run `sudo sysctl vm.mmap_min_addr=0`
3. Run `wine 'D:\install.exe'` - The installer works but hangs at the end, so press Ctrl+C when it's done
4. In one terminal, run `Xephyr :1 -ac -screen 800x600x8`
5. In another terminal, run `DISPLAY=:1 openbox`
6. In a third terminal, run `DISPLAY=:1 wine 'C:\MYST\MYST.EXE'`
Unfortunately, Myst deadlocks again when loading the first level. It's not clear to me whether that's another problem with DPMI or something else entirely. The first level doesn't load in Wine 3.1 either.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #14 from Fabian Maurer dark.shadow4@web.de ---
Unfortunately, Myst deadlocks again when loading the first level. It's not clear to me whether that's another problem with DPMI or something else entirely. The first level doesn't load in Wine 3.1 either.
Yeah, the main thread enters a deadloop waiting for I-don't-know-what to happen. I tried to debug it, but I can't even get gdb to disassemble the code that runs. Win16 is a pain.
Not sure it is worth the effort though, you can just install otvdm (e.g. https://github.com/Winetricks/winetricks/pull/2180) and it runs just fine. Do you think there is an advantage to have this working natively in wine?
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #15 from Alex Henrie alexhenrie24@gmail.com --- It would be nice to have 16-bit Myst running in Wine without having to use Winetricks or other hacks. For one thing, the people who have these old CDs and want to use them are not necessarily going to be aware that some are 16-bit and others are 32-bit. And for those of us who are aware of the differences, it would be interesting to run the different versions of Myst in Wine just to compare them. Yet another motivation is that Myst is a good example of an NE program that uses DPMI, so debugging it could help us to debug similar programs.
If someone is willing to put in the effort to support it, why not let them?
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #16 from Fabian Maurer dark.shadow4@web.de ---
If someone is willing to put in the effort to support it, why not let them?
Heh true, thanks for the writeup. I just always question myself if I don't waste my time, but I can't let it go for some reason :)
Split of the freeze into bug 56260, more info there.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #17 from Fabian Maurer dark.shadow4@web.de --- Will you be trying to get your patch upstreamed? IMHO that should be acceptable, although I have to hope Alexandre agrees on that.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #18 from Alex Henrie alexhenrie24@gmail.com --- I sent it: https://gitlab.winehq.org/wine/wine/-/merge_requests/5052
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #19 from Fabian Maurer dark.shadow4@web.de --- Are you working on an updated version of this? I don't think I understand how Alexandre wants it implemented.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #20 from Alex Henrie alexhenrie24@gmail.com --- (In reply to Fabian Maurer from comment #19)
Are you working on an updated version of this? I don't think I understand how Alexandre wants it implemented.
I think Alexandre's comment at https://gitlab.winehq.org/wine/wine/-/merge_requests/5052#note_60608 primarily means that he wants Bug 56260 to be fixed first. It may be possible to simplify the patch further, but since the real-mode contexts and pointers are coming from Myst, I don't see how it would be possible to not use real-mode contexts or pointers at all. It seems to me that the best we can do is translate the real-mode segment pointers to flat pointers to the first megabyte of address space and run the interrupt handler in protected mode.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #21 from Fabian Maurer dark.shadow4@web.de --- I think it(In reply to Alex Henrie from comment #20)
I think Alexandre's comment [...] primarily means that he wants Bug 56260 to be fixed first. It may be possible to simplify the patch further, but since the real-mode contexts and pointers are coming from Myst, I don't see how it would be possible to not use real-mode contexts or pointers at all.
Yeah me neither, but it sounds like there is another option. At least that's how I understand it, maybe we should ask for clarification?
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #22 from Fabian Maurer dark.shadow4@web.de --- Are you still working on trying to get this fix upstreamed?
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #23 from Alex Henrie alexhenrie24@gmail.com --- (In reply to Fabian Maurer from comment #22)
Are you still working on trying to get this fix upstreamed?
I just noticed that GitLab reported a conflict on https://gitlab.winehq.org/wine/wine/-/merge_requests/5238 that it couldn't resolve automatically, so I rebased it just now. I'm still holding out hope that both that MR and https://gitlab.winehq.org/wine/wine/-/merge_requests/5052 will be accepted.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #24 from Fabian Maurer dark.shadow4@web.de --- I see, thanks for the update. I have to say having only that comment on the matter, I'm not too hopeful. I'd like to help get this along, but I'm afraid I don't know what I could do.
https://bugs.winehq.org/show_bug.cgi?id=56225
--- Comment #25 from Austin English austinenglish@gmail.com --- Closing.
https://bugs.winehq.org/show_bug.cgi?id=56225
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #26 from Austin English austinenglish@gmail.com --- Actually closing.