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: Terence.Darwen@… 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 Antony Polukhin, 8 years ago

Component: Noneinterprocess
Owner: set to Ion Gaztañaga

comment:2 by Ion Gaztañaga, 8 years ago

Can you please test Boost 1.56? This regression should be fixed in that version.

Note: See TracTickets for help on using tickets.