[Bug 24328] Filter Forge 2 demo fails to launch with error: <class XFW::OSCallError> ::GetScrollInfo failed. (ExeCryptor protection)

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Apr 10 16:16:53 CDT 2012


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |focht at gmx.net
          Component|-unknown                    |user32
     Ever Confirmed|0                           |1

--- Comment #4 from Anastasius Focht <focht at gmx.net> 2012-04-10 16:16:53 CDT ---
Hello,

confirming.

That app protection is a bit annoying, employing several
anti-debugging/anti-attach tricks (openprocess security, high priority watchdog
threads, TLS callbacks with debugger threads/entry points detection etc.).

The problem seems to be GetScrollInfo() -> SCROLL_GetScrollInfo() ->
SCROLL_GetInternalInfo() failing due to returned infoPtr == NULL and alloc ==
FALSE.
The internal SCROLLBAR_INFO structure (wndPtr->pScroll) has not yet been
allocated yet in message sequence between window creation and GetScrollInfo()
call.

Relevant trace log, window with v+h scroll bar styles gets created:

--- snip ---
...
0026:Call user32.CreateWindowExW(00000004,0000c043,00b2fd78
L"",52300000,00000000,00000000,00000000,00000000,000100dc,00000000,00400000,00000000)
ret=00595fd3
0026:trace:win:WIN_CreateWindowEx L"" #c043 ex=00000004 style=52300000 0,0 0x0
parent=0x100dc menu=(nil) inst=0x400000 params=(nil)
0026:trace:win:dump_window_styles style: WS_CHILD WS_VISIBLE WS_CLIPCHILDREN
WS_VSCROLL WS_HSCROLL
0026:trace:win:dump_window_styles exstyle: WS_EX_NOPARENTNOTIFY 
...
0026:trace:win:WIN_CreateWindowEx created window 0x100de
0026:Ret  user32.CreateWindowExW() retval=000100de ret=00595fd3
...
0026:trace:win:WIN_SetWindowLong 0x100de -12 248b090 W
0026:Ret  user32.SetWindowLongW() retval=00000000 ret=0057a241 
...
0026:Call user32.SetWindowLongW(000100de,fffffffc,0057ca50) ret=0057a3c0
0026:trace:win:WIN_SetWindowLong 0x100de -4 57ca50 W
0026:trace:win:alloc_winproc reusing 0xffff0025 for 0x57ca50
0026:Ret  user32.SetWindowLongW() retval=7ec6896c ret=0057a3c0 
...
0026:Call user32.ShowScrollBar(000100de,00000003,00000001) ret=005a15a0
0026:trace:scroll:SCROLL_ShowScrollBar hwnd=0x100de bar=3 horz=1, vert=1
0026:Ret  user32.ShowScrollBar() retval=00000001 ret=005a15a0
...
0026:Call user32.ShowScrollBar(000100de,00000003,00000000) ret=005a1628
0026:trace:scroll:SCROLL_ShowScrollBar hwnd=0x100de bar=3 horz=0, vert=0 
...
0026:Ret  user32.ShowScrollBar() retval=00000001 ret=005a1628
...
0026:Call user32.GetWindowRect(000100de,0033265c) ret=00577190
0026:trace:win:GetWindowRect hwnd 0x100de (12,297)-(12,297)
0026:Ret  user32.GetWindowRect() retval=00000001 ret=00577190 
...
0026:Call user32.TranslateMessage(003328b4) ret=0057b80d
0026:Ret  user32.TranslateMessage() retval=00000000 ret=0057b80d
0026:Call user32.CallWindowProcW(7ec6896c,000100de,00000083,00000001,00334e74)
ret=0057b83e
0026:Call window proc 0x7ec6896c
(hwnd=0x100de,msg=WM_NCCALCSIZE,wp=00000001,lp=00334e74)
0026:Call user32.DefWindowProcW(000100de,00000083,00000001,00334e74)
ret=7ed0f832
0026:Ret  user32.DefWindowProcW() retval=00000000 ret=7ed0f832
0026:Ret  window proc 0x7ec6896c
(hwnd=0x100de,msg=WM_NCCALCSIZE,wp=00000001,lp=00334e74) retval=00000000
0026:Ret  user32.CallWindowProcW() retval=00000000 ret=0057b83e
0026:Ret  window proc 0x57ca50
(hwnd=0x100de,msg=WM_NCCALCSIZE,wp=00000001,lp=00334e74) retval=00000000
0026:trace:win:SWP_DoNCCalcSize hwnd 0x100de old win (0,0)-(0,0) old client
(0,0)-(0,0) new win (0,0)-(293,371) new client (0,0)-(293,371)
0026:trace:win:GetWindowRect hwnd 0x100de (12,297)-(305,668)
0026:trace:win:invalidate_dce 0x100de scope hwnd = 0x100dc (12,297)-(305,668)
((12,297)-(12,297))
0026:trace:win:invalidate_dce 0x14f600: hwnd 0x20034 dcx 00000013 Cache 
0026:trace:win:invalidate_dce 0x147d58: hwnd (nil) dcx 00000002 Cache 
0026:trace:win:USER_SetWindowPos     status flags = 1006
0026:Call window proc 0x57ca50
(hwnd=0x100de,msg=WM_WINDOWPOSCHANGED,wp=00000000,lp=00334fd8)
0026:Call user32.IsWindowVisible(000100de) ret=0057867f
0026:Ret  user32.IsWindowVisible() retval=00000000 ret=0057867f
0026:Call user32.GetScrollInfo(000100de,00000001,003316c4) ret=005a182e
0026:trace:scroll:GetScrollInfo hwnd=0x100de nBar=1 info=0x3316c4
0026:Ret  user32.GetScrollInfo() retval=00000000 ret=005a182e
...
0026:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,00331694)
ret=00a25cbc
0026:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b839357
ip=7b839357 tid=0026
0026:trace:seh:raise_exception  info[0]=19930520
0026:trace:seh:raise_exception  info[1]=00331868
0026:trace:seh:raise_exception  info[2]=00bc8d80
0026:trace:seh:raise_exception  eax=7b826381 ebx=7b8aa708 ecx=00bc8d80
edx=003315a0 esi=00331678 edi=003315f0
0026:trace:seh:raise_exception  ebp=003315d8 esp=00331574 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00200287
0026:trace:seh:call_stack_handlers calling handler at 0xa68966 code=e06d7363
flags=1
0026:trace:seh:call_stack_handlers handler at 0xa68966 returned 1
0026:trace:seh:call_stack_handlers calling handler at 0xa683e8 code=e06d7363
flags=1
0026:Call ntdll.RtlUnwind(003328bc,00a25d22,00331580,00000000) ret=00a25d22 
...
0026:Call KERNEL32.GetStringTypeW(00000001,0014af2a L"class XFW::OSCallError>
::GetScrollInfo failed.",00000001,0033dd66) ret=7df3042d 
--- snip ---

Source:
http://source.winehq.org/git/wine.git/blob/74159467168c7925857267f3aef71f09face2c9c:/dlls/user32/scroll.c#l1197

--- snip ---
1210 static BOOL SCROLL_GetScrollInfo(HWND hwnd, INT nBar, LPSCROLLINFO info)
1211 {
1212     LPSCROLLBAR_INFO infoPtr;
1213 
1214     /* handle invalid data structure */
1215     if (!SCROLL_ScrollInfoValid(info)
1216         || !(infoPtr = SCROLL_GetInternalInfo(hwnd, nBar, FALSE)))
1217             return FALSE;
1218 
...
--- snip ---

If I allow allocation within SCROLL_GetScrollInfo(), the app starts
successfully and works fine.

$ du -sh Filter\ Forge\ 2\ Setup.exe 
47M    Filter Forge 2 Setup.exe

$ sha1sum Filter\ Forge\ 2\ Setup.exe 
98e28e013934fc4fd209e9b7f6315e654f9e57bc  Filter Forge 2 Setup.exe

$ wine --version
wine-1.5.1-240-g31f6f48

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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