[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Purify'd scheme(s) -- a contribution to the `GEL = SCM + RMS' debate




      CTAK    :   Finished  scm                  (1724633 errors,    0 leaked bytes)

   OK.  "0 leaked bytes"; I assume that means that SCM freed all malloced
   memory.  Good, I'm glad the effort to do this paid off.

No cigar.  You didn't.  `No leaked byted' means that there is no
orphaned memory (non-freed memory with no pointers to it anymore).
Purify did report some non-freed memory at the end of a SCM session (I
didn't include this in my posting).  However, I found this number to
be somewhat strange, so I decided to not blame SCM for it.

   As for the "errors", SCM uses a conservative GC.  This means that it
   scans any memory (including stack) which might contain pointers to
   active objects.

Well, I didn't speculate on why SCM behaves the way it does.  I was
pretty sure that the errors are due to the potentially non-portable
and unsafe manner in which it implements GC and continuations.  But I
didn't want to start an argument about this.

In fact, I don't care *why* an implementation exposes such errors.  I
only care about the fact that it does it at all.  No explanation
required.

	    UMR: Uninitialized memory read (45 times)

   Such memory may well be uninitialized.  It would be a meaningless
   waste of cycles to initialize it just to satisfy "Purify".

But it is ok to waste cycles to read garbage.  I see...

[ further attempts to justify these bugs deleted ]

   Notice one thing further.  "Beyond stack write error" doesn't occur in
   your list.  SCM calls a procedure repeatedly until the bottom of its
   stack frame is above the top of the stack to be copied in.  Thus SCM
   only copies into bonified stack.

Great.  And what happens on machines with non-linear stacks?

      I myself can give these recommendations:

	      1. If you are a C programmer, then give Purify a try! (I'm not
		 affiliated with Pure Software Inc.)

   Why?

Because it spotted a bug in *my* Scheme implementation which went
undetected for a long time.

   Just below you give a disclaimer saying it was unreliable.  And
   the above results show that it definitely misdiagnoses a conservative
   GC.

I think the diagnose is pretty accurate.

        You only report success with one program.

	      2. Don't use SCM for critical applications until it has been
		 CAREFULLY overhauled.  Don't turn it into a (*the*) GEL, before
		 this has been done!

   This is not a valid conclusion since it is drawn from an admittidly
   unreliable tool.  Didn't it make you wonder how all the people who use
   SCM on a wide variety of hardware and systems manage not to get
   segment violations and other problems given the millions of "errors"
   found by Purify?

Well, let me first say that I didn't come to this *recommendation*
(i.e. NOT a *conclusion*!) just on the basis of what Purify reported.
I had this opinion already before, but it was less supported by hard
facts.  You admit that Purify is right to report these error.  You
even explain to us how we should appreciate them as artifacts of a
valid implementation.  My opinion about this differs, and it differed
long before I ran the tests.

Sorry, but I can't endorse SCM.