From owner-freebsd-questions@FreeBSD.ORG Wed May 20 19:20:47 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93654106566C for ; Wed, 20 May 2009 19:20:47 +0000 (UTC) (envelope-from dan@dan.emsphone.com) Received: from email1.allantgroup.com (email1.emsphone.com [199.67.51.115]) by mx1.freebsd.org (Postfix) with ESMTP id 487EC8FC1D for ; Wed, 20 May 2009 19:20:47 +0000 (UTC) (envelope-from dan@dan.emsphone.com) Received: from dan.emsphone.com (dan.emsphone.com [199.67.51.101]) by email1.allantgroup.com (8.14.0/8.14.0) with ESMTP id n4KJKk5w099708 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 20 May 2009 14:20:46 -0500 (CDT) (envelope-from dan@dan.emsphone.com) Received: from dan.emsphone.com (smmsp@localhost [127.0.0.1]) by dan.emsphone.com (8.14.3/8.14.3) with ESMTP id n4KJKkg9024911 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 20 May 2009 14:20:46 -0500 (CDT) (envelope-from dan@dan.emsphone.com) Received: (from dan@localhost) by dan.emsphone.com (8.14.3/8.14.3/Submit) id n4KJKgZd024908; Wed, 20 May 2009 14:20:42 -0500 (CDT) (envelope-from dan) Date: Wed, 20 May 2009 14:20:42 -0500 From: Dan Nelson To: Peter Steele Message-ID: <20090520192042.GG52703@dan.emsphone.com> References: <19206470.1651242845780966.JavaMail.HALO$@halo> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <19206470.1651242845780966.JavaMail.HALO$@halo> X-OS: FreeBSD 7.2-STABLE User-Agent: Mutt/1.5.19 (2009-01-05) X-Virus-Scanned: ClamAV version 0.94.1, clamav-milter version 0.94.1 on email1.allantgroup.com X-Virus-Status: Clean X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (email1.allantgroup.com [199.67.51.78]); Wed, 20 May 2009 14:20:46 -0500 (CDT) X-Scanned-By: MIMEDefang 2.45 Cc: #freebsd-questions Subject: Re: pthread_detach doesn't release memory X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 May 2009 19:20:48 -0000 In the last episode (May 20), Peter Steele said: > I create a thread using something like this: > > pthread_t thread; > pthread_create(&thread, NULL, mythread, NULL); > pthread_detach(thread); > > I use the detach because I want to make sure the thread's resource are > reclaimed when the thread completes. However, this does not seem to work. > Each time I create a thread the application's memory footprint grows by > 128 bytes and this memory is never released. Are you malloc'ing some data in your thread and not freeing it before exiting? pthread_detach simply lets the system discard the thread when it exits instead of preserving the return code (for pthread_join to retrieve). It isn't responsible for freeing all memory allocated by the thread, and it shouldn't, since one thread may allocate memory that another thread frees later. -- Dan Nelson dnelson@allantgroup.com