http://bugs.winehq.org/show_bug.cgi?id=21107
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |ntdll
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello again,
actually it's expected that CreateActCtxW()/RtlCreateActivationContext() fails at this place due to invalid 'lpSource' argument (file/path only exists as mapping in memory). The problem is what Wine returns as last error.
Application code in question (annotated):
--- snip --- ... 4D773B1B 8D85 A8FDFFFF LEA EAX,[EBP-258] 4D773B21 50 PUSH EAX 4D773B22 E8 26FEFFFF CALL 4D77394D ; sub calls CreateActCtxW() 4D773B27 8985 C8FDFFFF MOV DWORD PTR SS:[EBP-238],EAX 4D773B2D 83F8 FF CMP EAX,-1 4D773B30 75 2A JNE SHORT 4D773B5C 4D773B32 FF15 7C14714D CALL DWORD PTR DS:[4D71147C] ; GetLastError() 4D773B38 3D 14070000 CMP EAX,714 ; ERROR_RESOURCE_DATA_NOT_FOUND 4D773B3D 74 15 JE SHORT 4D773B54 ; good guy 4D773B3F 3D 15070000 CMP EAX,715 ; ERROR_RESOURCE_TYPE_NOT_FOUND 4D773B44 74 0E JE SHORT 4D773B54 ; good guy 4D773B46 3D 17070000 CMP EAX,717 ; ERROR_RESOURCE_LANG_NOT_FOUND 4D773B4B 74 07 JE SHORT 4D773B54 ; good guy 4D773B4D 3D 16070000 CMP EAX,716 ; ERROR_RESOURCE_NAME_NOT_FOUND 4D773B52 75 65 JNE SHORT 4D773BB9 ; bad guy 4D773B54 33C0 XOR EAX,EAX ... --- snip ---
Debugger session:
--- snip --- Wine-dbg>bt
Backtrace: =>0 0x7bc32533 RtlCreateActivationContext+0x202(handle=<couldn't compute location>, ptr=<couldn't compute location>) [/home/focht/projects/wine/wine-git/dlls/ntdll/actctx.c:4522] in ntdll (0x0033f708) 1 0x7b82723d CreateActCtxW+0x94(pActCtx=<couldn't compute location>) [/home/focht/projects/wine/wine-git/dlls/kernel32/actctx.c:124] in kernel32 (0x0033f778) 2 0x4d773b27 in mbx@29@341cb8.### (+0x63b26) (0x0033fa18) 3 0x4d773c05 in mbx@29@341cb8.### (+0x63c04) (0x0033fa24) 4 0x4d773d07 in mbx@29@341cb8.### (+0x63d06) (0x0033fa60) 5 0x4d776320 in mbx@29@341cb8.### (+0x6631f) (0x0033fb0c) 6 0x4d779040 in mbx@29@341cb8.### (+0x6903f) (0x0033fb24) 7 0x4d779773 in mbx@29@341cb8.### (+0x69772) (0x0033fb48) 8 0x4d765308 in mbx@29@341cb8.### (+0x55307) (0x0033fbb0) 9 0x4d767f6f in mbx@29@341cb8.### (+0x57f6e) (0x0033fbc8) 10 0x4d777608 in mbx@29@341cb8.### (+0x67607) (0x0033fbf0) 11 0x4d778e58 in mbx@29@341cb8.### (+0x68e57) (0x0033fc00) 12 0x0101cad2 in mstsc (+0x1cad1) (0x0033fc70) 13 0x010195f1 in mstsc (+0x195f0) (0x0033fc90) 14 0x01019808 in mstsc (+0x19807) (0x0033fcd0) 15 0x01028a47 in mstsc (+0x28a46) (0x0033fcf8) 16 0x01034fa2 in mstsc (+0x34fa1) (0x0033fd54) 17 0x01035277 in mstsc (+0x35276) (0x0033fd80) 18 0x010354a4 in mstsc (+0x354a3) (0x0033fe10) 19 0x010aba12 in mstsc (+0xaba11) (0x010b9ffc)
Wine-dbg>p *pActCtx {cbSize=0x20, dwFlags=0x88, lpSource="C:\PROGRAM FILES\RDP6 PORTABLE CLIENT\mstscax.dll", wProcessorArchitecture=0xf7f0, wLangId=0x33, lpAssemblyDirectory="?", lpResourceName=*** invalid address 0x3 ***, lpApplicationName="", hModule=0x4d710000} --- snip ---
Source: http://source.winehq.org/git/wine.git/blob/cb0ef08839e515d7a9053923d27ef8899...
--- snip --- 4478 NTSTATUS WINAPI RtlCreateActivationContext( HANDLE *handle, const void *ptr ) 4479 { 4480 const ACTCTXW *pActCtx = ptr; /* FIXME: not the right structure */ 4481 const WCHAR *directory = NULL; 4482 ACTIVATION_CONTEXT *actctx; 4483 UNICODE_STRING nameW; 4484 ULONG lang = 0; 4485 NTSTATUS status = STATUS_NO_MEMORY; 4486 HANDLE file = 0; 4487 struct actctx_loader acl; ... 4521 nameW.Buffer = NULL; 4522 if (pActCtx->lpSource) 4523 { 4524 if (!RtlDosPathNameToNtPathName_U(pActCtx->lpSource, &nameW, NULL, NULL)) 4525 { 4526 status = STATUS_NO_SUCH_FILE; 4527 goto error; 4528 } 4529 status = open_nt_file( &file, &nameW ); 4530 if (status) 4531 { 4532 RtlFreeUnicodeString( &nameW ); 4533 goto error; 4534 } 4535 } 4582 error: 4583 if (file) NtClose( file ); 4584 actctx_release( actctx ); 4585 return status; 4586 } --- snip ---
open_nt_file() -> NtOpenFile() return status=0xc0000034 -> STATUS_OBJECT_NAME_NOT_FOUND
As shown in application code snippet this is not expected.
Any ERROR_RESOURCE_xxx last error will be ok which means that ntdll.RtlCreateActivationContext() must return one of:
http://source.winehq.org/git/wine.git/blob/38ca35fe573c6d79cec49a580c1544fd9...
--- snip --- 321 #define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS) 0xC0000089) 322 #define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS) 0xC000008A) 323 #define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS) 0xC000008B) --- snip ---
With that part fixed the RDP login gui is shown.
Regards