[Bug 32337] ABBYY FineReader 11 trial version crashes when trying to activate the production (RichEdit control incorrectly returns failure for EM_SETREADONLY)

WineHQ Bugzilla wine-bugs at winehq.org
Sat Apr 25 12:26:31 CDT 2020


https://bugs.winehq.org/show_bug.cgi?id=32337

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net
      Fixed by SHA1|                            |455eca6d228a4850214345be2cc
                   |                            |cc665bece5a0e
         Resolution|---                         |FIXED
            Summary|FineReader 11 trial version |ABBYY FineReader 11 trial
                   |crash when trying to        |version crashes when trying
                   |activate the production     |to activate the production
                   |                            |(RichEdit control
                   |                            |incorrectly returns failure
                   |                            |for EM_SETREADONLY)
             Status|NEW                         |RESOLVED

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

confirming, I could reproduce this with ancient Wine 1.5.18

It's not that easy to find an archived version of the installer. Multiple
installer snapshots from Internet Archive are corrupted (too short). Maybe the
Great Firewall (TM) interferes during mirroring. Honi soit qui mal y pense ...

https://web.archive.org/web/*/http://download.abbyy.cn/dist/fr11/ABBYY_FineReader_11_Chinese.exe

https://web.archive.org/web/20160313100032/http://download.abbyy.cn/dist/fr11/ABBYY_FineReader_11_Chinese.exe

Relevant part of trace log:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files (x86)/ABBYY FineReader 11

