It appears that get_dumpsize is b0rked in that the following
returns a negative number for systems with large memory/swap 
configs:

void
get_dumpsize()
{
        int kdumpsize;

        /* Read the dump size. */
        DumpRead(dumpfd, &kdumpsize, sizeof(kdumpsize),
            (off_t)(dumplo + ok(dump_nl[X_DUMPSIZE].n_value)), L_SET);
        dumpsize = kdumpsize * getpagesize();
}


the dumpsize = kdumpsize * getpagesize() produces a negative
number when kdumpsize = 1032192; resulting in savecore exiting without
actually performing the dump in save_core().

Here's the patch to address it:

--- savecore.c.old      Thu Oct  4 16:22:16 2001
+++ savecore.c  Thu Oct  4 16:25:07 2001
@@ -601,7 +601,7 @@
        /* Read the dump size. */
        DumpRead(dumpfd, &kdumpsize, sizeof(kdumpsize),
            (off_t)(dumplo + ok(dump_nl[X_DUMPSIZE].n_value)), L_SET);
-       dumpsize = kdumpsize * getpagesize();
+       dumpsize = (off_t) kdumpsize * (off_t) getpagesize();
 }
 
 /*

can someone please commit this fix?  

thanks
-mohan


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to