I wrote:
I'm trying to run current CVS under valgrind [1] in the hope of
tracking
down the elusive "freed lrecord" bug, which has killed my Gnus session 3
times today. However, I'm drowning under a deluge of errors from the
garbage collector. Valgrind says:
Conditional jump or move depends on uninitialised value(s)
at 0x8093855: kkcc_marking (lrecord.h:1583)
by 0x8095D19: garbage_collect_1 (alloc.c:4610)
by 0x80EB006: Feval (eval.c:3522)
by 0x81BC0B4: readevalloop (lread.c:1418)
Aw, shoot, the valgrind docs say that you can get this error out of
perfectly good, but optimized, code. Now I get to go back and recompile
without optimization...
This means that valgrind detected ZERO errors, even though XEmacs died
with the "freed lrecord" bug again. That lrecord was still allocated,
as far as libc is concerned. I wonder if valgrind detects bad stack
accesses? The docs claim that it does. Let's try this:
------------------------------------------------------------------------
#include <stdio.h>
static int
bad_stack_access_function ()
{
int i, some_array[4];
for (i = 0; i < 1024; i++)
{
some_array[i] = 5;
}
return i;
}
int
main ()
{
puts ("Here we go!");
bad_stack_access_function ();
puts ("I'm still here!");
return 0;
}
------------------------------------------------------------------------
Nope. I got a great hang, but no valgrind errors. Okay, back to the
drawing board...
--
Jerry James
http://www.ittc.ku.edu/~james/