Opened 8 years ago
Last modified 8 years ago
#10353 new Bugs
Interprocess: rbtree_best_fit ABI change from 1.53 to 1.55
Reported by: | Owned by: | Ion Gaztañaga | |
---|---|---|---|
Milestone: | To Be Determined | Component: | interprocess |
Version: | Boost 1.55.0 | Severity: | Problem |
Keywords: | Cc: |
Description
I have an issue that seems to be identical to the issue discussed in this thread on the Boost List: http://lists.boost.org/boost-users/2014/01/81159.php
Basically, it seems the size of the Imultiset member in header_t of rbtree_best_fit.hpp has changed between Boost 1.53 and Boost 1.55. As mentioned in the thread from the Boost List:
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).
Change History (2)
comment:1 by , 8 years ago
Component: | None → interprocess |
---|---|
Owner: | set to |
Can you please test Boost 1.56? This regression should be fixed in that version.