diff options
author | Björn Gustavsson <[email protected]> | 2018-10-18 15:18:58 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2018-10-19 05:21:59 +0200 |
commit | bc541da07768ab0e11dca183ba235422ae0df593 (patch) | |
tree | cb3790955b0c15eeb43fc4bfd1bc1b99457e43c6 /erts/emulator/beam/erl_db.h | |
parent | 04dde143c505da42ca620189cfa1d3400610ebe1 (diff) | |
download | otp-bc541da07768ab0e11dca183ba235422ae0df593.tar.gz otp-bc541da07768ab0e11dca183ba235422ae0df593.tar.bz2 otp-bc541da07768ab0e11dca183ba235422ae0df593.zip |
Honor the max heap size when copying literals after purging
When a module has been purged from memory, any literals belonging
to that module will be copied to all processes that hold references
to them.
The max heap size limit would be ignored in the garbage collection
initiated when copying literals to a process. If the max heap size
was exceeded, the process would typically be terminated in the
following garbage collection.
Since the process would be killed anyway later, kill the process
before copying a literal that would make it exceed its max heap
size.
While at it, also fix a potential bug in `erlang:garbage_collect/0`.
If it was found that the max heap sized had been exceeded while
executing `erlang:garbage_collect/0`, the process would enter a
kind of zombie state instead of being properly terminated.
Diffstat (limited to 'erts/emulator/beam/erl_db.h')
0 files changed, 0 insertions, 0 deletions