This is the mail archive of the
cygwin
mailing list for the Cygwin project.
crash if fork(2) from another thread
- From: "Hirokazu Yamamoto" <ocean-city at m2 dot ccsnet dot ne dot jp>
- To: <cygwin at cygwin dot com>
- Date: Sun, 28 Sep 2008 11:16:21 +0900
- Subject: crash if fork(2) from another thread
# I've post mail, but it didn't show up in
http://www.nabble.com/Cygwin-f12165.html.
# Maybe it was not good to attach a file. So try again...
I'm not familiar with pthread & fork, but I think following code should not
crash. Is this expected behavior?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <assert.h>
void *thread_func(void* args)
{
int ret;
pid_t pid;
pthread_t thread;
puts("thread_func");
pid = fork();
assert(pid != (pid_t)-1);
if (pid != 0) /* parent process */
{
int status;
printf("parent process (child pid = %d)\n", pid);
waitpid(pid, &status, 0);
puts("parent process end");
}
else /* child process */
{
puts("child process"); /* crash here */
}
return args;
}
int main()
{
int ret;
pthread_t thread;
ret = pthread_create(&thread, NULL, thread_func, NULL);
assert(ret == 0);
ret = pthread_join(thread, NULL);
assert(ret == 0);
}
// built with "gcc main.c -o main.exe"
Thank you.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/