diff options
author | John Högberg <[email protected]> | 2017-11-22 13:19:57 +0100 |
---|---|---|
committer | John Högberg <[email protected]> | 2018-01-03 08:14:28 +0100 |
commit | c2d70945dce9cb09d5d7120d6e9ddf7faac8d230 (patch) | |
tree | 3cfbaca9af7b6a32871e669a39027ce987c846da /erts/emulator/test/driver_SUITE_data/Makefile.src | |
parent | be9f93b14e0fb9ff09db36abde62ae8099bf5bd0 (diff) | |
download | otp-c2d70945dce9cb09d5d7120d6e9ddf7faac8d230.tar.gz otp-c2d70945dce9cb09d5d7120d6e9ddf7faac8d230.tar.bz2 otp-c2d70945dce9cb09d5d7120d6e9ddf7faac8d230.zip |
Replace the libc environment with a thread-safe emulation
putenv(3) and friends aren't thread-safe regardless of how you slice
it; a global lock around all environment operations (like before)
keeps things safe as far as our own operations go, but we have
absolutely no control over what libc or a library dragged in by a
driver/NIF does -- they're free to call getenv(3) or putenv(3)
without honoring our lock.
This commit solves this by setting up an "emulated" environment which
can't be touched without going through our interfaces. Third-party
libraries can still shoot themselves in the foot but benign uses of
os:putenv/2 will no longer risk crashing the emulator.
Diffstat (limited to 'erts/emulator/test/driver_SUITE_data/Makefile.src')
-rw-r--r-- | erts/emulator/test/driver_SUITE_data/Makefile.src | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/erts/emulator/test/driver_SUITE_data/Makefile.src b/erts/emulator/test/driver_SUITE_data/Makefile.src index 1fedd72200..bcabaa689d 100644 --- a/erts/emulator/test/driver_SUITE_data/Makefile.src +++ b/erts/emulator/test/driver_SUITE_data/Makefile.src @@ -16,7 +16,8 @@ MISC_DRVS = outputv_drv@dll@ \ thr_free_drv@dll@ \ async_blast_drv@dll@ \ thr_msg_blast_drv@dll@ \ - consume_timeslice_drv@dll@ + consume_timeslice_drv@dll@ \ + env_drv@dll@ SYS_INFO_DRVS = sys_info_base_drv@dll@ \ sys_info_prev_drv@dll@ \ |