http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16612

j.scheid <julians37 at googlemail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |julians37 at googlemail dot
                   |                            |com

--- Comment #34 from j.scheid <julians37 at googlemail dot com> 2012-04-05 
18:45:37 UTC ---
For what it's worth, it appears as if I was just bitten by this issue in a
slightly different context.

I was passing a std::string across a dylib boundary which worked on Apple's gcc
4.2.1 but crashed on Windows (MSVC).  Figuring that with MSVC the allocator
would use a different heap in each dylib I wrote a custom allocator, and now it
worked on MSVC but crashed on gcc on Darwin.

I worked out that on Darwin, the custom allocator attempted to release the
empty string created in the other dylib.  Defining
_GLIBCXX_FULLY_DYNAMIC_STRING solved the issue.

Anyway, I haven't yet dug deep enough to be certain that this is the same
issue, but it very much appears as if this is not only a problem for shared
memory but also when two dynamic libraries both link against libstdc++ and
exchange std::strings.

The one thing that baffles me, though, is why this wasn't a problem before I
introduced the custom allocator. Does std::allocator have any safeguards
against this?

Reply via email to