[vox-tech] electric fence - error in man page? a bug?

Peter Jay Salzman vox-tech@lists.lugod.org
Tue, 21 Jan 2003 11:06:13 -0800


begin Jeff Newmiller <jdnewmil@dcn.davis.ca.us> 
> On Tue, 21 Jan 2003, Peter Jay Salzman wrote:
> 
> > hola lugod,
> > 
> > according to the electric fence man page, pages of dynamic memory
> > which are free'd are returned back to the heap from whence they came.
> > in other words, if you do nothing, efence won't detect access of free'd
> > dynamic memory.
> 
> That doesn't preclude Linux from detecting it.  Accessing free memory
> produces undefined results... sometimes the library may return the memory
> to the OS, and other times not (a function of buffering optimization).  
> If it is returned, then the OS has the freedom to mark the page as outside
> the process again, such that accesses there yield the same result
> (SIGSEGV) as efence's forced behavior.
> 
> 0 = sometimes detect error
> 1 = always detect error
 
ok, understood.

but when i run the code without linking to efence, it doesn't segfault.

i know you're next comment will be "the result is undefined" but on a
practical level, when you run the same code twice, the exact same
"unpredictable behavior" happens again.

kind of like how when you overwrite an array bound and tromp on another
variable, say your variable z is now "3".  run the program again, and
suddenly z is again "3".  unpredictable, yes, but completely
reproducible.

i guess what i need to do is try to find a way to tell whether the
segfault was generated by the OS or by efence (if it's possible to find
something like this out).

pete

-- 
First they ignore you, then they laugh at you, then they fight you,
then you win. -- Gandhi, being prophetic about Linux.

Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D