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 /bootstrap/lib | |
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 'bootstrap/lib')
-rw-r--r-- | bootstrap/lib/kernel/ebin/os.beam | bin | 4476 -> 4876 bytes |
1 files changed, 0 insertions, 0 deletions
diff --git a/bootstrap/lib/kernel/ebin/os.beam b/bootstrap/lib/kernel/ebin/os.beam Binary files differindex 98c44e8fba..61ed6a107a 100644 --- a/bootstrap/lib/kernel/ebin/os.beam +++ b/bootstrap/lib/kernel/ebin/os.beam |