Re: 5.9.1 release now integrated into ponie
[email protected] (Jeff Clites) Sat, 1 May 2004 19:38:47 -0700
| Newsgroups | perl.ponie.dev |
|---|---|
| Message-ID | <[email protected]> |
On Apr 29, 2004, at 8:04 AM, Nicholas Clark wrote:
>> ../lib/warnings.t 503 1 0.20% 224
>
> This is this test:
...
> exec $^X, "-e0" ;
>
> and it is failing with ENOTSUP. Really. I checked with ktrace:
...
> Of course, this can't be happening, as the OS X man page doesn't list
> ENOTSUP as a possible return from execve. Hence I don't know where to
> look next.
> (Darwin source code....?)
It turns out that you can't execve with more than one running thread
(apparently). The code below demonstrates. I don't know why this is the
case (or why the test code is hitting this), but I figured this out by
looking at the kernel source code (xnu project, in Darwin).
JEff
----------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
extern char **environ;
void* doNothing(void *data)
{
while(1) {}
return NULL;
}
int main (int argc, const char * argv[])
{
pthread_t thread;
int retVal;
printf("Starting!\n");
pthread_create(&thread, NULL, doNothing, NULL);
retVal = execve("/usr/bin/true", argv, environ);
printf("retVal = %d, errno = %d\n", retVal, errno);
perror(NULL);
return 0;
}
/*
output:
Starting!
retVal = -1, errno = 45
Operation not supported
*/