X-Recipient: archive-cygwin AT delorie DOT com X-Spam-Check-By: sourceware.org Message-ID: <003301c92110$336cee20$0200a8c0@whiterabc2znlh> From: "Hirokazu Yamamoto" To: Subject: crash if fork(2) from another thread Date: Sun, 28 Sep 2008 11:16:21 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook Express 6.00.2800.1933 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com # 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 #include #include #include 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/