fix race condition use of scheme_master_proc_thread in master_scheme_place
svn: r12817
This commit is contained in:
parent
e8aae67e82
commit
c70abd63e5
|
@ -246,7 +246,10 @@ static void *place_start_proc(void *data_arg) {
|
||||||
#ifdef MZ_PRECISE_GC
|
#ifdef MZ_PRECISE_GC
|
||||||
|
|
||||||
static void *master_scheme_place(void *data) {
|
static void *master_scheme_place(void *data) {
|
||||||
|
mz_proc_thread *myself;
|
||||||
|
myself = proc_thread_self;
|
||||||
GC_switch_in_master_gc();
|
GC_switch_in_master_gc();
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
int recv_type;
|
int recv_type;
|
||||||
void *recv_payload;
|
void *recv_payload;
|
||||||
|
@ -254,7 +257,7 @@ static void *master_scheme_place(void *data) {
|
||||||
Scheme_Object *o;
|
Scheme_Object *o;
|
||||||
Scheme_Object *copied_o;
|
Scheme_Object *copied_o;
|
||||||
|
|
||||||
pt_mbox_recv(scheme_master_proc_thread->mbox, &recv_type, &recv_payload, &origin);
|
pt_mbox_recv(myself->mbox, &recv_type, &recv_payload, &origin);
|
||||||
switch(recv_type) {
|
switch(recv_type) {
|
||||||
case 1:
|
case 1:
|
||||||
copied_o = scheme_places_deep_copy((Scheme_Object *)recv_payload);
|
copied_o = scheme_places_deep_copy((Scheme_Object *)recv_payload);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user