On Sun, 2 Nov 1997, Benjamin Welch II wrote:
> I am attempting to build 1.73 over the 1.62 version (that someone
> else
>
> built)on a BSDI machine. In the last two attempts, Exim has produced
>
> ~20 megs of the following before I can kill the process:
>
>
> LOG: 0 MAIN PANIC
>
> SEGV while reading "" from dbm file: record assumed not to exist
(1) Try deleting all Exim's hints databases; that looks like one has been
corrupted, though why is it looping is worrying.
(2) Try applying the patch below, which fixes a bit of particularly
silly stupidity on my part when trying to catch SEGVs inside the DBM
library, in order to allow deliveries to continue.
--
Philip Hazel University Computing Service,
ph10@??? New Museums Site, Cambridge CB2 3QG,
P.Hazel@??? England. Phone: +44 1223 334714
*** exim-1.73/src/dbfn.c Tue Sep 30 14:54:43 1997
--- dbfn.c Mon Oct 27 16:16:34 1997
***************
*** 248,256 ****
if (setjmp(read_env) == 0)
{
signal(SIGSEGV, segv_handler);
! if (!EXIM_DBGET(dbm, key_datum, result_datum)) return NULL;
signal(SIGSEGV, SIG_DFL);
yield = (void *)store_malloc(EXIM_DATUM_SIZE(result_datum));
memcpy(yield, EXIM_DATUM_DATA(result_datum), EXIM_DATUM_SIZE(result_datum));
if (length != NULL) *length = EXIM_DATUM_SIZE(result_datum);
--- 248,258 ----
if (setjmp(read_env) == 0)
{
+ BOOL found;
signal(SIGSEGV, segv_handler);
! found = EXIM_DBGET(dbm, key_datum, result_datum);
signal(SIGSEGV, SIG_DFL);
+ if (!found) return NULL;
yield = (void *)store_malloc(EXIM_DATUM_SIZE(result_datum));
memcpy(yield, EXIM_DATUM_DATA(result_datum), EXIM_DATUM_SIZE(result_datum));
if (length != NULL) *length = EXIM_DATUM_SIZE(result_datum);
--
* This is sent by the exim-users mailing list. To unsubscribe send a
mail with subject "unsubscribe" to exim-users-request@???
* Exim information can be found at http://www.exim.org/