|
Boost : |
From: Wilbur Lang (wilburlang_at_[hidden])
Date: 2007-07-13 03:58:37
Hi,
Because of network problem, what I had is a snapshot
of CVS-HEAD-07-06-29-0909. If this bug is corrected/reported before,
please ignore.
in the file /boost/interprocess/mapped_region.hpp line 467, followed is
a snip
==============================================
//Check for fixed mapping error
if(address && (m_base != (void*)address)){
error_info err = system_error_code();
this->priv_close(); // bug here
throw interprocess_exception(err);
}
==============================================
because adjusting mapping address to page size granularity, which may
cause m_extra_offset != 0. in mapped_region::priv_close::munmap will
restore address with m_base and m_extra_offset. But at line 467, m_base
did not be adjusted (it's adjusted at line 472), when priv_close()
invoked, we got a wrong address to munmap.
I think it affect windows version too (same file at line 309).
one possible correction:
move line 472~474 to 463 (*nix version).
move line 314 to 305 (windows version).
Best Regards,
Wilbur Lang
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk