[Bug 38960] Steam 'steamwebhelper.exe' based on CEF v3.2357.1273 - Chromium v44.0.2378.0 crashes in Win7 mode ('kernel32.SetFileCompletionNotificationModes' is a stub)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Jul 22 16:02:27 CDT 2015


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
             Status|UNCONFIRMED                 |NEW
                URL|                            |https://steamcdn-a.akamaihd
                   |                            |.net/client/installer/Steam
                   |                            |Setup.exe
                 CC|                            |focht at gmx.net
          Component|-unknown                    |kernel32
            Summary|Steam 'steamwebhelper.exe'  |Steam 'steamwebhelper.exe'
                   |crashes                     |based on CEF v3.2357.1273 -
                   |                            |Chromium v44.0.2378.0
                   |                            |crashes in Win7 mode
                   |                            |('kernel32.SetFileCompletio
                   |                            |nNotificationModes' is a
                   |                            |stub)
     Ever confirmed|0                           |1

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

confirming.

Relevant part of trace log:

--- snip ---
...
0049:Call PE DLL (proc=0x11856549,module=0x10000000
L"libcef.dll",reason=THREAD_ATTACH,res=(nil))
...
0049:Ret  PE DLL (proc=0x11856549,module=0x10000000
L"libcef.dll",reason=THREAD_ATTACH,res=(nil)) retval=1
0049:Call TLS callback
(proc=0x4c8ff0,module=0x400000,reason=THREAD_ATTACH,reserved=0)
0049:Ret  TLS callback
(proc=0x4c8ff0,module=0x400000,reason=THREAD_ATTACH,reserved=0)
0049:Starting thread proc 0x100667c0 (arg=0x182678)
...
0049:Call KERNEL32.CreateIoCompletionPort(ffffffff,00000000,00000000,00000001)
ret=100a5340
0049:Ret  KERNEL32.CreateIoCompletionPort() retval=00000164 ret=100a5340
...
0049:Call
KERNEL32.GetQueuedCompletionStatus(00000164,0218e834,0218e80c,0218e81c,00000000)
ret=100a5617
0049:Ret  KERNEL32.GetQueuedCompletionStatus() retval=00000000 ret=100a5617
...
0049:Call KERNEL32.GetModuleHandleA(123c1bcc "user32.dll") ret=109a282c
0049:Ret  KERNEL32.GetModuleHandleA() retval=7ec20000 ret=109a282c
0049:Call KERNEL32.GetProcAddress(7ec20000,123c1bd8 "IsImmersiveProcess")
ret=109a2838
0049:Ret  KERNEL32.GetProcAddress() retval=00000000 ret=109a2838
...
0049:Call KERNEL32.GetModuleHandleW(122dae10 L"kernel32.dll") ret=111dad95
0049:Ret  KERNEL32.GetModuleHandleW() retval=7b820000 ret=111dad95
0049:Call KERNEL32.GetProcAddress(7b820000,11f0ad48
"SetFileCompletionNotificationModes") ret=111dada5
0049:Ret  KERNEL32.GetProcAddress() retval=7b8310b4 ret=111dada5
0049:Call KERNEL32.GetProcAddress(7b820000,11f0add0 "CancelIoEx") ret=111dadb0
0049:Ret  KERNEL32.GetProcAddress() retval=7b82cbfc ret=111dadb0
...
0049:Call KERNEL32.SetFileCompletionNotificationModes(0000021c,00000001)
ret=111db06f
0049:fixme:file:SetFileCompletionNotificationModes 0x21c 1 - stub
0049:Ret  KERNEL32.SetFileCompletionNotificationModes() retval=00000000
ret=111db06f
0049:trace:seh:raise_exception code=80000003 flags=0 addr=0x100894f9
ip=100894fa tid=0049
0049:trace:seh:raise_exception  eax=00000000 ebx=00000000 ecx=1245a910
edx=0218ef4c esi=001c5790 edi=001c6948
0049:trace:seh:raise_exception  ebp=0218e530 esp=0218e518 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00200246
0049:trace:seh:call_stack_handlers calling handler at 0x7bcb1e33 code=80000003
flags=0
0049:Call KERNEL32.UnhandledExceptionFilter(0218e004) ret=7bcb1e6d
--- snip ---

Version info resource dump on 'libcef.dll' to determine the exact CEF version:

