From e2e469240f81465ee7105fd6a8dea5d47945263a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 20 Jan 2018 08:27:34 -0700 Subject: [PATCH] repair some tests A recent test for `_bytes` had a memory bug. An old test for weak hash tables had a race between GC and hash-table lookup. --- pkgs/racket-test-core/tests/racket/chaperone.rktl | 5 ++++- pkgs/racket-test-core/tests/racket/foreign-test.rktl | 8 ++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/chaperone.rktl b/pkgs/racket-test-core/tests/racket/chaperone.rktl index 77b46bbe58..9daffd02ac 100644 --- a/pkgs/racket-test-core/tests/racket/chaperone.rktl +++ b/pkgs/racket-test-core/tests/racket/chaperone.rktl @@ -2270,15 +2270,18 @@ (for/list ([j 4]) (thread (lambda () + (define save-keys '()) (for ([i 1000]) (define v (random 100000)) (define k (a v)) + (set! save-keys (cons k save-keys)) (hash-set! cht k v) ;; Make sure the addition didn't get lost, which ;; can happen when a lock is missing: (unless (equal? (hash-ref cht k #f) v) (error "oops"))) - (semaphore-post done))))) + (semaphore-post done) + save-keys)))) (for-each sync ths) diff --git a/pkgs/racket-test-core/tests/racket/foreign-test.rktl b/pkgs/racket-test-core/tests/racket/foreign-test.rktl index e9aa8db307..cc6b6f1fdf 100644 --- a/pkgs/racket-test-core/tests/racket/foreign-test.rktl +++ b/pkgs/racket-test-core/tests/racket/foreign-test.rktl @@ -533,10 +533,14 @@ (test 107 ptr-ref v _intptr)) ;; Test _bytes and _bytes/nul-terminated +(let ([p (malloc 8)]) + (memcpy p #"hi, all\0" 8) + (test #"hi, all" cast p _pointer _bytes) + (test #"hi, all" cast p _pointer _bytes/nul-terminated)) (let ([p (malloc 8)]) (memcpy p #"hi, all!" 8) - (test #"hi, all!" cast p _pointer _bytes) - (test #"hi, all!" cast p _pointer _bytes/nul-terminated)) + (test #"hi, all!" cast p _pointer (_bytes o 8)) + (test #"hi, all!" cast p _pointer (_bytes/nul-terminated o 8))) (let* ([strdup (get-ffi-obj 'strdup #f (_fun _bytes/nul-terminated -> _pointer))] [p (strdup #"howdy...")]) (test #"howdy..." cast p _pointer _bytes)