delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-SWARE-Spam-Status: | No, hits=-0.1 required=5.0 tests=AWL,BAYES_00,BOTNET,RDNS_NONE,SPF_PASS |
X-Spam-Check-By: | sourceware.org |
Message-ID: | <4B62F118.8010305@gmail.com> |
Date: | Fri, 29 Jan 2010 14:30:48 +0000 |
From: | Andrew West <andrewwest AT gmail DOT com> |
User-Agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 |
MIME-Version: | 1.0 |
To: | cygwin AT cygwin DOT com |
Subject: | Re: dlclose not calling destructors of static variables. |
References: | <4B61732F DOT 4030804 AT gmail DOT com> <4B62DDE6 DOT 5070106 AT gmail DOT com> |
In-Reply-To: | <4B62DDE6.5070106@gmail.com> |
X-IsSubscribed: | yes |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
On 29/01/2010 13:08, Dave Korn wrote: > On 28/01/2010 11:21, Andrew West wrote: > >> I seem to be having a problem with dlclose not calling the destructors >> of statically declared variables. I've attached a simple test case which >> I compile as follows; >> > Thanks for the report and the STC; this should work. I'll take a look at it > over the weekend or the start of next week if nobody else gets there first. > > cheers, > DaveK > > Thanks for looking into this, it looks a little more complex than I first thought. I've tried calling __call_exitprocs during dlclose ( after run_dtors for the unloading library ) just to see if I was thinking along the right lines. Unfortunately this didn't work as when the destructor is registered with atexit it isn't associated with the loaded library but with the main executable. Which brings me on to the bigger problem, the static variables are registered with atexit rather than with __cxa_atexit which seems to be a violation of the C++ standard (1). Worse still gcc isn't compiled with cxa_atexit enabled. So I assume the right course of action here is to enable __cxa_atexit in gcc, and then make sure __cxa_finalize gets called when the library is unloaded? Andy. 1) http://refspecs.linux-foundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/baselib---cxa-atexit.html -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |