PREV UP NEXT SCM

2.11: Testing

Loading `r4rstest.scm' in the distribution will run an [R4RS] conformance test on scm.

> (load "r4rstest.scm")
-|
;loading "r4rstest.scm"
SECTION(2 1)
SECTION(3 4)
 #<primitive-procedure boolean?>
    #<primitive-procedure char?>
       #<primitive-procedure null?>
          #<primitive-procedure number?>
...

Loading `pi.scm' in the distribution will enable you to compute digits of pi.

> (load "pi")
;loading "pi"
;done loading "pi.scm"
;Evaluation took 20 mSec (0 in gc) 767 cells work, 233 bytes other
#<unspecified>
> (pi 100 5)
00003 14159 26535 89793 23846 26433 83279 50288 41971 69399
37510 58209 74944 59230 78164 06286 20899 86280 34825 34211
70679
;Evaluation took 550 mSec (60 in gc) 36976 cells work, 1548 bytes other
#<unspecified>

Loading `bench.scm' will compute and display performance statistics of SCM running `pi.scm'. `make bench' or `make benchlit' appends the performance report to the file `BenchLog', facilitating tracking effects of changes to SCM on performance.

PROBLEM
HOW TO FIX
Runs some and then machine crashes.
See above under machine crashes.
Runs some and then ERROR: ... (after a GC has happened)
Remove optimization option to C compiler and recompile.

#define SHORT_ALIGN in `scmfig.h'.

Some symbol names print incorrectly.
Change memory model option to C compiler (or makefile).

Check that HEAP_SEG_SIZE fits within sizet.

Increase size of HEAP_SEG_SIZE (or INIT_HEAP_SIZE if it is smaller than HEAP_SEG_SIZE).

ERROR: Rogue pointer in Heap.
See above under machine crashes.
Newlines don't appear correctly in output files.
Check file mode (define OPEN_... in `Init.scm'
Spaces or control characters appear in symbol names
Check character defines in `scmfig.h'.
Negative numbers turn positive.
Check SRS in `scmfig.h'.
VMS: Couldn't unwind stack
VAX: botched longjmp
#define CHEAP_CONTIUATIONS in `scmfig.h'.
Sparc(SUN-4) heap is growing out of control
You are experiencing a GC problem peculiar to the Sparc. The problem is that SCM doesn't know how to clear register windows. Every location which is not reused still gets marked at GC time. This causes lots of stuff which should be collected to not be. This will be a problem with any conservative GC until we find what instruction will clear the register windows. This problem is exacerbated by using lots of call-with-current-continuations.