Boost logo

Boost :

Subject: Re: [boost] [Boost.Serialization] Crash in current master (1.68)
From: Robert Ramey (ramey_at_[hidden])
Date: 2018-07-02 15:24:50


On 7/2/18 6:40 AM, Alexander Grund via Boost wrote:
>
>> Although crashing is not observed with the slightly older Boost
>> releases (e.g. 1.66, 1.65.1, 1.64, etc.), intentionally isolating
>> Boost.Serialization as Gavin describes fails, with the already
>> described lack of destructor invocations and memory leak.

> Did you test the code I sent around with static boost and those
> versions? I expect a crash in 1.68 (if the commit is not reverted) and
> in 1.65.x, so if you don't experience one I'd be interested in details
> (OS, stdlib, compiler etc.). Also: 1.64 should be fine and 1.65 should
> not leak, but crash. 1.66/1.67 have the leak.

Here's what I did. I looked at the serialization test matrix:

https://www.boost.org/development/tests/develop/developer/serialization.html

The interesting test is test_dll_exported. I compared this table
against the config.info:

https://www.boost.org/development/tests/develop/developer/config.html

And I also looked at the test command line.

test results to see if I could find a commonality between the test
failures and the configuration being tested. I found that:

a) Test failed only on linux platforms. But the test doesn't fail on
all linux platforms.
b) Test never fails on windows platforms.
c) tests would fail with both clang and gcc compilers
d) Test failure seems pretty reliable. Exception: the one test which
passes uses gcc 7.3
e) I can't discern what the build switch settings are from the python
command line. That is I would like to know if it was built with
link=shared/static and runtime-link=shared/static. I believe that this
information would be significant.
f) a couple of ARM tests pass - one fails.

Much has been made of a memory leak. The current version 1.68 on
develop and master branches removed the dynamic allocation in the
singleton module. So if there is a memory leak it would be more subtle
than first meets the eye. I believe this memory leak was introduced in
efforts to make this test pass for 1.67 (or maybe 1.66 I don't remember).

I believe the correct way to approach this is to analyze your new test
and also test_dll_export in light of Gavin Lambert's comments above. If
this works out, I would then add this information to the serialization
library documentation.

Unfortunately, I'm bogged down in other stuff so I can't address it
instantaneously, but it I do consider it important to investigate further.

Robert Ramey

>
> Alex
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


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