$ WINEDEBUG=+seh,+relay,+richedit wine ./FineReader.exe >>log.txt 2>&1
...
004d:Call user32.CreateWindowExW(00000000,01549c54 L"RichEdit20W",2ed85574
L"",50000080,00000000,00000000,00000000,00000000,00010120,00000400,2fe50000,00000000)
ret=2fee01b0
004d:Call window proc 0xf649d0f0
(hwnd=0x10122,msg=WM_NCCREATE,wp=00000000,lp=0032dca0)
trace:richedit:RichEditWndProc_common enter hwnd 0x10122 msg 0081 () 0 32dca0,
unicode 1
004d:Call user32.GetWindowLongW(00010122,00000000) ret=f649cbc4
004d:Ret  user32.GetWindowLongW() retval=00000000 ret=f649cbc4
trace:richedit:RichEditWndProc_common WM_NCCREATE: hWnd 0x10122 style
0x50000080 
....
004d:Call user32.SendMessageW(000b01dc,000000cf,00000001,00000000) ret=2feb6f0c
004d:Call window proc 0xf649d0f0
(hwnd=0xb01dc,msg=EM_SETREADONLY,wp=00000001,lp=00000000)
trace:richedit:RichEditWndProc_common enter hwnd 0xb01dc msg 00cf
(EM_SETREADONLY) 1 0, unicode 1
004d:Call user32.GetWindowLongW(000b01dc,00000000) ret=f649cbc4
004d:Ret  user32.GetWindowLongW() retval=04807130 ret=f649cbc4
004d:Call user32.GetWindowLongW(000b01dc,fffffff0) ret=f649ce62
004d:Ret  user32.GetWindowLongW() retval=50020880 ret=f649ce62
004d:Call user32.SetWindowLongW(000b01dc,fffffff0,50020880) ret=f649ce7a
004d:Call window proc 0xf649d0f0
(hwnd=0xb01dc,msg=WM_STYLECHANGING,wp=fffffff0,lp=0032d348)
trace:richedit:RichEditWndProc_common enter hwnd 0xb01dc msg 007c () fffffff0
32d348, unicode 1
004d:Call user32.GetWindowLongW(000b01dc,00000000) ret=f649cbc4
004d:Ret  user32.GetWindowLongW() retval=04807130 ret=f649cbc4
004d:Call user32.DefWindowProcW(000b01dc,0000007c,fffffff0,0032d348)
ret=f649cfed
004d:Ret  user32.DefWindowProcW() retval=00000000 ret=f649cfed
trace:richedit:RichEditWndProc_common exit hwnd 0xb01dc msg 007c () fffffff0
32d348, unicode 1 -> 0
004d:Ret  window proc 0xf649d0f0
(hwnd=0xb01dc,msg=WM_STYLECHANGING,wp=fffffff0,lp=0032d348) retval=00000000
004d:Call window proc 0xf649d0f0
(hwnd=0xb01dc,msg=WM_STYLECHANGED,wp=fffffff0,lp=0032d348)
trace:richedit:RichEditWndProc_common enter hwnd 0xb01dc msg 007d () fffffff0
32d348, unicode 1
004d:Call user32.GetWindowLongW(000b01dc,00000000) ret=f649cbc4
004d:Ret  user32.GetWindowLongW() retval=04807130 ret=f649cbc4
004d:Call user32.DefWindowProcW(000b01dc,0000007d,fffffff0,0032d348)
ret=f649cfed
004d:Ret  user32.DefWindowProcW() retval=00000000 ret=f649cfed
trace:richedit:RichEditWndProc_common exit hwnd 0xb01dc msg 007d () fffffff0
32d348, unicode 1 -> 0
004d:Ret  window proc 0xf649d0f0
(hwnd=0xb01dc,msg=WM_STYLECHANGED,wp=fffffff0,lp=0032d348) retval=00000000
004d:Ret  user32.SetWindowLongW() retval=50020880 ret=f649ce7a
004d:Ret  window proc 0xf649d0f0
(hwnd=0xb01dc,msg=EM_SETREADONLY,wp=00000001,lp=00000000) retval=00000000
004d:Ret  user32.SendMessageW() retval=00000000 ret=2feb6f0c 
...
004d:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0032d6e4)
ret=7ddb7c5b
trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7ebdc2a3 ip=7ebdc2a3
tid=004d
trace:seh:raise_exception  info[0]=19930520
trace:seh:raise_exception  info[1]=0032d7ac
trace:seh:raise_exception  info[2]=2ed682d0
trace:seh:raise_exception  eax=7ebcb81d ebx=00000008 ecx=0032d5e4 edx=0032d6e4
esi=0032d7ac edi=0032d640
trace:seh:raise_exception  ebp=0032d628 esp=0032d5c4 cs=0023 ds=002b es=002b
fs=0063 gs=006b flags=00200212
trace:seh:call_stack_handlers calling handler at 0x2ed5b492 code=e06d7363
flags=1
trace:seh:call_stack_handlers handler at 0x2ed5b492 returned 1
trace:seh:call_stack_handlers calling handler at 0x2f03b7a2 code=e06d7363
flags=1
trace:seh:call_stack_handlers handler at 0x2f03b7a2 returned 1
trace:seh:call_stack_handlers calling handler at 0x2ff09618 code=e06d7363
flags=1
trace:seh:cxx_frame_handler handling C++ exception rec 0x32d5d0 frame 0x32d98c
trylevel 1 descr 0x2ff33df8 nested_frame (nil)
trace:seh:dump_exception_type flags 0 destr (nil) handler (nil) type info
0x2ed682bc
trace:seh:dump_exception_type     0: flags 1 type 0x2ed853f8 {vtable=0x2ed615f0
name=.PAVCInternalError at FObj@@ ()} offsets 0,-1,0 size 4 copy ctor (nil)
trace:seh:dump_exception_type     1: flags 1 type 0x2ed8517c {vtable=0x2ed615f0
name=.PAVCException at FObj@@ ()} offsets 0,-1,0 size 4 copy ctor (nil)
trace:seh:dump_exception_type     2: flags 1 type 0x2ed85368 {vtable=0x2ed615f0
name=.PAV?$CAllocatedOn at VRuntimeHeap@FObj@@@FObj@@ ()} offsets 4,-1,0 size 4
copy ctor (nil)
trace:seh:dump_exception_type     3: flags 1 type 0x2ed853a0 {vtable=0x2ed615f0
name=.PAX ()} offsets 0,-1,0 size 4 copy ctor (nil)
trace:seh:dump_function_descr magic 19930522
trace:seh:dump_function_descr unwind table: 0x2ff33dbc 3
trace:seh:dump_function_descr     0: prev -1 func 0x2ff09610
trace:seh:dump_function_descr     1: prev 0 func (nil)
trace:seh:dump_function_descr     2: prev 0 func (nil)
trace:seh:dump_function_descr try table: 0x2ff33de4 1
trace:seh:dump_function_descr     0: start 1 end 1 catchlevel 2 catch
0x2ff33dd4 1
trace:seh:dump_function_descr         0: flags 0 offset -24 handler 0x2fedf973
type 0x2ff8e0d4 {vtable=0x2ff10140 name=.PAVCException at FObj@@ ()}
trace:seh:dump_function_descr expect list: (nil)
trace:seh:dump_function_descr flags: 00000001
trace:seh:call_catch_block matched type 0x2ed681a8 in tryblock 0 catchblock 0 
...
004d:Call user32.MessageBoxW(00020154,01164dc4 L"Internal program
error:\nc:\\finereader11\\11.0.2\\build\\ocrtechnology\\0\\awl\\src\\richeditctrlawl.cpp,
470.",01549d14 L"ABBYY FineReader 11",00053011) ret=2fea69fd 
--- snip ---

The app uses some RichEdit control wrapper class. The 'SetReadOnly' method
isn't very happy that Wine returns zero even though 'EM_SETREADONLY' succeeds. 

Relevant part of app code:

--- snip ---
...
2FEB6E80  53            PUSH EBX
2FEB6E81  56            PUSH ESI
2FEB6E82  8BF1          MOV ESI,ECX
2FEB6E84  57            PUSH EDI
2FEB6E85  8B3D 48F1F02F MOV EDI,DWORD PTR DS:[<&FineObj.?Generat
2FEB6E8B  85F6          TEST ESI,ESI
2FEB6E8D  74 12         JZ SHORT 2FEB6EA1
2FEB6E8F  8B46 04       MOV EAX,DWORD PTR DS:[ESI+4]
2FEB6E92  85C0          TEST EAX,EAX
2FEB6E94  74 0B         JZ SHORT 2FEB6EA1
2FEB6E96  50            PUSH EAX
2FEB6E97  FF15 DCF7F02F CALL DWORD PTR DS:[<&USER32.IsWindow>]
2FEB6E9D  85C0          TEST EAX,EAX
2FEB6E9F  75 1D         JNZ SHORT 2FEB6EBE
2FEB6EA1  6A 00         PUSH 0
2FEB6EA3  68 CD010000   PUSH 1CD
2FEB6EA8  68 8004F22F   PUSH OFFSET 2FF20480
2FEB6EAD  68 6403F12F   PUSH OFFSET 2FF10364
2FEB6EB2  68 6403F12F   PUSH OFFSET 2FF10364
2FEB6EB7  6A 00         PUSH 0
2FEB6EB9  FFD7          CALL EDI
2FEB6EBB  83C4 18       ADD ESP,18
2FEB6EBE  807C24 14 00  CMP BYTE PTR SS:[ESP+14],0
2FEB6EC3  8A5C24 10     MOV BL,BYTE PTR SS:[ESP+10]
2FEB6EC7  74 2E         JE SHORT 2FEB6EF7
2FEB6EC9  8B4424 18     MOV EAX,DWORD PTR SS:[ESP+18]
2FEB6ECD  83F8 FF       CMP EAX,-1
2FEB6ED0  75 14         JNE SHORT 2FEB6EE6
2FEB6ED2  6A 0F         PUSH 0F                  ; Index = COLOR_BTNFACE
2FEB6ED4  FF15 B8F7F02F CALL DWORD PTR DS:[<&USER32.GetSysColor>
2FEB6EDA  50            PUSH EAX
2FEB6EDB  84DB          TEST BL,BL
2FEB6EDD  0F94C0        SETZ AL
2FEB6EE0  0FB6C8        MOVZX ECX,AL
2FEB6EE3  51            PUSH ECX
2FEB6EE4  EB 0A         JMP SHORT 2FEB6EF0
2FEB6EE6  84DB          TEST BL,BL
2FEB6EE8  50            PUSH EAX
2FEB6EE9  0F94C2        SETZ DL
2FEB6EEC  0FB6C2        MOVZX EAX,DL
2FEB6EEF  50            PUSH EAX
2FEB6EF0  8BCE          MOV ECX,ESI
2FEB6EF2  E8 C9EFFEFF   CALL ?SetBackgroundColor at CRichEditCtrl@A
2FEB6EF7  8B76 04       MOV ESI,DWORD PTR DS:[ESI+4]
2FEB6EFA  6A 00         PUSH 0                   ; lParam = 0
2FEB6EFC  0FB6CB        MOVZX ECX,BL             ;
2FEB6EFF  51            PUSH ECX                 ; wParam
2FEB6F00  68 CF000000   PUSH 0CF                 ; Msg = EM_SETREADONLY
2FEB6F05  56            PUSH ESI                 ; hWnd
2FEB6F06  FF15 E0F7F02F CALL DWORD PTR DS:[<&USER32.SendMessageW
2FEB6F0C  85C0          TEST EAX,EAX
2FEB6F0E  75 1B         JNZ SHORT 2FEB6F2B
2FEB6F10  50            PUSH EAX                 ; abort, show app assert()
2FEB6F11  68 D6010000   PUSH 1D6
2FEB6F16  68 8004F22F   PUSH OFFSET 2FF20480
2FEB6F1B  68 6403F12F   PUSH OFFSET 2FF10364
2FEB6F20  68 6403F12F   PUSH OFFSET 2FF10364
2FEB6F25  50            PUSH EAX
2FEB6F26  FFD7          CALL EDI
2FEB6F28  83C4 18       ADD ESP,18
2FEB6F2B  5F            POP EDI
2FEB6F2C  5E            POP ESI
2FEB6F2D  5B            POP EBX
2FEB6F2E  C2 0C00       RETN 0C
--- snip ---

It was fixed by commit
https://source.winehq.org/git/wine.git/commitdiff/455eca6d228a4850214345be2cccc665bece5a0e
("riched20: Return nonzero value instead of zero when EM_SETREADONLY
succeeds."). Part of Wine 1.7.22 release.

Thanks Jactry.

$ sha1sum ABBYY_FineReader_11_Chinese.exe 
0f38f21905f6dcfd843014192f9b5de791d4e7c9  ABBYY_FineReader_11_Chinese.exe

$ du -sh ABBYY_FineReader_11_Chinese.exe 
270M    ABBYY_FineReader_11_Chinese.exe

$ wine --version
wine-1.5.18

$ wine --version
wine-5.7

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