[plt-scheme] v300 on NetBSD
I'm encountering, while building v300 on NetBSD/i386 2.0, what looks
like the same hang that reported here earlier with OpenBSD. The cause
of the slowness is swapping; the mzscheme process seems to be
allocating an unbounded amount of memory -- or at least it didn't stop
before it got to 1GB when I let it run overnight -- and is spending
most of its time being paged in/out (and thus with its context in
biowait via the page fault handler) rather than making progress.
2.0 on i386 has non-executable stacks by default; could that be
related somehow? It doesn't do stack protection, and USE_TOPDOWN_VM
(which makes addresses assigned to successive non-fixed mmap's start
under the stack and decrease, instead of starting above the heap and
increasing) isn't enabled by default.
A ktrace(1) of signal handling shows that the only non-PROF, non-CHLD
signal the mzscheme takes is a SEGV, type SEGV_MAPERR, for an address
256 less than the base of the mzscheme executable's mapping; that may
well be normal.
So... where do I go from here?
--
(let ((C call-with-current-continuation)) (apply (lambda (x y) (x y)) (map
((lambda (r) ((C C) (lambda (s) (r (lambda l (apply (s s) l)))))) (lambda
(f) (lambda (l) (if (null? l) C (lambda (k) (display (car l)) ((f (cdr l))
(C k))))))) '((#\J #\d #\D #\v #\s) (#\e #\space #\a #\i #\newline)))))