Greetings Jim,
Attached is a hack which explicitly stops the recursion in OS X. Does
it work? (Neal, would it be better in one of the other functions in
the loop?)
I don't know why a different OS should crash in a different place.
Does OS X support pread? Type man pread.
Are you having any luck with the other errors in 'make check'?
Thanks!
Lachlan
On Friday 28 February 2003 11:23, Jim Cole wrote:
> Hi - Just a follow up on the issue of zlib version. I installed
> the 1.1.4 version of zlib available via Fink and rebuilt
> everything. Using the newer version of zlib, I encounter the same
> problem (i.e. a segfault from htdig with a very deep stack trace).
> I did perform a distclean and verified the use of the 1.1.4 version
> libz via otool.
>
> Jim
>
> On Thursday, February 27, 2003, at 04:41 AM, Lachlan Andrew wrote:
> > On Thursday 27 February 2003 11:16, Jim Cole wrote:
> >> The backtrace is attached. The problem does not occur if I turn
> >> off compression.
> >
> > Thanks. My guess is that (part of) the reason for the very deep
> > recursion is that it's trying to allocate a block of len=8247
> > bytes, when the page size is only 8192:
> > #3244 0x00070958 in CDB___memp_alloc (dbmp=0xa98c30,
> > memreg=0xa99f60, mfp=0xc84e98, len=8247, offsetp=0x0,
> > retp=0xbfffd900) at mp_alloc.c:88
> >
> > I used to get the error
> > Unable to allocate %lu bytes from mpool shared region
> > at some stage too, which is generated inside CDB___memp_alloc.
> > From memory, that was when I was using 1.1.3.
> >
> > If that is really the problem, it can be fixed by testing
> > explicitly whether len>pagesize (if the pagesize is available
> > somewhere...).
>
> -------------------------------------------------------
> 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
*** mp_alloc.c Sun Feb 3 05:18:05 2002
--- mp_alloc-try.c Sun Mar 9 19:39:05 2003
***************
*** 84,94 ****
--- 84,99 ----
/* Write the page if it's dirty. */
if (F_ISSET(bhp, BH_DIRTY)) {
+ static int count = 0;
+ if (count) // if this memp_alloc call is recursive
+ continue; // through bhwrite, seek a clean page...
+ count++;
++bhp->ref;
if ((ret = CDB___memp_bhwrite(dbmp,
bh_mfp, bhp, &restart, &wrote)) != 0)
return (ret);
--bhp->ref;
+ count--;
/*
* Another process may have acquired this buffer and