[gclist] Two conservative collectors

Boehm, Hans hboehm@exch.hpl.hp.com
Thu, 11 Nov 1999 15:36:15 -0800


[I'm the primary author of the other collector.  Disclaimers similar to
Mike's apply.]

I think Mike presented the trade-off well.  I'd just like to add a couple of
minor
points:

- This isn't really relevant to the original question, but there is
generally a difference in platform support between the two collectors.
Geodesic has invested a lot of energy into win32, and they support the major
commercial Unix variants.  I have a lot less resources to invest, but I tend
to
get code contributions to support open source and many more esoteric
platforms.
My own development these days is mostly on Linux, which I believe Geodesic
doesn't
support (??).

- These days, I personally look at win32 only if something looks clearly
broken, fixable,
and nobody else is supplying a fix.  Our collector does not deal explicitly
with
pointers hidden outside the address space visible to the collector.  I think
the
current collector is usable with win32 but, aside from very simple
applications,
you will need to do more than relink or recompile.  I generally test
occasionally on one
win32 platform (usually a somewhat obsolete Windows 95 machine at my house).


- There is also a way to build our collector to intercept malloc, though I
believe that
works at most partially under win32.  Thus Mike's statement is the correct
answer to the original
question.

I personally also believe that the choice of collector really depends on
your situation.
I was very happy to see Geodesic offer their collector, since it provides an
alternative
for people who need a commercially supported product, with everything that
that entails.

I believe the basic interface differences between the collectors are still
such that they could
be hidden by a few macro definitions.  I suspect it's quite feasible to make
the choice on
a per-platform basis.  (There are more profound differences in some of the
more esoteric
features and debugging and tuning hooks.)
 
All of this is my own opinion, not necessarily Hewlett-Packard's position.
(If it has one,
I haven't been here long enough to discover what it is.)

Hans

-----Original Message-----
From: Michael Spertus [mailto:mps@geodesic.com]
Sent: Thursday, November 11, 1999 7:16 AM
To: gclist@iecc.com
Cc: mps@geodesic.com
Subject: Re: [gclist] Two conservative collectors


At 06:05 AM 11/11/99 -0500, you wrote:

>Date: Wed, 10 Nov 1999 14:55:25 -0500
>From: "Michael T. Richter" <mtr@igs.net>
>Subject: [gclist] Two conservative collectors.
>
>I'm looking into the possibility of adding garbage collection (masquerading
>it as "run-time leak detection and correction" to managers convinced that
>GC is evil) to a C++ project.  I'd like to minimize the impact adding such
>GC to projects would entail.  This had led me to looking into conservative
>collectors.
>
>I've tracked down two conservative collectors which will work in the Win32
>environment: the Boehm-Demers-Weiser collector at
>http://reality.sgi.com/boehm_mti/gc.html and the Great Circle collector at
>http://www.geodesic.com/products/greatcircle.html.
>
>I'd like to get a feel for the costs of integrating either of these
>packages into existing code.  Can either of them be used "out of the box"
>with no source code changes whatsoever for at least a start?  How
>reliable/unreliable are either of these?  How configurable are either of
>these?  I'm soliciting opinions both good and bad.
>
>I'm also interested in any comparative analyses people with experience in
>both may have to offer.  The BDW collector is free, so what precisely does
>Great Circle value-add that makes it worth its purchase price (whatever
>that price is -- alarm bells go off when I see "runtime license fee" and no
>pricing information on a web site....).

(Disclaimer: I am from Geodesic, the company that sells Great 
Circle.  Also, I am not all that familiar with whatever enhancements are in 
the most recent Boehm collector, so Hans should pipe in if I miss 
anything). We believe that Great Circle offers several valuable benefits 
for the type of situation you have described:

(1) Great Circle can be used "out of the box" with no source changes 
whatsoever or even recompilation (It helps to be able to relink the main 
app but even that is not strictly necessary). Great Circle also 
automatically intercepts calls to malloc/new made by 3rd-party DLLs even if 
source is unavailable. By contrast, I believe in the Boehm collector, you 
need to modify your code to call GC_malloc, say by "#define malloc 
GC_malloc", which requires much more rebuilding and cannot garbage collect 
components that you don't have source for.

(2) Great Circle includes full-featured web-based reporting. We report in 
real-time on the leaks we fix with full symbolic stack traces in your web 
browser as the program is running. Much other useful information including 
full heap profiling is reported as well. This feature can be very useful 
for increasing the confidence of managers who are concerned about GC. For 
example, we have found that less than half of our customers by Great Circle 
with the idea of deploying their program with it (i.e., only for use as a 
reporting tool during development), but approximately 90% end up deploying 
with it. I believe these reports are key to helping organizations develop 
confidence in and quantify the benefits of GC.

(3) Great Circle is backed by an organization. We have a full time tech 
support and services organization and a half dozen people in our SQA 
department working full-time on testing and ensuring quality. We can send 
engineers to your site to help integrate Great Circle into your 
environment, rapidly move Great Circle to new OS releases and test them 
there, etc.

(4) We believe we have a number of quality and performance enhancements not 
in the Boehm collector. For example, we look for roots in the Windows 
message queue, thread local storage, Windows extra words, etc. This greatly 
reduces the risk of premature collection. As another example, the native 
locks under Windows are very slow, so we use very fast hand-written 
assembler locks on single processor machines and spinlocks on MP machines. 
Some other enhancements are listed in our ISMM 98 paper. I know the Boehm 
collector has also made quality and performance enhancements since our code 
forked from it many years ago.

5. With regards to your other question, both the Boehm collector and Great 
Circle are highly configurable.

I also want to emphasize that I am not attempting to slam the Boehm 
collector, which we have a great debt to and is an excellent collector that 
has been used successfully by many individuals and organizations, but 
merely to describe where we believe we have been able to provide a 
value-add for it and make it easier and more beneficial to use for a wider 
variety of organizations.

Whether this creates enough value-add to justify the purchase price is of 
course for you to assess. I will simply mention that while Great Circle is 
not free, most organizations achieve a rapid ROI and are easily able to 
justify the cost.