[Bug 38960] Multiple applications need ' kernel32.SetFileCompletionNotificationModes' implementation (Steam ' steamwebhelper.exe' and Blizzard Battle.net desktop app CEF v3.2+/ Chromium v44+ crash in Win7 mode, Sony Xperia Companion 1.7.x)

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Oct 25 17:27:24 CDT 2018


https://bugs.winehq.org/show_bug.cgi?id=38960

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|STAGED                      |RESOLVED
      Fixed by SHA1|                            |139cc95610d7c14a5eab62df971
                   |                            |fe5505b0b067c
         Resolution|---                         |FIXED

--- Comment #82 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

most of the applications listed/referenced here are now fixed with recent
commits. I've tested some dupes.

*
https://source.winehq.org/git/wine.git/commitdiff/139cc95610d7c14a5eab62df971fe5505b0b067c
("kernel32: Add SetFileCompletionNotificationModes implementation.")

*
https://source.winehq.org/git/wine.git/commitdiff/18e074b0f30e8067c0901979308e961627b182a3
("server: Support FILE_SKIP_COMPLETION_PORT_ON_SUCCESS on client-side asyncs.")

*
https://source.winehq.org/git/wine.git/commitdiff/c0996553a1d9056e1b89871fc8c3fb0bfb5a4f0c
("server: Support FILE_SKIP_COMPLETION_PORT_ON_SUCCESS on server-side asyncs.")

*
https://source.winehq.org/git/wine.git/commitdiff/2f17e0112dc0af3f0b246cf377e2cb8fd7a6cf58
("ntdll: Add setting FileIoCompletionNotificationInformation implementation.")

Thanks Sebastian, Jacek, Alistair, Zebediah

There are still use-cases (apps) where special mode flags are not supported,
such as 'FILE_SKIP_SET_EVENT_ON_HANDLE':

https://golang.org/src/internal/poll/fd_windows.go?#L381

--- snip ---
...
if pollable && useSetFileCompletionNotificationModes {
    // We do not use events, so we can skip them always.
    flags := uint8(syscall.FILE_SKIP_SET_EVENT_ON_HANDLE)
    // It's not safe to skip completion notifications for UDP:
    //
https://blogs.technet.com/b/winserverperformance/archive/2008/06/26/designing-applications-for-high-performance-part-iii.aspx
    if net == "tcp" {
        flags |= syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS
    }
    err := syscall.SetFileCompletionNotificationModes(fd.Sysfd, flags)
    if err == nil && flags&syscall.FILE_SKIP_COMPLETION_PORT_ON_SUCCESS != 0 {
        fd.skipSyncNotif = true
    }
}
// Disable SIO_UDP_CONNRESET behavior.
// http://support.microsoft.com/kb/263823
switch net {
case "udp", "udp4", "udp6":
    ret := uint32(0)
    flag := uint32(0)
    size := uint32(unsafe.Sizeof(flag))
    err := syscall.WSAIoctl(fd.Sysfd, syscall.SIO_UDP_CONNRESET,
(*byte)(unsafe.Pointer(&flag)), size, nil, 0, &ret, nil, 0)
        if err != nil {
            return "wsaioctl", err
        }
}
...
---- snip ---

(also Steam client)

They deserve a separate ticket.

$ wine --version
wine-3.18-218-g13cdcdae1a

Regards

-- 
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.



More information about the wine-bugs mailing list