|
Boost-Build : |
From: David Abrahams (dave_at_[hidden])
Date: 2007-10-03 12:53:13
on Mon Sep 17 2007, Markus Schöpflin <markus.schoepflin-AT-comsoft.de> wrote:
> Rene Rivera wrote:
>
>> Dave mentioned he might look at why it crashes when using boehmgc. But
>> as we all know he's a busy person ;-) If any one else is brave enough,
>> they can try it out with the svn bjam version (3.1.15), just by adding
>> --gc when building bjam.
>>
>> NOTE; Using boehmgc does help, when I run with it, it does use less
>> memory. It just crashes at some point :-(
>
> I have built a version of bjam linked against boehm gc 7.0. When this
> version is run, it get tons of complaints from the gc:
>
> GC_debug_register_finalizer called with non-base-pointer 0x8168fe0
> GC_debug_register_finalizer called with non-base-pointer 0x8161f78
> GC_debug_register_finalizer called with non-base-pointer 0x8161f78
> ...
>
> Maybe this rings a bell with someone on what might be wrong?
Hans Boehm has this to say about it:
The message means the GC_debug_register_finalizer was passed an
address that at was at the wrong offset from a GC allocated object.
It should normally be at a fixed nonzero offset, since it should be
passed an object allocated by GC_debug_malloc, which adds a header
with debug information.
The call stack at the call to GC_err_printf might well be
interesting.
Typically, you would be calling GC_MALLOC and GC_REGISTER_FINALIZER
with GC_DEBUG defined to get here. An inconsistent GC_DEBUG setting
for different compilation units might do this. IObj and base in
GC_debug_register_finalizer would probably have to have the same
value for this to be the case.
This error by itself is probably not
fatal. GC_debug_register_finalizer computes the right object address
anyway. The real problem may be elsewhere.
Still, it seems worth investigating.
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk