Mail Archives: djgpp/2000/01/07/09:32:39
Tom Alsberg wrote:
>
> * It crashes every time when running under pure DOS (not RHIDE). There,
> when I do a SYMIFY to it, I get the same traceback info.
Please always post the full, SYMIFY'ed traceback, together with the registers'
dump, when you post such reports. People who are used to look at crash messages
can spot some crucial hints there, which will help you solve the problem much
more efficiently.
> * It never crashed when running under GDB (GNU Debugger).
This is often a sign of uninitialized memory, or of accessing buffers beyond
their limits.
> 2. Where can I find the source for the function movedata (...)?
The source of `movedata' is in the file src/libc/pc_hw/mem/md.S. You will see
that it calls __dj_movedata, whose source is in src/libc/pc_hw/mem/djmd.S.
These two functions are written in assembly.
I'd suggest to disassembly __dj_movedata, and see what instruction is at
___dj_movedata+33. You will then know which register holds an invalid value
that causes the crash. Next, you need to follow the call sequence up, using the
traceback and disassembly as your guides, and find out what variable in your
function vidBMP::blit2vidmem winds up in that register. This should provide
enough info to unlock the bug.
Since you are calling `dosmemput', the primary suspects are each one of its 3
arguments. Examine the code that computes them and look for possible problems.
- Raw text -