aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2017-06-08 14:41:24 +0200
committerRickard Green <[email protected]>2017-06-08 14:41:24 +0200
commit94379b22116ec5d1efd56a0ace837054b3da6fa2 (patch)
tree505a13ccadad53d80ac8fba058be6f79916dcc71 /erts/emulator/beam/erl_gc.c
parentb85e77fb68add53eefa8aaa89a1e6f923fda9565 (diff)
parentb1f76e2f15c9d8c741ecb4bddc0b38740f3e7143 (diff)
downloadotp-94379b22116ec5d1efd56a0ace837054b3da6fa2.tar.gz
otp-94379b22116ec5d1efd56a0ace837054b3da6fa2.tar.bz2
otp-94379b22116ec5d1efd56a0ace837054b3da6fa2.zip
Merge branch 'maint-19' into maint
* maint-19: Updated OTP version Update release notes Update version numbers erts: Fix so that 81b628 (sigterm=kill) works Updated OTP version Prepare release Update testcase to check that purge handle hibernated process correct Do not GC hibernated process from other processes Fix check_process_code() on hibernated process Unconditionally clear IO buffers on send/shutdown errors
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r--erts/emulator/beam/erl_gc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index bb36be0848..d2560cfb49 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -764,7 +764,7 @@ do_major_collection:
esdp->gc_info.reclaimed += reclaimed_now;
}
- FLAGS(p) &= ~F_FORCE_GC;
+ FLAGS(p) &= ~(F_FORCE_GC|F_HIBERNATED);
p->live_hf_end = ERTS_INVALID_HFRAG_PTR;
ERTS_MSACC_POP_STATE_M();
@@ -929,6 +929,8 @@ erts_garbage_collect_hibernate(Process* p)
ErtsGcQuickSanityCheck(p);
+ p->flags |= F_HIBERNATED;
+
erts_smp_atomic32_read_band_nob(&p->state, ~ERTS_PSFLG_GC);
reds = gc_cost(actual_size, actual_size);
@@ -1158,6 +1160,7 @@ erts_garbage_collect_literals(Process* p, Eterm* literals,
/*
* Restore status.
*/
+ p->flags &= ~F_HIBERNATED;
erts_smp_atomic32_read_band_nob(&p->state, ~ERTS_PSFLG_GC);
}