[Bug 39356] PlanCad-L v14.03 crashes on exit (_seh_longjmp_unwind4 must pass jump buffer cookie by address)

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Sep 29 06:45:40 CDT 2015


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
            Version|unspecified                 |1.6.1
           Keywords|                            |download
                URL|                            |http://user.dietrichs.com/d
                   |                            |ownloads/get=146/mirror=199
                   |                            |.html
                 CC|                            |focht at gmx.net
          Component|-unknown                    |msvcrt
           Hardware|Other                       |x86
     Ever confirmed|0                           |1
            Summary|PlanCad L (Version 14.03):  |PlanCad-L v14.03 crashes on
                   |crashes when launching the  |exit (_seh_longjmp_unwind4
                   |Programm                    |must pass jump buffer
                   |                            |cookie by address)
           Severity|critical                    |normal

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

I can't reproduce the crash during start. The app runs fine here.

The exception code 0x80000100 is the result from hitting an unimplemented API
function.
Since you didn't provide terminal output from start of the app, it's not known
which function/stub was missing.

It's very likely already fixed/implemented since I don't encounter this and
you're using an outdated Wine version.
Upgrade to recent 1.7.x series, preferably Wine 1.7.51

I could reproduce a crash on app exit/shutdown though, hence refining this
ticket.

--- snip ---
$ pwd
/home/focht/.wine/drive_c/PlanCAD-L

$ WINEDEBUG=+tid,+seh,+relay,-msvcr110 wine ./PlanCAD.exe >>log.txt 2>&1
...
0039:Call user32.PostQuitMessage(00000000) ret=0076bf4f
0039:Ret  user32.PostQuitMessage() retval=00000000 ret=0076bf4f
0039:Ret  window proc 0x77ab40
(hwnd=0x300b0,msg=WM_CLOSE,wp=00000000,lp=00000000) retval=00000000
0039:Ret  user32.DefWindowProcW() retval=00000000 ret=0077afd9
0039:Ret  window proc 0x77ab40
(hwnd=0x300b0,msg=WM_SYSCOMMAND,wp=0000f060,lp=00000000) retval=00000000
0039:Ret  user32.DispatchMessageW() retval=00000000 ret=0076c372
0039:Call user32.GetMessageW(0033e884,00000000,00000000,00000000) ret=0076c381
0039:Ret  user32.GetMessageW() retval=00000000 ret=0076c381
0039:Call msvcr110.longjmp(00d4c408,00000000) ret=0076eaf4
0039:trace:seh:MSVCRT_longjmp buf=0xd4c408 ebx=7d7eced8 esi=00000086
edi=0132dcd8 ebp=0033f9d4 esp=0033f958 eip=0076e792 frame=0033f9c4
retval=00000000
0039:trace:seh:MSVCRT_longjmp cur_frame=33f9c4
0039:Call KERNEL32.IsBadReadPtr(00d4c428,00000004) ret=7d7fc030
0039:Ret  KERNEL32.IsBadReadPtr() retval=00000000 ret=7d7fc030
0039:Call msvcr110._seh_longjmp_unwind4(00d4c408) ret=7d7fc082
0039:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7d7faf7a
ip=7d7faf7a tid=0039
0039:trace:seh:raise_exception  info[0]=00000000
0039:trace:seh:raise_exception  info[1]=56433230
0039:trace:seh:raise_exception  eax=56433230 ebx=0033f9d4 ecx=fffffffe
edx=0033f9c4 esi=0033f8c4 edi=0033f894
0039:trace:seh:raise_exception  ebp=0033f868 esp=0033f810 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00210202
0039:trace:seh:call_stack_handlers calling handler at 0xadbe5b code=c0000005
flags=0
...
Unhandled exception: page fault on read access to 0x56433230 in 32-bit code
(0x7d7faf7a).
...
Backtrace:
=>0 0x7d7faf7a msvcrt_local_unwind4+0x9(cookie=0x56433230, frame=0x33f9c4,
trylevel=0xfffffffe, ebp=0x33f9d4)
[/home/focht/projects/wine/wine.repo/src/dlls/msvcr110/../msvcrt/except_i386.c:727]
in msvcr110 (0x0033f868)
  1 0x7d7fc110 _seh_longjmp_unwind4+0x3a(jmp=0xd4c408)
[/home/focht/projects/wine/wine.repo/src/dlls/msvcr110/../msvcrt/except_i386.c:1073]
in msvcr110 (0x0033f888)
  2 0x7bc7efce relay_call+0x39() in ntdll (0x0033f8a8)
  3 0x7d7ea69d in msvcr110 (+0xa69c) (0x0033f938)
  4 0x7d7fc082 MSVCRT_longjmp+0x1a0(jmp=<couldn't compute location>,
retval=<couldn't compute location>)
[/home/focht/projects/wine/wine.repo/src/dlls/msvcr110/../msvcrt/except_i386.c:1050]
in msvcr110 (0x0033f938)
  5 0x7bc7efce relay_call+0x39() in ntdll (0x0033f970)
  6 0x7d7ec605 in msvcr110 (+0xc604) (0x0033f9d4)
  7 0x0076eaf4 in plancad (+0x36eaf3) (0x0033f9d4)
  8 0x0076f241 in plancad (+0x36f240) (0x0033fde4)
  9 0x00adc1ac in plancad (+0x6dc1ab) (0x0033fe30)
  10 0x7b86e73c call_process_entry+0xb() in kernel32 (0x0033fe48)
...
0x7d7faf7a msvcrt_local_unwind4+0x9
[/home/focht/projects/wine/wine.repo/src/dlls/msvcr110/../msvcrt/except_i386.c:727]
in msvcr110: movl    0x0(%eax),%eax
727        const SCOPETABLE_V4 *scopetable = get_scopetable_v4( frame, *cookie
);
Modules:
Module    Address            Debug info    Name (140 modules)
PE      400000- 1100000    Export          plancad
ELF    7a800000-7a939000    Deferred        opengl32<elf>
  \-PE    7a840000-7a939000    \               opengl32
ELF    7b800000-7ba71000    Dwarf           kernel32<elf>
  \-PE    7b820000-7ba71000    \               kernel32
ELF    7bc00000-7bd04000    Dwarf           ntdll<elf>
  \-PE    7bc20000-7bd04000    \               ntdll
...
Threads:
process  tid      prio (all id:s are in hex)
...
00000038 (D) C:\PlanCAD-L\PlanCAD.exe
    00000039    0 <==
--- snip ---

This seems to be an oversight when passing the jump buffer cookie:

https://source.winehq.org/git/wine.git/blob/36309142d0ed5755a7e6b8c80a973e56c88320d2:/dlls/msvcrt/except_i386.c#l1071

--- snip ---
1068 /*********************************************************************
1069  *              _seh_longjmp_unwind4 (MSVCRT.@)
1070  */
1071 void __stdcall _seh_longjmp_unwind4(struct MSVCRT___JUMP_BUFFER *jmp)
1072 {
1073     msvcrt_local_unwind4( (void *)jmp->Cookie, (MSVCRT_EXCEPTION_FRAME
*)jmp->Registration,
1074                           jmp->TryLevel, (void *)jmp->Ebp );
1075 }
--- snip ---

The address of the cookie should be passed to 'msvcrt_local_unwind4', not the
value (deref will cause fault).

$ sha1sum dipcad-l_1403.exe 
16e1c7b63d775c774e71008b056f515b734ddf48  dipcad-l_1403.exe

$ du -sh dipcad-l_1403.exe 
77M    dipcad-l_1403.exe

$ wine --version
wine-1.7.51-201-g60d1d6f

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