diff options
author | Rickard Green <[email protected]> | 2016-08-02 15:58:06 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-08-29 16:26:24 +0200 |
commit | 9d0638216d35ca0f21c1eea20f8daa3992ac4f71 (patch) | |
tree | b270d8f0226e88c376826584c4ea88ae377dff6f /erts/emulator/beam/atom.names | |
parent | 2fe03e832adb11c50bcfc62679cf17779b284124 (diff) | |
download | otp-9d0638216d35ca0f21c1eea20f8daa3992ac4f71.tar.gz otp-9d0638216d35ca0f21c1eea20f8daa3992ac4f71.tar.bz2 otp-9d0638216d35ca0f21c1eea20f8daa3992ac4f71.zip |
Fix purge of code
Ensure that we cannot get any dangling pointers into code that
has been purged. This is done by a two phase purge. At first
phase all fun entries pointing into the code to purge are marked
for purge. All processes trying to call these funs will be suspended
and by this we avoid getting new direct references into the code.
When all processes has been checked, these processes are resumed.
The new purge strategy now also completely ignore the existence of
indirect references to the code (funs). If such exist, they will
cause bad fun exceptions to the caller, but will not prevent a
soft purge or cause a kill of a process having such live references
during a hard purge. This since it is impossible to give any
guarantees that no processes in the system have such indirect
references. Even when the system is completely clean from such
references, new ones can appear via distribution and/or disk.
Diffstat (limited to 'erts/emulator/beam/atom.names')
-rw-r--r-- | erts/emulator/beam/atom.names | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names index dd37c682b1..ace3dc5230 100644 --- a/erts/emulator/beam/atom.names +++ b/erts/emulator/beam/atom.names @@ -65,6 +65,7 @@ atom undefined_lambda atom DOWN='DOWN' atom UP='UP' atom EXIT='EXIT' +atom abort atom aborted atom abs_path atom absoluteURI @@ -165,6 +166,7 @@ atom commandv atom compact atom compat_rel atom compile +atom complete atom compressed atom config_h atom convert_time_unit @@ -236,6 +238,7 @@ atom erlang atom ERROR='ERROR' atom error_handler atom error_logger +atom erts_code_purger atom erts_internal atom ets atom ETS_TRANSFER='ETS-TRANSFER' @@ -487,6 +490,7 @@ atom pause atom pending atom pending_driver atom pending_process +atom pending_purge_lambda atom pending_reload atom permanent atom pid @@ -496,6 +500,7 @@ atom port_count atom port_limit atom port_op atom positive +atom prepare atom print atom priority atom private |