--- snip ---
1 VERSIONINFO
FILEVERSION 3,2357,1273,0
PRODUCTVERSION 3,2357,1273,0
FILEOS 0x4
FILETYPE 0x2
{
  BLOCK "StringFileInfo"
  {
      BLOCK "040904b0"
      {
          VALUE "FileDescription", "Chromium Embedded Framework (CEF) Dynamic
Link Library"
          VALUE "FileVersion", "3.2357.1273.g41b7170"
          VALUE "InternalName", "libcef"
          VALUE "LegalCopyright", "Copyright (C) 2015 The Chromium Embedded
Framework Authors"
          VALUE "OriginalFilename", "libcef.dll"
          VALUE "ProductName", "Chromium Embedded Framework (CEF) Dynamic Link
Library"
          VALUE "ProductVersion", "3.2357.1273.g41b7170"
      }
  }

  BLOCK "VarFileInfo"
  {
      VALUE "Translation", 0x0409 0x04B0
  }
}
--- snip ---

-> CEF v3, branch 2357

https://cefbuilds.com/#branch_2357

--- snip ---
2015-04-27 CEF 3.2378.1268.g4715a16 (67MB) - Chromium 44.0.2378.0 gc03558c9
Test App (21MB)
Debug Symbols (120MB)
Release Symbols (109MB)
--- snip ---

The symbol information (PDB) can't be used here, it's a custom build.

Reviewing the Chromium project sources is enough.

--- snip ---
$ svn co https://src.chromium.org/chrome/trunk/src/mojo
--- snip ---

https://src.chromium.org/viewvc/chrome/trunk/src/mojo/system/raw_channel_win.cc

--- snip ---
...
22 namespace mojo {
23 namespace system {
24
25     namespace {
26
27     class VistaOrHigherFunctions {
28      public:
29       VistaOrHigherFunctions();
30
31       bool is_vista_or_higher() const { return is_vista_or_higher_; }
32
33       BOOL SetFileCompletionNotificationModes(HANDLE handle, UCHAR flags) {
34         return set_file_completion_notification_modes_(handle, flags);
35       }
...
51     VistaOrHigherFunctions::VistaOrHigherFunctions()
52         : is_vista_or_higher_(base::win::GetVersion() >=
base::win::VERSION_VISTA),
53           set_file_completion_notification_modes_(NULL),
54           cancel_io_ex_(NULL) {
55       if (!is_vista_or_higher_)
56         return;
57
58       HMODULE module = GetModuleHandleW(L"kernel32.dll");
59       set_file_completion_notification_modes_ =
60           reinterpret_cast<SetFileCompletionNotificationModesFunc>(
61               GetProcAddress(module, "SetFileCompletionNotificationModes"));
62       DCHECK(set_file_completion_notification_modes_);
63
64       cancel_io_ex_ =
65           reinterpret_cast<CancelIoExFunc>(GetProcAddress(module,
"CancelIoEx"));
66       DCHECK(cancel_io_ex_);
67     }
68
69 base::LazyInstance<VistaOrHigherFunctions> g_vista_or_higher_functions =
70         LAZY_INSTANCE_INITIALIZER;
...
527 bool RawChannelWin::OnInit() {
528       DCHECK_EQ(base::MessageLoop::current(), message_loop_for_io());
529
530       DCHECK(handle_.is_valid());
531       if (skip_completion_port_on_success_ &&
532          
!g_vista_or_higher_functions.Get().SetFileCompletionNotificationModes(
533               handle_.get().handle, FILE_SKIP_COMPLETION_PORT_ON_SUCCESS))
{
534         return false;
535       }
536
537       DCHECK(!io_handler_);
538       io_handler_ = new RawChannelIOHandler(this, handle_.Pass());
539
540       return true;
541 }
--- snip ---

MSDN:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365538%28v=vs.85%29.aspx

Source:
https://source.winehq.org/git/wine.git/blob/01e538588282b521e86d299817e7335a736fdd3a:/dlls/kernel32/file.c#l1046

--- snip ---
1046 BOOL WINAPI SetFileCompletionNotificationModes( HANDLE handle, UCHAR flags
)
1047 {
1048     FIXME("%p %x - stub\n", handle, flags);
1049     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
1050     return FALSE;
1051 }
--- snip ---

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