[Boost-bugs] [Boost C++ Libraries] #9602: Unexpected ABI change in boost::interprocess::rbtree_best_fit

Subject: [Boost-bugs] [Boost C++ Libraries] #9602: Unexpected ABI change in boost::interprocess::rbtree_best_fit
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-01-23 13:16:45


#9602: Unexpected ABI change in boost::interprocess::rbtree_best_fit
------------------------------+--------------------------
 Reporter: kevin.arunski@… | Owner: igaztanaga
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: interprocess
  Version: Boost 1.55.0 | Severity: Regression
 Keywords: |
------------------------------+--------------------------
 Copied from the boost-users mailing list. This is in relation to the
 change in the binary representation of
 boost::interprocess::rbtree_best_fit between boost 1.53 and boost 1.55.

 This problem was observed in MSVC 2012 x86-64 builds.

 El 22/01/2014 22:06, Arunski, Kevin escribió:
>
 boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family,boost::interprocess::offset_ptr<void,__int64,unsigned
 __int64,0>,0>
>
> has size = 56
> member m_header.m_imultiset has size 32
>
> In code compiled with boost 1.55:
>
> the same type has size = 72
> member m_header.m_imultiset has size 48

 Wow, that's too big. I think this is related with MSVC Empty Base
 Implementation behaviour. I refactored those classes to avoid redundant
 simple forwarding functions using inheritance and that broke this for
 MSVC compilers. I should add some checks for 32 and 64 bit compilers to
 guarantee the minimum size (16 bytes in 32 bit and 32 bytes in 64 bit).
 Please, fill a new ticket in Boost Trac so that I don't forget this bug.
 And thanks for the report.
 Ion

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9602>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:15 UTC