The following program, btw, does not exhibit the problem you mention (because it allocates something outside of the bignum arithmetic code).
(do ([i 0 (+ 1 i)] [t 0 (cons 0 0)]) [(= i 1000000000) (display "done\n")] (when (= 0 (modulo i 10000000)) (display i) (newline)))
The following program, btw, does not exhibit the problem you mention (because it allocates something outside of the bignum arithmetic code).
(do ([i 0 (+ 1 i)]
[t 0 (cons 0 0)])
[(= i 1000000000)
(display "done\n")]
(when (= 0 (modulo i 10000000))
(display i) (newline)))