From owner-freebsd-bugs Wed Aug 12 19:10:05 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA21023 for freebsd-bugs-outgoing; Wed, 12 Aug 1998 19:10:05 -0700 (PDT) (envelope-from owner-freebsd-bugs@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA21016 for ; Wed, 12 Aug 1998 19:10:03 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id TAA16236; Wed, 12 Aug 1998 19:10:01 -0700 (PDT) Received: from test.accucount.com (test.accucount.com [209.50.225.55]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA20558 for ; Wed, 12 Aug 1998 19:07:26 -0700 (PDT) (envelope-from loschert@test.accucount.com) Received: (from loschert@localhost) by test.accucount.com (8.8.8/8.8.8) id WAA00865; Wed, 12 Aug 1998 22:06:55 GMT (envelope-from loschert) Message-Id: <199808122206.WAA00865@test.accucount.com> Date: Wed, 12 Aug 1998 22:06:55 GMT From: loschert@servint.com Reply-To: loschert@servint.com To: FreeBSD-gnats-submit@FreeBSD.ORG X-Send-Pr-Version: 3.2 Subject: misc/7600: Pthreads Bug - Interaction between printf and pthread_self Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 7600 >Category: misc >Synopsis: Pthreads Bug - Interaction between printf and pthread_self >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Aug 12 19:10:01 PDT 1998 >Last-Modified: >Originator: Matt Loschert >Organization: ServInt Internet Services >Release: FreeBSD 2.2.7-STABLE i386 >Environment: FreeBSD 2.2.7-STABLE #0: Thu Jul 23 10:04:36 GMT 1998 >Description: While testing a couple of server apps that I had written, I discovered that in certain situations, the process would "run-away". At that point, the app could only be killed with a kill -9 and top would show that the process was eating up 99.9% of the cpu cycles. I found that the condition that instigated the problem was starting the app as a background process and then exiting the shell. Almost immediately after exiting the shell, the process would go haywire. :) The apps use pthreads and therefore -libc_r. I attempted to isolate the problem this evening by stripping out extraneous code. I was able to cut it down to the following program. The line that it does not like is the printf line that calls pthread_self to show the thread id. >How-To-Repeat: 1. Compile the below code with the following command: gcc -Wall -o bug FILENAME.c -lc_r 2. Run the program in the background with: ./bug & 3. Exit the shell. 4. Log back in, check cpu usage with top. ----CODE BEGINS (FILENAME.c)---- #include #include #include void *newthread (void *vptr); int main() { pthread_t thread; pthread_create (&thread, NULL, newthread, NULL); pthread_join (thread, NULL); exit(0); } void *newthread(void *vptr) { for(;;) { printf("Thread %d: Just looped again.\n", (int) pthread_self()); sleep(5); } } ----CODE ENDS---- >Fix: Don't know, hope this helps though. >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message