https://bugs.winehq.org/show_bug.cgi?id=39361
Bug ID: 39361 Summary: WildStar Launcher2 crashes immediately after startup Product: Wine-staging Version: 1.7.51 Hardware: x86 URL: http://wildstar.patcher.ncsoft.com/Wildstar.exe OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: xomachiner@gmail.com CC: erich.e.hoover@wine-staging.com, michael@fds-team.de, sebastian@fds-team.de Distribution: ArchLinux
Created attachment 52461 --> https://bugs.winehq.org/attachment.cgi?id=52461 Application calls
WildStar Launcher2 crashes without any error message right after start. The problem probably in shell32.dll component. There is some results of investigation:
1. System calls The application before being crashed done two important calls (application related call log attached below): CreateActCtxW(structure) and GetLastError()
The first of them returns 0xffffffff (-1) and the second returns 0x715 The mentioned "structure" have following data:
typedef struct tagACTCTX { ULONG cbSize = 0x20; DWORD dwFlags = ACTCTX_FLAG_SET_PROCESS_DEFAULT | ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID; LPCWSTR lpSource = (by pointer) "shell32.dll"; USHORT wProcessorArchitecture = 0x0; LANGID wLangId = 0x0; LPCTSTR lpAssemblyDirectory = (by pointer) "c:\windows\system32"; LPCTSTR lpResourceName = (instead of pointer) 0x0000007c; LPCTSTR lpApplicationName = NULL; HMODULE hModule = NULL; }
A quick check of MSDN showed that return value -1(INVALID_HANDLE_VALUE) from first call means that function failed to create a handle, and errorcode obtained from GetLastError function related to resource problem (ERROR_RESOURCE_TYPE_NOT_FOUND)
2. Dirty hack Moreover if the returnvalue of CreateActCtxW will be replaced on the fly (using winedbg), the application runs further and shows launcher window. (Not always, there are some other problems which can crash application before window drawing)
If shell32.dll will be replaced by original one from WinXP, the application also passes this call but crashes in another place.