boostorg / boostorg/msm

Serialization-related tests on Windows are failing with gcc

Open
#114 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
40
Forks
59
PR merge metrics
No merged PRs in 30d

Description

Serialization-related tests on Windows are currently failing with gcc, they have to be disabled for the moment. This ticket serves for tracking the disabled test cases and providing more context why the test cases are disabled.

The disabled test cases actually pass, but eventually a segfault in a singleton destructor from Boost::serialization occurs before the application exits. The segfault seems to be related to a bug in gcc's implementation of `std::type_info::before()`.

Oddly this bug only surfaces on Windows and depends on how the constant `__GXX_TYPEINFO_EQUALITY_INLINE` is defined in the toolchain. It seems to evaluate to 1 on Linux environments and 0 on Windows. There is a [bug report for gcc](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117405) describing this issue. I managed to get a successful run of the disabled test cases with the following hack to ensure that they are indeed related to this gcc bug:
- Add `#define __GXX_TYPEINFO_EQUALITY_INLINE 1` at the top of `serialization/src/extended_type_info_typeid.cpp`
- Link serialization as shared lib instead of static

Contributor guide

No contributing guide indexed for this repository

Research direction

Locate the disabled serialization-related test cases in the msm repository and reproduce their Windows gcc behavior. Read serialization/src/extended_type_info_typeid.cpp and the linked GCC bug for context, then verify that the affected tests are disabled with a clear explanation of the destructor failure and toolchain dependence.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
operating-systems, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.