diff --git a/collects/tests/racket/place-master-gc.rkt b/collects/tests/racket/place-master-gc.rkt new file mode 100644 index 0000000000..974425f52a --- /dev/null +++ b/collects/tests/racket/place-master-gc.rkt @@ -0,0 +1,5 @@ +#lang racket/base + +;; Try to trigger master GCs: +(for ([i 100000]) + (make-shared-bytes 1024)) diff --git a/src/racket/src/env.c b/src/racket/src/env.c index dfe7a8ba6c..60840f1339 100644 --- a/src/racket/src/env.c +++ b/src/racket/src/env.c @@ -292,6 +292,7 @@ Scheme_Env *scheme_engine_instance_init() #if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES) { void *signal_handle; + REGISTER_SO(place_object); place_object = (Scheme_Place_Object*) scheme_make_place_object(); signal_handle = scheme_get_signal_handle(); GC_set_put_external_event_fd(signal_handle); diff --git a/src/racket/src/place.c b/src/racket/src/place.c index 96c10b2bf3..de3f85c5bf 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -2189,6 +2189,7 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { channel = place_data->channel; } place_obj = place_data->place_obj; + REGISTER_SO(place_object); place_object = place_obj; place_obj->refcount++;