diff --git a/collects/tests/gracket/draw-mem.rkt b/collects/tests/gracket/draw-mem.rkt new file mode 100644 index 00000000..4b914095 --- /dev/null +++ b/collects/tests/gracket/draw-mem.rkt @@ -0,0 +1,19 @@ +#lang racket + +;; Check for a leak via multiple `racket/draw' instantiations. + +(define-values (incs m) + (for/fold ([incs 0] [prev-mem 0]) ([i 10]) + (parameterize ([current-namespace (make-base-namespace)]) + (dynamic-require 'racket/draw #f)) + (collect-garbage) + (sync (system-idle-evt)) + (collect-garbage) + (let ([m (current-memory-use)]) + (if (m . > . (+ prev-mem (* 100 1024))) + (values (add1 incs) m) + (values incs m))))) + +(unless (incs . < . 5) + (error "multiple `racket/draw' instantiations seem to accumulate memory")) +