A simple experiment with parallelism and syntax exposed several Racket bugs. All of these programs start with this header:
#lang racket (require racket/future) (current-directory "collects/racket/private") (current-namespace (make-base-namespace)) (define (big) (expand (read-syntax #f (open-input-file "for.rkt")))) (define (go1) (let loop ([s (big)]) (syntax-case s () [(a . b) (loop #'a) (loop #'b)] [_ (display 1)]))) Then, if we do: (define (gon) (for ([i (in-range 1000)]) (go1))) (define l (list (future gon) (future gon))) (map touch l) we get this error: make-vector: expected argument of type <non-negative exact integer>; given 831868466 If we do: (define l (list (future go1) (future go1))) (map touch l) Then we sometime get segfaults, and sometimes run to completion. If we just do: (go1) Then it runs correctly in Racket, but consistently segfaults in DrRacket, like this: Seg fault (internal error during gc) at 0x8147c64 SIGSEGV SEGV_ACCERR SI_CODE 2 fault on 0x8147c64 This is all with the latest Git, *with --enable-places* (although places aren't used). -- sam th sa...@ccs.neu.edu _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev