http://bugs.winehq.org/show_bug.cgi?id=3088
Summary: Borland BC++4.5 Regression Product: Wine Version: unspecified Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-patches AssignedTo: wine-bugs@winehq.org ReportedBy: pgr@arcelectronicsinc.com
BC++4.5 copied from working Win95 install. Compile from CVS 2005-06-16 15:49 CDT ok 2005-06-16 15:52 CDT bad
Before the patch in the IDE I can open a project and edit files and make or build all from the menus. After that patch on build all it crashes at a point that looks like it is in linking phase. If I edit a file and do a make the exe is made without a problem.
I never could get winedbg to start the program as it crashes into the debugger before it starts any of the borland GUI starts.
Looking at the patch + + /* Note: the following checks depend on the asm code generated by winebuild */ + + if (addr[0] == 0xff && addr[1] == 0x25) /* indirect jmp */ + { + ptr = *(const void * const*)(addr + 2); /* get indirect jmp target address */ + } + else /* check for import thunk */ + { + if (addr[0] != 0x50) return FALSE; /* pushl %%eax */ + if (addr[1] != 0x9c) return FALSE; /* pushfl */ + if (addr[2] != 0xe8 || addr[3] || addr[4] || addr[5] || addr[6]) return FALSE; /* call .+0 */ + if (addr[7] != 0x58) return FALSE; /* popl %%eax */ + if (addr[8] != 0x05) return FALSE; /* addl offset,%%eax */ + ptr = addr + 7 + *(const int *)(addr + 9); + } it looks as if the method to detect a wine thunk is not safe as borland compiled programs could use the same opcode sequence.
cvs update -D 050616 bash-3.00$ wine c:\BC45\BIN\BCW.EXE fixme:toolhelp:InterruptRegister16 (0000, 0x12b70e29), stub.
#compile finished #run program from ide causes crash and the following output when killed.
fixme:toolhelp:NotifyRegister16 (11bf,2437155d,2), semi-stub. fixme:toolhelp:InterruptUnRegister16 (0000), stub. fixme:toolhelp:InterruptRegister16 (11bf, 0x245712bc), stub. fixme:toolhelp:NotifyUnregister16 (11bf), semi-stub. fixme:toolhelp:InterruptUnRegister16 (11bf), stub. fixme:toolhelp:InterruptRegister16 (0000, 0x12b70e29), stub. Killed
cvs update -D 050617 fixme:toolhelp:InterruptRegister16 (0000, 0x12b70e29), stub. wine: Unhandled exception (thread 000a), starting debugger... WineDbg starting on pid 0x8 fixme:dbghelp:SymLoadModule Should have successfully loaded debug information for image C:\BC45\BIN\BCW.EXE Unhandled exception: stack overflow in 32-bit code (0x7fc559f9). fixme:dbghelp:addr_to_linear Failed to linearize address 7f9a:0000e19c (mode 0) In 32 bit mode. Register dump: CS:0073 SS:112f DS:13d7 ES:20df FS:003b GS:0033 EIP:7fc559f9 ESP:ca1d00d8 EBP:0000b908 EFLAGS:00010212( - 00 - RIA1) EAX:77bc16bc EBX:0000b843 ECX:00000000 EDX:000013d7 ESI:00000214 EDI:00000538 Stack dump: 0x112f:0x00d8: 0206 0000 5c2e 0000 0000 0000 1127 0000 0x112f:0x00e8: 6680 7fc7 0000 2470 7fc7 b908 0003 1127 0x112f:0x00f8: db80 7fc5 ef00 abcd 0000 0000 0000 0000 Backtrace: fixme:dbghelp:addr_to_linear Failed to linearize address 7f9a:0000e19c (mode 0) =>1 0x7fc559f9 __wine_call_from_16_regs+0x11 in winedos (0x000dc468) 2 0x00000000 (0x00000000) 0x7fc559f9 __wine_call_from_16_regs+0x11 in winedos: xchgl %eax,0x4(%esp) Modules: Module Address Debug info Name (67 modules) ELF 0x77807000-77843000 Deferred advapi32<elf> -PE 0x77820000-77843000 \ advapi32 ELF 0x77843000-778c7000 Deferred gdi32<elf> -PE 0x77860000-778c7000 \ gdi32 ELF 0x778c7000-779e0000 Deferred user32<elf> -PE 0x778f0000-779e0000 \ user32 ELF 0x77aeb000-77b00000 Deferred winevdm<elf> -PE 0x77af0000-77b00000 \ bcw ELF 0x77b2e000-77c30000 Deferred kernel32<elf> -PE 0x77b50000-77c30000 \ kernel32 ELF 0x77d45000-77d50000 Deferred libnss_files.so.2 ELF 0x77d62000-77d85000 Deferred libm.so.6 ELF 0x77d85000-77e7a000 Deferred libwine_unicode.so.1 ELF 0x77e8c000-77f00000 Deferred ntdll<elf> -PE 0x77eb0000-77f00000 \ ntdll ELF 0x77f00000-77f03000 Deferred <wine-loader> ELF 0x7f305000-7f32a000 Deferred winspool.drv<elf> -PE 0x7f310000-7f32a000 \ winspool.drv ELF 0x7f32a000-7f3d2000 Deferred comctl32<elf> -PE 0x7f340000-7f3d2000 \ comctl32 ELF 0x7f3d2000-7f3f0000 Deferred iphlpapi<elf> -PE 0x7f3e0000-7f3f0000 \ iphlpapi ELF 0x7f3f0000-7f437000 Deferred rpcrt4<elf> -PE 0x7f410000-7f437000 \ rpcrt4 ELF 0x7f437000-7f4b8000 Deferred ole32<elf> -PE 0x7f450000-7f4b8000 \ ole32 ELF 0x7f4b8000-7f50f000 Deferred shlwapi<elf> -PE 0x7f4d0000-7f50f000 \ shlwapi ELF 0x7f50f000-7f5c8000 Deferred shell32<elf> -PE 0x7f530000-7f5c8000 \ shell32 ELF 0x7f5c8000-7f650000 Deferred comdlg32<elf> -PE 0x7f5e0000-7f650000 \ comdlg32 ELF 0x7fa5b000-7fa70000 Deferred midimap.drv<elf> -PE 0x7fa60000-7fa70000 \ midimap.drv ELF 0x7fb89000-7fbab000 Deferred msacm32<elf> -PE 0x7fb90000-7fbab000 \ msacm32 ELF 0x7fbab000-7fbc4000 Deferred msacm.drv<elf> -PE 0x7fbb0000-7fbc4000 \ msacm.drv ELF 0x7fbc4000-7fc3e000 Deferred winmm<elf> -PE 0x7fbd0000-7fc3e000 \ winmm ELF 0x7fc3e000-7fc9d000 Stabs winedos<elf> -PE 0x7fc50000-7fc9d000 \ winedos ELF 0x7fcad000-7fcca000 Deferred imm32<elf> -PE 0x7fcc0000-7fcca000 \ imm32 ELF 0x7fcca000-7fccd000 Deferred iso8859-1.so ELF 0x7fcce000-7fcec000 Deferred ximcp.so.2 ELF 0x7fcec000-7fcf0000 Deferred libxrandr.so.2 ELF 0x7fd02000-7fd0b000 Deferred libxcursor.so.1 ELF 0x7fd0b000-7fd13000 Deferred libxrender.so.1 ELF 0x7fd22000-7fd25000 Deferred xlcdef.so.2 ELF 0x7fd25000-7fd90000 Deferred libgl.so.1 ELF 0x7fd90000-7fe5d000 Deferred libx11.so.6 ELF 0x7fe5d000-7fe6b000 Deferred libxext.so.6 ELF 0x7fe6b000-7fe70000 Deferred libxxf86vm.so.1 ELF 0x7fe70000-7fe88000 Deferred libice.so.6 ELF 0x7fe88000-7fe91000 Deferred libsm.so.6 ELF 0x7fea3000-7ff21000 Deferred winex11.drv<elf> -PE 0x7fec0000-7ff21000 \ winex11.drv ELF 0x7ff21000-7ff41000 Deferred libexpat.so.0 ELF 0x7ff41000-7ff70000 Deferred libfontconfig.so.1 ELF 0x7ff70000-7ff82000 Deferred libz.so.1 ELF 0x7ff82000-7ffee000 Deferred libfreetype.so.6 ELF 0xb7e7f000-b7e83000 Deferred libdl.so.2 ELF 0xb7e83000-b7fad000 Deferred libc.so.6 ELF 0xb7fad000-b7fbf000 Deferred libpthread.so.0 ELF 0xb7fbf000-b7fd7000 Deferred libwine.so.1 ELF 0xb7fea000-b8000000 Deferred ld-linux.so.2 Threads: process tid prio (all id:s are in hex) 00000008 (D) C:\BC45\BIN\BCW.EXE 0000000a 0 <== 00000009 0 WineDbg terminated on pid 0x8