On Thu, Sep 18, 2008 at 05:09:35PM +0530, Sadashiiv, Halesh wrote: > char e2BIG[ARG_MAX+1][10]; > char *envList[]={NULL}; > > int main(void) > { > int ret,ind; > > for(ind = 0; ind < ARG_MAX+1; ind++) > strcpy(e2BIG[ind], "helloword"); this is broken and does cause an EFAULT on x86 as well (you should take the warning from gcc about the second argument of execve serious). Try: char *e2BIG[ARG_MAX+1]; char *envList[]={NULL}; int main(void) { int ret,ind; for(ind = 0; ind < ARG_MAX+1; ind++) e2BIG[ind] = strdup("helloword"); And it looks like the ARG_MAX limit is bigger than my installed glibc thinks, because it works at least on x86. When I increase the array two 2 * ARG_MAX I'll get the wanted E2BIG. Thomas. -- Crap can work. Given enough thrust pigs will fly, but it's not necessary a good idea. [ RFC1925, 2.3 ]