diff --git a/sys/src/9k/port/sysproc.c b/sys/src/9k/port/sysproc.c index 5366fc812..e38b90984 100644 --- a/sys/src/9k/port/sysproc.c +++ b/sys/src/9k/port/sysproc.c @@ -514,13 +514,6 @@ sysexec(Ar0* ar0, va_list list) up->nargs = nargs; poperror(); /* args */ - /* - * Close on exec - */ - f = up->fgrp; - for(i=0; i<=f->maxfd; i++) - fdclose(i, CCEXEC); - /* * Free old memory. * Special segments maintained across exec. @@ -602,6 +595,7 @@ sysexec(Ar0* ar0, va_list list) mmuflush(); qlock(&up->debug); up->nnote = 0; + up->notepending = 0; up->notify = 0; up->notified = 0; up->privatemem = 0; @@ -610,6 +604,13 @@ sysexec(Ar0* ar0, va_list list) if(up->hang) up->procctl = Proc_stopme; + /* + * Close on exec + */ + f = up->fgrp; + for(i=0; i<=f->maxfd; i++) + fdclose(i, CCEXEC); + ar0->v = sysexecregs(entry, TSTKTOP - PTR2UINT(argv), argc); }