Hi,
I am trying to have Orbiter running under winex in Linux. I have plenty of experience in programming but I haven't used much debuggers. I would have few questions.
What is the difference between dll load methods "builtin" and "so" when debugging witch one should be used ?
When using "so" mode this error is generated. I added "_ftol" in libmsvcrt.so and that error is no longer generated. Is that right thing to do ?
When using "builtin" mode these errors won't appear. But it will crash the same way.
---------------------------------------------------------------------------------------------------- fixme:win32:ELF_FindExportedFunction function ftol not found: /usr/local/lib/libwine.so: undefined symbol: ftol err:win32:PE_fixup_imports No implementation for MSVCRT.dll.237(_ftol) imported from C:\Orbit_new\Modules\Luna.dll, setting to 0xdeadbeef
fixme:win32:ELF_FindExportedFunction function ??3@YAXPAX@Z not found: /usr/local/lib/libwine.so: undefined symbol: ??3 err:win32:PE_fixup_imports No implementation for MSVCRT.dll.16(??3@YAXPAX@Z) imported from C:\Orbit_new\Modules\Luna.dll, setting to 0xdeadbeef
fixme:win32:ELF_FindExportedFunction function ?terminate@@YAXXZ not found: /usr/local/lib/libwine.so: undefined symbol: ?terminate err:win32:PE_fixup_imports No implementation for MSVCRT.dll.46(?terminate@@YAXXZ) imported from C:\Orbit_new\Modules\Luna.dll, setting to 0xdeadbeef ---------------------------------------------------------------------------------------------------
What are these ?
No debug information in 32bit DLL 'DDRAW.DLL' (0x406c8000) *** Invalid address 0x40011f80 (_end+0x478)
from msvcrt.spec: @ forward -noimport _ftol ntdll._ftol @ cdecl ?terminate@@YAXXZ() MSVCRT_terminate
This is the final crash.
------------------------------------------------------------------------------------------------ First chance exception: page fault on read access to 0xdead001e in 32-bit code (0xdead001e). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:2007 GS:0007 EIP:dead001e ESP:406a287c EBP:004b3b88 EFLAGS:00210202( R- 00 I - - 1 ) EAX:406f08a0 EBX:403a62d4 ECX:433c0e10 EDX:433c0e00 ESI:403a62d4 EDI:00000000 Stack dump: 0x406a287c (MSVCRT.DLL.193+0x3f48ec): 004513ca 403a62d4 433c0e00 433c0e10 0x406a288c (MSVCRT.DLL.193+0x3f48fc): 00000001 00000000 433c0e20 406cbdf0 0x406a289c (MSVCRT.DLL.193+0x3f490c): 403a62d4 433fdbc0 406cb900 00000000 0x406a28ac (MSVCRT.DLL.193+0x3f491c): 00000000 00000000 406cb900 00000000 0x406a28bc (MSVCRT.DLL.193+0x3f492c): 00000000 433fdbc0 0047017a 00470185 0x406a28cc (MSVCRT.DLL.193+0x3f493c): 406f08a0 40738820 ff000000 406a2a28 0x406a28dc (MSVCRT.DLL.193+0x3f494c):
0400: sel=2007 base=4011b460 limit=00000000 32-bit rw- Backtrace: =>0 0xdead001e (MSVCRT.DLL._winver+0x99fe36ce) (ebp=004b3b88) 1 0x433c0de0 (MSACM32.DLL.acmStreamUnprepareHeader+0x33d190) (ebp=00000001)
0xdead001e (MSVCRT.DLL._winver+0x99fe36ce): *** Invalid address 0xdead001e (MSVCRT.DLL._winver+0x99fe36ce) -- no code -- ----------------------------------------------------------------------------------------------------
I know very little about this. It seems that processor is trying to execute code in 0xdead001e. That would indicate a missing function. If that what it is. What is the missing function ? Where it shoud be ? What is calling it ? What is "1e" in 0xdead001e
I dumped MSACM32.DLL and it does not inport any MSVCRT.DLL functions. acmStreamUnprepareHeader disassembly doesn't show anything weard either.
Regards, Jarmo
I was continuing the bug tracking and this is what I founded.
movl %eax,0x4c(%esp) call 0x84(%eax) -- command causing the crash
x /92x $eax will display this ... (DDRAW.DLL.EntryPoint+0xc320 in libddraw.so): 406cd010 dead001e 406cd3a0 406cd420
So. address 0x84(eax) contains 0xdead001e there should be usable address to some function.
What is the name of missing function ?
it appears that backtrace was showing incorrect information ??
Jarmo
On Thu, 12 Jun 2003 07:47:03 +0000, Jarmo jarmonik@mbnet.fi wrote:
movl %eax,0x4c(%esp) call 0x84(%eax) -- command causing the crash
x /92x $eax will display this ... (DDRAW.DLL.EntryPoint+0xc320 in libddraw.so): 406cd010 dead001e 406cd3a0 406cd420
So. address 0x84(eax) contains 0xdead001e there should be usable address to some function.
My guess is that somewhere earlier either there is a memory corruption or a NULL pointer reference (more likely) due to some missing functionality and eax got a wrong value because of this.
When using "so" mode this error is generated. I added "_ftol" in libmsvcrt.so and that error is no longer generated. Is that right thing to do ?
so is now obsolete... there's only choice between native and builtin
A+