logo       

Re: Seeing memory corruption, GC moves my objects around: msg#00341

lisp.cmucl.devel

Subject: Re: Seeing memory corruption, GC moves my objects around

Martin Cracauer wrote:



Well, yes. However, in this case we are in a loop which contains
purely readonly code and the data in that hashtable becomes corrupted
from one iteration to the next, without ever leaving the loop. Except
for the GC, if the GC runs we get the corruption.

FWIW, there was a memory corruption problem in matlisp. A few iterations of some loop would work ok, and maybe even a few GCs would be ok, but eventually cmucl would die with a segfault (or something). Eventually, the user isolated the problem to one routine and we figured it out. A foreign routine was scribbling past the end of a Lisp array because the Lisp array was only half the required size.

So I am not creating the damaged data myself, it is the GC not
realizing that this area of memory is in use by my program and
overwriting the location I point to with other stuff.

I am betting that the hash table is already corrupted in some way by the time you get to your test code. You've obviously initialized the hash tables by the time your code runs, so the damage could have occurred then. Somewhat like what happens in C when you corrupt the stack or heap. The error might not show up until much later in the program.

I don't envy you and the task ahead. :-(

Ray







<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise