threads/119920: fork broken in libpthread
Landon Fuller
landonf at bikemonkey.org
Thu Jan 31 11:03:09 PST 2008
On Jan 31, 2008, at 10:44, Julian Elischer wrote:
> the releng 6 and releng 7 versions of this patch are at:
> http://www.freebsd.org/~julian/kse-6.diff
> and
> http://www.freebsd.org/~julian/kse-7.diff
>
> but the one for 7 is just speculative.
> I don't have a 7.x system to test.
>
> Landon, what is your test case?
Inlined below. On our 8-core 6.3 system without this patch, the fork
() threads wedge and spin in <2 minutes. With the patch, works as
expected.
#include <sys/types.h>
#include <unistd.h>
#include <pthread.h>
void *forker (void *arg) {
while (1) {
pid_t pid = fork();
if (pid == 0) {
exit(0);
} else if (pid > 0) {
int status;
waitpid(pid, &status, 0);
} else {
printf("Fork failed\n");
abort();
}
}
}
int main(void) {
int i = 0;
for (i = 0; i < 4; i++) {
pthread_t thr;
pthread_create(&thr, NULL, forker, NULL);
pthread_detach(thr);
}
while(1)
sleep(1000);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-threads/attachments/20080131/d9e9d1db/PGP.pgp
More information about the freebsd-threads
mailing list