[Bug 21107] Portable RDP 6 client fails on startup, claiming "An error occurred. Try to reconnect." (MoleBox application virtualization scheme)

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Dec 26 12:53:55 CST 2013


http://bugs.winehq.org/show_bug.cgi?id=21107

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|-unknown                    |ntdll

--- Comment #5 from Anastasius Focht <focht at 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 at 29@341cb8.### (+0x63b26) (0x0033fa18)
  3 0x4d773c05 in mbx at 29@341cb8.### (+0x63c04) (0x0033fa24)
  4 0x4d773d07 in mbx at 29@341cb8.### (+0x63d06) (0x0033fa60)
  5 0x4d776320 in mbx at 29@341cb8.### (+0x6631f) (0x0033fb0c)
  6 0x4d779040 in mbx at 29@341cb8.### (+0x6903f) (0x0033fb24)
  7 0x4d779773 in mbx at 29@341cb8.### (+0x69772) (0x0033fb48)
  8 0x4d765308 in mbx at 29@341cb8.### (+0x55307) (0x0033fbb0)
  9 0x4d767f6f in mbx at 29@341cb8.### (+0x57f6e) (0x0033fbc8)
  10 0x4d777608 in mbx at 29@341cb8.### (+0x67607) (0x0033fbf0)
  11 0x4d778e58 in mbx at 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/cb0ef08839e515d7a9053923d27ef8899978a263:/dlls/ntdll/actctx.c#l4478

--- 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/38ca35fe573c6d79cec49a580c1544fd992f498e:/include/ntstatus.h#l321

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

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