https://bugs.winehq.org/show_bug.cgi?id=53709
Bug ID: 53709 Summary: Janes Longbow 2 crashes due to privileged instruction in 32bit code Product: Wine Version: 7.0 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: cmsj@tenshu.net Distribution: ---
Created attachment 73131 --> https://bugs.winehq.org/attachment.cgi?id=73131 backtrace.txt
I'm trying to get 1997's "Jane's Longbow 2" running. I've tried Crossover on macOS and Bottles on a SteamDeck and in both cases I get a crash while launching the game, with an error message about a privileged instruction.
Since the game has long since stopped being sold, it's fairly easily available in software preservation archives, if anybody is interested in taking a look.
I've attached a backtrace from the Steam Deck.
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #1 from Chris Jones cmsj@tenshu.net --- AFAICT this particular game has never worked in WINE, there are nearly identical comments reporting the same issue since 2007: https://bugs.winehq.org/show_bug.cgi?id=9652#c8
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #2 from Zeb Figura z.figura12@gmail.com --- Wine build: wine-7.0.r0.g2fc92f8b ( TkG Staging )
I'm going to assume it's not relevant here, but in the future please either test with upstream wine, or report bugs to third-party projects.
Does changing the Windows version to Windows 95 help? You may need to create a new 32-bit prefix.
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #3 from Chris Jones cmsj@tenshu.net --- I am not very good at wrangling a disassembler, but I think this is the relevant section of code:
; ================ B E G I N N I N G O F P R O C E D U R E ================
; Variables: ; arg_4: int, 8 ; arg_0: int, 4
sub_4530a0: 004530a0 xor eax, eax ; CODE XREF=sub_412273+26 004530a2 mov dx, word [esp+arg_0] 004530a7 mov al, byte [esp+arg_4] 004530ab out dx, al 004530ac ret ; endp
so 0x4530ab would be a call to OUT, which I guess could make some sense as a privilege error if it's trying to write to some IO port it's not allowed to?
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #4 from Chris Jones cmsj@tenshu.net --- (In reply to Zeb Figura from comment #2)
Wine build: wine-7.0.r0.g2fc92f8b ( TkG Staging )
I'm going to assume it's not relevant here, but in the future please either test with upstream wine, or report bugs to third-party projects.
Does changing the Windows version to Windows 95 help? You may need to create a new 32-bit prefix.
I've tried a number of different versions and it seems to be pretty consistent throughout. Apologies for using a non-upstream wine.
https://bugs.winehq.org/show_bug.cgi?id=53709
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #5 from Zeb Figura z.figura12@gmail.com --- Hrm, usually (In reply to Chris Jones from comment #4)
(In reply to Zeb Figura from comment #2)
Does changing the Windows version to Windows 95 help? You may need to create a new 32-bit prefix.
I've tried a number of different versions and it seems to be pretty consistent throughout. Apologies for using a non-upstream wine.
Wine build: wine-7.0.r0.g2fc92f8b ( TkG Staging )
I'm going to assume it's not relevant here, but in the future please either test with upstream wine, or report bugs to third-party projects.
Hrm. It should be trying to emulate the outsb in windows 95 mode. Can you please attach a log with the version set to windows 95 and WINEDEBUG=+pid,+module,+seh,+int,+io ?
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #6 from Chris Jones cmsj@tenshu.net --- Ok, some progress at least - I switched to upstream wine and ran it on Linux instead of macOS, and the game is at least trying to start now - I was able to get it to object to not having a CD present, but when mounting that and running again, I get a different crash that looks to be in something DLL related.
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #7 from Chris Jones cmsj@tenshu.net --- Created attachment 73137 --> https://bugs.winehq.org/attachment.cgi?id=73137 wine-debug-longbow2.txt
https://bugs.winehq.org/show_bug.cgi?id=53709
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW
--- Comment #8 from Zeb Figura z.figura12@gmail.com --- The crashing address from the backtrace is not quite right; it seems to result from a misguided attempt to handle access to the idtr in kernelbase. The actual crash is a few instructions earlier, though. Either way it's in an application DLL, with no easy clue what's causing it.
https://bugs.winehq.org/show_bug.cgi?id=53709
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Janes Longbow 2 crashes due |Janes Longbow 2 crashes on |to privileged instruction |launch |in 32bit code |
https://bugs.winehq.org/show_bug.cgi?id=53709
--- Comment #9 from Chris Jones cmsj@tenshu.net --- Thanks very much for helping with the analysis here - I am definitely out of my depth! I don't think I am realistically going to be able to step through the assembly and debug this, but there is at least one other version of the game around, and it can be run in 3dfx/Direct3D/software rendering modes, so I'll try out some permutations and see if anything changes.