[Bug 35416] BSSB-Win (VB6 app) crashes on startup (text host window/gui control methods must not be called during CreateTextServices)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jan 25 06:54:15 CST 2014


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                URL|                            |http://www.bssb.de/2kb-down
                   |                            |loads.html
                 CC|                            |focht at gmx.net
            Summary|BSSB-Win crashes with       |BSSB-Win (VB6 app) crashes
                   |segfault in fm20.dll        |on startup (text host
                   |                            |window/gui control methods
                   |                            |must not be called during
                   |                            |CreateTextServices)
     Ever confirmed|0                           |1

--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

The first problem is locale related.

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/BSSB_Win

$ WINEDEBUG=+tid,+seh,+relay,+ole,+variant,+snoop wine ./BSSB_Win.exe >>log.txt
2>&1
...
0024:trace:ole:COMPOBJ_DllList_Add L"C:\\windows\\system32\\FM20.DLL"
0024:Call KERNEL32.LoadLibraryExW(0033f45e
L"C:\\windows\\system32\\FM20.DLL",00000000,00000008) ret=7e98f673 
...
0024:Ret  PE DLL (proc=0x7ac4b570,module=0x7ac10000
L"riched20.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1
0024:Ret  KERNEL32.LoadLibraryA() retval=7ac10000 ret=60003485
0024:Call KERNEL32.GetLastError() ret=6000348d
0024:Ret  KERNEL32.GetLastError() retval=00000000 ret=6000348d
0024:Call KERNEL32.GetProcAddress(7ac10000,600b3978 "CreateTextServices")
ret=6000353f
0024:Ret  KERNEL32.GetProcAddress() retval=7ac15644 ret=6000353f
...
0024:Call KERNEL32.LoadLibraryExW(600c3328
L"C:\\windows\\system32\\fm20ENU.DLL",00000000,00000000) ret=6000151b
0024:Ret  KERNEL32.LoadLibraryExW() retval=00000000 ret=6000151b 
...
0024:Call KERNEL32.RaiseException(c000008f,00000001,00000002,0033fa50)
ret=66024d53
0024:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b83a913
ip=7b83a913 tid=0024
0024:trace:seh:raise_exception  info[0]=deadcafe
0024:trace:seh:raise_exception  info[1]=deadcafe
0024:trace:seh:raise_exception  eax=7b826989 ebx=7b8ba000 ecx=deadcafe
edx=0033f9a4 esi=0033fa50 edi=0033fa10
0024:trace:seh:raise_exception  ebp=0033f9e8 esp=0033f984 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00200283
0024:trace:seh:call_stack_handlers calling handler at 0x660291be code=c000008f
flags=1
0024:trace:seh:call_stack_handlers handler at 0x660291be returned 1
0024:trace:seh:call_stack_handlers calling handler at 0x6602e521 code=c000008f
flags=1 
...
0024:Call KERNEL32.WideCharToMultiByte(00000000,00000000,0013c2e4 L"Run-time
error '7':\n\nOut of memory",ffffffff,00f7d4d8,00000044,00000000,00000000)
ret=6601bcb1 
--- snip ---

The app doesn't expect to be run on non-german systems.
Actually I wouldn't be surprised if there would exist a check for 'Freistaat
Bayern', excluding the rest of Germany *g*.

You have to start the app with 'LC_ALL=de_DE'

---- snip ---
$ LC_ALL=de_DE WINEDEBUG=+tid,+seh,+relay,+ole,+variant,+snoop wine
./BSSB_Win.exe >>log.txt 2>&1 
...
0024:Ret  PE DLL (proc=0x7ac4b570,module=0x7ac10000
L"riched20.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1
0024:Ret  KERNEL32.LoadLibraryA() retval=7ac10000 ret=60003485
0024:Call KERNEL32.GetLastError() ret=6000348d
0024:Ret  KERNEL32.GetLastError() retval=00000000 ret=6000348d
0024:Call KERNEL32.GetProcAddress(7ac10000,600b3978 "CreateTextServices")
ret=6000353f
0024:Ret  KERNEL32.GetProcAddress() retval=7ac15644 ret=6000353f 
...
0024:Call riched20.CreateTextServices(0014ed78,0014edd4,0014eddc) ret=600200a1 
...
0024:trace:seh:raise_exception code=c0000005 flags=0 addr=0x6001ac4e
ip=6001ac4e tid=0024
0024:trace:seh:raise_exception  info[0]=00000000
0024:trace:seh:raise_exception  info[1]=00000044
0024:trace:seh:raise_exception  eax=00000000 ebx=0033f0c4 ecx=0014edd4
edx=7ac42464 esi=00000044 edi=0033f0c4
0024:trace:seh:raise_exception  ebp=0014edd4 esp=0033f034 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210206
0024:trace:seh:call_stack_handlers calling handler at 0x660291be code=c0000005
flags=0
0024:trace:seh:call_stack_handlers handler at 0x660291be returned 1
0024:trace:seh:call_stack_handlers calling handler at 0x6602e521 code=c0000005
flags=0
0024:trace:seh:call_stack_handlers handler at 0x6602e521 returned 1
0024:trace:seh:call_stack_handlers calling handler at 0x660eeead code=c0000005
flags=0 
...
Backtrace:
=>0 0x6001ac4e in fm20 (+0x1ac4e) (0x0014edd4)
  1 0x00000000 (0x600b2598)
  2 0x6001afab in fm20 (+0x1afaa) (0x6001afa1)
  3 0xf123e94c (0x04246c83)
0x6001ac4e: movsl    (%esi),%es:(%edi)
Modules:
Module    Address            Debug info    Name (88 modules)
PE      400000-  a50000    Deferred        bssb_win 
...
Threads:
process  tid      prio (all id:s are in hex) 
...
00000023 (D) C:\Program Files\BSSB_Win\BSSB_Win.exe
    00000024    0 <== 
--- snip ---

Debugger session:

--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0x7ac22194 ME_SetDefaultFormatRect+0x12(editor=0x14a28e8)
[/home/focht/projects/wine/wine-git/dlls/riched20/editor.c:2708] in riched20
(0x0033f138)
  1 0x7ac277ad ME_HandleMessage+0x49b5(editor=0x14a28e8, msg=0x1, wParam=0,
lParam=0, unicode=0x1, phresult=0x33f6b0)
[/home/focht/projects/wine/wine-git/dlls/riched20/editor.c:4006] in riched20
(0x0033f688)
  2 0x7ac436cb CreateTextServices+0x1a6(pUnkOuter=<couldn't compute location>,
pITextHost=<couldn't compute location>, ppUnk=<couldn't compute location>)
[/home/focht/projects/wine/wine-git/dlls/riched20/txtsrv.c:417] in riched20
(0x0033f6d8)
  3 0x600200a1 in fm20 (+0x200a0) (0x0033f70c)
  4 0x600a64e2 in fm20 (+0xa64e1) (0x0013e184)
  5 0x00000000 (0x600b2598)
  6 0x6001afab in fm20 (+0x1afaa) (0x6001afa1)
  7 0xf123e94c (0x04246c83)

Wine-dbg>l
2708      ITextHost_TxGetClientRect(editor->texthost, &editor->rcFormat);
2709      editor->rcFormat.top += editor->exStyleFlags & WS_EX_CLIENTEDGE ? 1 :
0;
2710      editor->rcFormat.left += 1 + editor->selofs;
2711      editor->rcFormat.right -= 1;
2712    }

p *editor->texthost
{lpVtbl=0x600b2598}
--- snip ---

The problem is the app (text host) doesn't expect window/ui control methods
being called in CreateTextServices().

Source:
http://source.winehq.org/git/wine.git/blob/6c1b292f0b781c08041867f2508df5df164f61c6:/dlls/riched20/txtsrv.c#l392

--- snip ---
392 HRESULT WINAPI CreateTextServices(IUnknown *pUnkOuter, ITextHost
*pITextHost, IUnknown **ppUnk)
393 {
...
416
417     ME_HandleMessage(ITextImpl->editor, WM_CREATE, 0, 0, TRUE, &hres);
418
...
--- snip ---

If you leave that part out, the app displays some license dialog hence I
couldn't test further.

$ sha1sum SetupV.exe 
9c02853555cdf5b944944b7b5cd8c9e2d40d86c1  SetupV.exe

$ du -sh SetupV.exe 
71M    SetupV.exe

$ wine --version
wine-1.7.11-159-gee33839

--- quote ---
"winetricks fm20"
--- quote ---

As previously mentioned: Not needed unless you run with non-german locale.

--- quote ---
Fresh wineprefix, OS set to "Windows 7" (otherwise installation won't
complete).
--- quote ---

Incorrect, works fine with default "Windows XP" WINEPREFIX.

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