Boost logo

Boost-Build :

From: David Abrahams (dave_at_[hidden])
Date: 2007-10-03 12:53:13

on Mon Sep 17 2007, Markus Schöpflin <> 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

  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

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at