https://bugs.winehq.org/show_bug.cgi?id=55908
Bug ID: 55908 Summary: Regression beginning with 8.17: PNGGauntlet gives an error message and hangs if output folder doesn't exist Product: Wine Version: 8.17 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: NM64+bugs.winehq.org@PM.me Distribution: ---
Created attachment 75452 --> https://bugs.winehq.org/attachment.cgi?id=75452 wine-devel 8.16
Beginning with wine-devel 8.17, PNGGauntlet no longer properly handles if the output folder doesn't already exists.
In wine-devel 8.16 it would ask that the location doesn't exist and if it should be created, and it'd "just work" without issue.
In wine-devel 8.17 and newer (including the newest 8.20), you get some sort of error message instead and the program can end up hanging.
Attached are two demonstration videos, one using wine-devel 8.16 and the other 8.17, showing the entire process from scratch on a live ISO session of Linux Mint 21.2 Cinnamon.
I've also attached the terminal output as well as the information that the error message returns.
(oh and, is it just me, or is the "Compiling Wine" steps of https://wiki.winehq.org/Regression_Testing completely out of date, at least when testing in live ISO sessions of modern Debian-based distros like not only the aforementioned Linux Mint 21.2 Cinnamon but also LMDE 6 and Xubuntu 23.10)
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #1 from NM64+bugs.winehq.org@PM.me --- Created attachment 75453 --> https://bugs.winehq.org/attachment.cgi?id=75453 wine-devel 8.17
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #2 from NM64+bugs.winehq.org@PM.me --- Created attachment 75454 --> https://bugs.winehq.org/attachment.cgi?id=75454 output from terminal
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #3 from NM64+bugs.winehq.org@PM.me --- Created attachment 75455 --> https://bugs.winehq.org/attachment.cgi?id=75455 error output within PNGGauntlet itself
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #4 from NM64+bugs.winehq.org@PM.me --- To be clear, only the "wine-devel 8.16" file is with 8.16; all other files including the error output and the terminal output are with wine-devel 8.17.
https://bugs.winehq.org/show_bug.cgi?id=55908
NM64+bugs.winehq.org@PM.me changed:
What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |Ubuntu
https://bugs.winehq.org/show_bug.cgi?id=55908
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression Severity|major |normal
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #5 from NM64+bugs.winehq.org@PM.me --- Oh an, despite the videos being recorded on Mint, I tagged the OS as "Ubuntu" because the exact same issue occurs on Xubuntu 23.04, and since Mint 21.2 is derived from Ubuntu and isn't the actual latest release which is LMDE 6, I figured "Ubuntu" was a better choice anyway.
https://bugs.winehq.org/show_bug.cgi?id=55908
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download CC| |dark.shadow4@web.de URL| |https://pnggauntlet.com/PNG | |Gauntlet-3.1.2.exe
--- Comment #6 from Fabian Maurer dark.shadow4@web.de --- I only encounter bug 55913, where you can't create the output folder a second time.
Sorry, cannot reproduce. There seems to be going something wrong with the taskdialog, but it works for me. Can you do a regression test?
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #7 from NM64+bugs.winehq.org@PM.me --- (In reply to Fabian Maurer from comment #6)
Sorry, cannot reproduce. There seems to be going something wrong with the taskdialog, but it works for me.
Really? Even when doing the exact thing I show in my demonstration video? I used a live ISO session specifically for easy reproducing, but you're saying doing that exact thing doesn't cause the problem to occur on your end?
Can you do a regression test?
I cannot. As mentioned in my first comment, the steps for compiling seem to be outdated using the "debian-based" example on the "Regression_Testing" wiki page, and I have basically no software-dev skills to know my way around otherwise (no, I'm not just being humble).
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #8 from Fabian Maurer dark.shadow4@web.de --- I only tested on my machine (Arch Linux). I can try the VM approach, although I'm not exactly sure what would be different.
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #9 from NM64+bugs.winehq.org@PM.me --- (In reply to Fabian Maurer from comment #8)
I only tested on my machine (Arch Linux). I can try the VM approach, although I'm not exactly sure what would be different.
Even though I used a VM for the video recording, it occurred on real hardware as well.
I'd think it's more of an Arch vs Debian thing? I mean, there's another PNGGauntlet bug reported on Fedora that I have never ran into over on Linux Mint despite having regularly used PNGGauntlet for quite a while now (over a year on Linux Mint, upwards of a decade on Windows): https://bugs.winehq.org/show_bug.cgi?id=54409
https://bugs.winehq.org/show_bug.cgi?id=55908
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW
--- Comment #10 from Fabian Maurer dark.shadow4@web.de --- I figured it out, it only affects 64bit WINEPREFIXES.
Bisected to commit a81c53504ae32715e6e91bd020fdebd5bef20d48 Author: Alexandre Julliard julliard@winehq.org Date: Thu Sep 28 16:30:32 2023 +0200
ntdll: Release the low address space reservation for 64-bit apps.
Removing the lines
else free_reserved_memory( 0, (char *)0x7ffe0000 );
makes it work again.
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #11 from Fabian Maurer dark.shadow4@web.de --- I checked the code from Microsoft.WindowsAPICodePack.dll, and its TaskDialog implementation takes the pointer and casts it to an int... This obviously breaks with 64bit pointers.
Before the blamed commit the address is in the 32bit address range, so this works. Afterwards it's bigger (e.g. 00007FFFFF16DD40), so the code breaks. Not sure what we can do here, if anything.
https://bugs.winehq.org/show_bug.cgi?id=55908
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Regression beginning with |PNGGauntlet expects |8.17: PNGGauntlet gives an |LocalAlloc addresses to fit |error message and hangs if |into 32bit int, breaks on |output folder doesn't exist |64bit due to recent memory | |changes
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #12 from Nikolay Sivov bunglehead@gmail.com --- Where is the code for this module?
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #13 from Fabian Maurer dark.shadow4@web.de --- (In reply to Nikolay Sivov from comment #12)
Where is the code for this module?
You can find the code at https://github.com/Wagnerp/Windows-API-CodePack-NET/blob/main/Source/Origina...
Inside source/WindowsAPICodePack/Core/Interop/TaskDialogs/NativeTaskDialog.cs:
private static IntPtr AllocateAndMarshalButtons(TaskDialogNativeMethods.TaskDialogButton[] structs) { IntPtr initialPtr = Marshal.AllocHGlobal( Marshal.SizeOf(typeof(TaskDialogNativeMethods.TaskDialogButton)) * structs.Length);
IntPtr currentPtr = initialPtr; foreach (TaskDialogNativeMethods.TaskDialogButton button in structs) { Marshal.StructureToPtr(button, currentPtr, false); currentPtr = (IntPtr)((int)currentPtr + Marshal.SizeOf(button)); } return initialPtr;
}
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #14 from Nikolay Sivov bunglehead@gmail.com --- Ok, thanks. So the question is now if it's a bug in this managed wrapper, or if LocalAlloc(FIXED) is supposed to enforce 32-bit address on 64-bit. That's something to try on Windows.
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #15 from Fabian Maurer dark.shadow4@web.de --- Created attachment 75472 --> https://bugs.winehq.org/attachment.cgi?id=75472 Basic test program
On my Win7 VM this returns an "error" at i = 3380, on Win10 it immediately fails at i = 0. For some reason PngGauntlet still works on Win10 though, not sure why that is.
https://bugs.winehq.org/show_bug.cgi?id=55908
Bernhard Übelacker bernhardu@mailbox.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bernhardu@mailbox.org
--- Comment #16 from Bernhard Übelacker bernhardu@mailbox.org --- Could the address possibly originate from the stack instead of the heap? At least I tried to have a deeper look in #55761, which bisected to the same commit a81c53504a, and there it looks like it is caused by the upper 32bit of a $rsp register.
Following test should show the stack addresses, and they seem to stay below the 32bit limit at windows: https://testbot.winehq.org/JobDetails.pl?Key=140078&f201=exe64.report#k2...
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #17 from Fabian Maurer dark.shadow4@web.de --- (In reply to Bernhard Übelacker from comment #16)
Could the address possibly originate from the stack instead of the heap?
I'm pretty sure not. See
https://github.com/madewokherd/mono/blob/ef5231338e2a6a038e56df722c6349f64f2...
and
https://github.com/madewokherd/mono/blob/2542811634f28523dac3b35d59a71befcb8...
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #18 from Bernhard Übelacker bernhardu@mailbox.org --- (In reply to Fabian Maurer from comment #17)
I'm pretty sure not. See
You are right. And I was searching a little further in #55761. And found something silmilar, a clearing of the lower half what later becomes a size given to malloc. Seems the upper half might be usually zero on windows.
https://bugs.winehq.org/show_bug.cgi?id=55908
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |DUPLICATE Status|NEW |RESOLVED
--- Comment #19 from Fabian Maurer dark.shadow4@web.de --- Marking as dupe of 55833 to collect similar issues.
*** This bug has been marked as a duplicate of bug 55833 ***
https://bugs.winehq.org/show_bug.cgi?id=55908
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #20 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Closing duplicate.
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #21 from NM64+bugs.winehq.org@PM.me --- (In reply to Fabian Maurer from comment #6)
Can you do a regression test?
The following is why I cannot: https://bugs.winehq.org/show_bug.cgi?id=55958
https://bugs.winehq.org/show_bug.cgi?id=55908
--- Comment #22 from Bernhard Übelacker bernhardu@mailbox.org --- (In reply to NM64+bugs.winehq.org from comment #21)
(In reply to Fabian Maurer from comment #6)
Can you do a regression test?
I guess Fabian could already do this regression test, because he wrote in comment #10:
I figured it out, it only affects 64bit WINEPREFIXES. Bisected to commit a81c53504ae32715e6e91bd020fdebd5bef20d48
https://bugs.winehq.org/show_bug.cgi?id=55908
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|DUPLICATE |FIXED Fixed by SHA1| |f03c3a167c2e4abe92b1e1bf2ea | |5f7c31a07fc3b
--- Comment #23 from Fabian Maurer dark.shadow4@web.de --- Also fixed by https://source.winehq.org/git/wine.git/commitdiff/f03c3a167c2e4abe92b1e1bf2e...
https://bugs.winehq.org/show_bug.cgi?id=55908
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|CLOSED |RESOLVED
https://bugs.winehq.org/show_bug.cgi?id=55908
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #24 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 9.0-rc2.