https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87822
Bug ID: 87822 Summary: [regression 6/7/8/9] Binary incompatibility in std::pair introduced by PR 86751 Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: romain.geissler at amadeus dot com Target Milestone: --- Hi, I am having core dumps when mixing libraries built with gcc 6.4.1 and the final gcc 6.5.0 (I know gcc 6 branch is closed, but since the incompatibility is about a std::pair type that is quite commonly used I guess this is still valid). You have the exact same incompatibility with early gcc 7 vs newest gcc 7, early gcc 8 vs newest gcc 8. See this simple snippet that builds fine with both gcc 6.4 and 6.5 shows the change of type size (on x64): #include <utility> #include <string> #if __GNUC__ == 6 && __GNUC_MINOR__ <= 4 static_assert(sizeof(std::pair<std::pair<std::string, std::string>, std::string>) == 96, ""); #elif __GNUC__ == 6 && __GNUC_MINOR__ >= 5 static_assert(sizeof(std::pair<std::pair<std::string, std::string>, std::string>) == 104, ""); // Size of type changed with r265162 #endif Shall we revert PR 86751 or find another way to fix it (introduce a new tagged std::pair type and provide dual abi ?). Cheers, Romain