I'm attempting to build the m4 package. During this aclocal is invoked which in 
turn invokes autom4te. There are quite a lot of parameters and envvars being 
passed and the execve fails with  EFAULT. Tracing shows me that the following 
code is responsible in $SRC/uts/common/os/exec:

/*
 * Add a string to the stack.
 */
static int
stk_add(uarg_t *args, const char *sp, enum uio_seg segflg)
{
        int error;
        size_t len;

        if (STK_AVAIL(args) < sizeof (int))
                return (E2BIG);
        *--args->stk_offp = args->stk_strp - args->stk_base;

        if (segflg == UIO_USERSPACE) {
                error = copyinstr(sp, args->stk_strp, STK_AVAIL(args), &len);
                if (error != 0)
                        return (error);
:
:
}

The failure occurs when the STK_AVAIL(args) in the copyinstr() call resolves to 
a negative number (in my case 0xfffffffb). Should a STK_AVAIL(args) be done 
immediately after the *--args->... so it can return E2BIG and thus allow the 
stack area to be doubled?

Neale
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to