[Bug 59984] New: NtSetInformationFile(FilePositionInformation) on anonymous pipes differs from Windows and breaks pZLib/unarc streams
http://bugs.winehq.org/show_bug.cgi?id=59984 Bug ID: 59984 Summary: NtSetInformationFile(FilePositionInformation) on anonymous pipes differs from Windows and breaks pZLib/unarc streams Product: Wine Version: 11.12 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@list.winehq.org Reporter: brandowlucas@gmail.com Target Milestone: --- Distribution: --- Created attachment 81387 --> http://bugs.winehq.org/attachment.cgi?id=81387 +file,+ntdll I originally hit this while trying to get a FitGirl repack installer working under Wine (https://bugs.winehq.org/show_bug.cgi?id=50824). The installer used FreeArc/unarc with pZLib, and it consistently failed during streamed decompression. After reducing it, the issue is not specific to the installer. Reproducer: https://github.com/BrandowLucas/wine_pipe_seek_bug_reproducer That repo has the source, prebuilt test binaries, synthetic pZLib input, Windows/Wine logs, and the candidate patch I tested. The important mismatch is that Windows accepts FilePositionInformation set requests on anonymous pipe handles, while Wine rejects them with STATUS_INVALID_DEVICE_REQUEST / ERROR_SEEK_ON_DEVICE. Some pZLib/unarc stream paths appear to rely on this behavior. This is visible in the reproducer’s pipe API probe and in the pZLib pipe-vs-file output comparison. The patch that made the reproducer pass locally is in the repo: https://github.com/BrandowLucas/wine_pipe_seek_bug_reproducer/blob/main/patc... After applying it, the pZLib pipe-mode output matches file-mode output under Wine. Note for new WoW64 testing: if this is tested through Wine’s new WoW64 mode, in my case the FitGirl Repack also needed Federico Dossena’s separate workaround from https://bugs.winehq.org/show_bug.cgi?id=50824#c8. References: FILE_POSITION_INFORMATION: https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_f... NtSetInformationFile: https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntif... MS-FSA FilePositionInformation: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fsa/f286a3f... One caveat: the Win32 SetFilePointerEx documentation says seeking on pipes is unsupported/undefined: https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-setfi... But the native FilePositionInformation behavior is still observable on Windows, and the affected pZLib/unarc stream path appears to depends on it. Unarc error codes (-12 CRC check failed, in this case): https://www.opendll.com/index.php?arch=32bit&file-download=unarc.dll&version -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59984 Ken Sharp <imwellcushtymelike@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, source URL| |https://github.com/BrandowL | |ucas/wine_pipe_seek_bug_rep | |roducer -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla