This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: dlclose not calling destructors of static variables.


On 01/02/10 19:28, Dave Korn wrote:
On 01/02/2010 17:51, Christopher Faylor wrote:
On Mon, Feb 01, 2010 at 12:46:11PM -0500, Christopher Faylor wrote:
Cribbing from the gdb source code, it looks like they use BaseAddrees +
0x1000 for the start point and then call GetModuleInformation to workout
the size of the module.
Yeah, duh.  "they" == "me".  I should have checked gdb for this since I've
already done this research once before.

If you do find that this works, then I think this may fall into the
realm of a non-trivial patch so it may be best to just tell me what
you've found rather than provide a patch - unless you want to go through
the approval process with Red Hat.

Or, you can just wait for me to adapt what's in gdb to cygwin. I can do
tonight when I get back to a windows system.
Btw, it isn't entirely clear that GetModuleInformation will work with
older versions of Windows NT so this may not be a complete solution. We
do use GetModuleInformation in Cygwin but it is not in anything as
crucial as this.
   Can't we use the info in the dll struct?  It has pointers to the data and
bss section, we could take the max out of them and the data in the M_B_I
struct.  (Tell you what, I'll try it.)


That would be the ideal solution.


I'm not looking to submit a patch to fix this, I'll leave that up to the professionals
who have a better idea about the whole picture. It's just I've hit a brick wall with
my code with this bug so I'm looking for some work arounds for myself.


I'm going to poke around the "remove_dll_atexit" function again tomorrow.
gdb used bfd_* functions from binutils so that's out for me, VirtualQuery seems
wrong for purpose and GetModuleInformation keeps giving me a invalid handle error.
Iterating over the dll list and using the per_module information seems like my best bet,
and hopefully should be quite simple I think.


Andy.

--
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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]