Just following up on that, the problem seems to be that
dbmfp->mfp->last_pgno doesn't get read in properly when the database
is reopened. I *assume* that it should be the last page actually
used, but at some point the free list allocates 71 (which was used
in the database when it was written in the previous program) despite
dbmfp->mfp->last_pgno having been reset to 33. I added the if
statement below in the diagnostic section at the end of
CDB___memp_cmpr_alloc, and the only place it reports an error is the
one that causes the crash...
#ifdef DEBUG_CMPR
fprintf(stderr,"CDB___memp_cmpr_alloc:: reuse free page %d from
weakcmpr\n", *pgnop);
if (*pgnop > dbmfp->mfp->last_pgno)
fprintf (stderr, "*******ERROR?? dbmfp->mfp->last_pgno %d,\
allocating %d\n", dbmfp->mfp->last_pgno, *pgnop);
#endif
Good night :)
Lachlan
On Wednesday 05 March 2003 22:08, Lachlan Andrew wrote:
> I've got as far as finding that, at some point, page 3 has a chain
> 3->71->34, but that page 27 is then allocated the chain 27->70->71,
> so page 3 gets corrupted. I'm about to start looking for the
> free-list.
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
htdig-dev mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/htdig-dev