Boost logo

Boost :

Subject: Re: [boost] "peer reviewed" - Rights and responsibilities of maintainers
From: Gavin Lambert (boost_at_[hidden])
Date: 2018-10-17 02:25:31


On 17/10/2018 15:16, Peter Dimov wrote:
> Gavin Lambert wrote:
>> On 17/10/2018 14:10, Steven Watanabe wrote:
>> > That's not correct.  If an object has static storage duration and a
>> > trivial destructor, then it is never "destroyed." Its storage exists
>> > "for the lifetime of the program" [basic.stc.static] and its
>> lifetime > ends when "the storage which the object occupies is reused
>> or released" > [basic.life]
>>
>> Which occurs when the shared library that contains its storage is
>> unloaded.
>
> How, specifically, are you planning to read a function local static from
> an unloaded library? You've already crashed way before that.

It's not inherently impossible for it to happen; the code can be inlined
with only that variable being used as an external symbol pointing into
unloaded memory. Which might not even crash when run on an OS that
doesn't free the pages immediately (or at all).

Again, though, this is a side track. My main point is that if you find
yourself asking "has this object been destroyed?" then it's usually a
sign of a more fundamental lifetime mismatch, and it's probably
worthwhile exploring that.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk