diff options
author | Rickard Green <[email protected]> | 2018-04-16 12:43:38 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2018-04-16 12:43:38 +0200 |
commit | 40dc6b9fed7d51a204e0d69b7bba7e8cb6496ae5 (patch) | |
tree | 8763ad93736eb717e8a267e5b436fe273474336d /erts/emulator/beam | |
parent | 33f89162d9d0dc4ff2b4ccf9319fbf04889879f7 (diff) | |
parent | 283a7d098538be2097a5d4d6e75422ca14e7e4e3 (diff) | |
download | otp-40dc6b9fed7d51a204e0d69b7bba7e8cb6496ae5.tar.gz otp-40dc6b9fed7d51a204e0d69b7bba7e8cb6496ae5.tar.bz2 otp-40dc6b9fed7d51a204e0d69b7bba7e8cb6496ae5.zip |
Merge branch 'rickard/process_info/OTP-14966'
* rickard/process_info/OTP-14966:
Fix deadlock in HiPE gc after receive
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/erl_gc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c index ea87cd7f50..b498fd9cf9 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -438,6 +438,13 @@ erts_gc_after_bif_call_lhf(Process* p, ErlHeapFragment *live_hf_end, return result; } +#ifdef HIPE + if (p->hipe_smp.have_receive_locks) { + /* Do not want to GC with message queue locked... */ + return result; + } +#endif + if (!p->mbuf) { /* Must have GC:d in BIF call... invalidate live_hf_end */ live_hf_end = ERTS_INVALID_HFRAG_PTR; |