http://bugs.winehq.org/show_bug.cgi?id=8343
Summary: BridgeBuider just keeps hanging forever Product: Wine Version: CVS Platform: PC URL: http://www.crypticsea.com/bridgebuilding/index.html OS/Version: Linux Status: UNCONFIRMED Keywords: download Severity: normal Priority: P2 Component: wine-user AssignedTo: wine-bugs@winehq.org ReportedBy: xerox_xerox2000@yahoo.co.uk
Hi, a user submitted this as a new application in the appdb, with garbage test results. I gave it a try and indeed it hangs forever leaving only this in the console:
fixme:keyboard:X11DRV_LoadKeyboardLayout L"00000409", 0080: stub! fixme:keyboard:X11DRV_LoadKeyboardLayout L"04090409", 0001: stub! err:ntdll:RtlpWaitForCriticalSection section 0x7bc82b64 "loader.c: loader_section" wait timed out in thread 000e, blocked by 000b, retrying (60 sec)
From a look in the debug trace i can see it does (amongst others) the following
calls over and over again:
000d:Call user32.LoadCursorA(00000000,00007f00) ret=602c8a2f 000d:Ret user32.LoadCursorA() retval=000010de ret=602c8a2f 000d:Call user32.SetCursor(000010de) ret=602c8a3a 000d:Ret user32.SetCursor() retval=000010de ret=602c8a3a
With the following (probably bogus) hack below i was able to start the game. At least the hack shows there might be something wrong in our code for SetCursor.
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index 63465ca..590f6bd 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -1458,9 +1458,10 @@ HCURSOR WINAPI SetCursor( HCURSOR hCursor /* [in] Handle of cursor to show */ ) { struct user_thread_info *thread_info = get_user_thread_info(); HCURSOR hOldCursor; - - if (hCursor == thread_info->cursor) return hCursor; /* No change */ + if (hCursor == thread_info->cursor && thread_info->cursor_count >= 0) return hCursor; /* No change */ TRACE("%p\n", hCursor); hOldCursor = thread_info->cursor; thread_info->cursor = hCursor; /* Change the cursor shape only if it is visible */