aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2018-01-11Merge branch 'maint'Ingela Anderton Andin
2018-01-11Merge branch 'ingela/ssl/timeout-cuddle' into maintIngela Anderton Andin
* ingela/ssl/timeout-cuddle: ssl: Tune timeouts
2018-01-11ssl: Tune timeoutsIngela Anderton Andin
2018-01-11Merge pull request #1678 from ↵John Högberg
jhogberg/john/compiler/reintroduce-tuple-arity-optimizations/OTP-14857 Reintroduce the tuple arity optimizations removed in PR #1673
2018-01-10beam_block: Improve optimization of allocate_zero instructionsBjörn Gustavsson
Turn more allocate_zero instructions into allocate instructions.
2018-01-10beam_type: Enhance coalescing of allocation instructionsBjörn Gustavsson
An 'allocate' or 'allocate_zero' instruction should not be shortly followed by a 'test_heap' instruction. For example, we don't want this type of code: {allocate_zero,3,4}. {line,...}. {test_heap,7,4}. {bif,element,{f,0},...,...}. While the code is safe because 'allocate_zero' has initialized the stack frame, it is wasteful. Also note that the code would become unsafe if the 'allocate_zero' instruction were to be replaced with an 'allocate' instruction. What we want to see is this: {allocate_heap_zero,3,7,4}. {line,...}. {bif,element,{f,0},...,...}.
2018-01-10Correct beam_utils:combine_heap_needs/2Björn Gustavsson
In 21dd6e55877832, beam_utils:combine_heap_needs/2 stopped wrapping an allocation list in an {alloc,...} tuple. That was not noticed because the faulty heap need created in beam_block was discarded by beam_type.
2018-01-10Correct beam_utils:is_killed/3Björn Gustavsson
beam_utils:is_killed/3 could incorrectly indicate that a register was killed, when in fact it was referenced by an instruction that did a GC.
2018-01-10Merge branch 'maint'Björn Gustavsson
* maint: beam_validator: Strengthen validation of GC instructions
2018-01-10Merge pull request #1674 from bjorng/bjorn/compiler/beam_validatorBjörn Gustavsson
beam_validator: Strengthen validation of GC instructions OTP-14863
2018-01-10Merge branch 'hasse/stdlib/erl_eval_stacktrace/OTP-14826/PR-1540'Hans Bolinder
* hasse/stdlib/erl_eval_stacktrace/OTP-14826/PR-1540: syntax_tools: Correct handling of stacktrace variable stdlib: Add check of stacktrace variable to erl_eval stdlib: Improve erl_eval's stacktraces
2018-01-10Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Add a test of erl_tar:table/1,2 Fix false Dialyzer warnings for erl_tar:table/1
2018-01-10Merge branch ↵Hans Bolinder
'hasse/stdlib/incomplete_erl_tar_function_spec/OTP-14860/PR-1670' into maint * hasse/stdlib/incomplete_erl_tar_function_spec/OTP-14860/PR-1670: dialyzer: Add a test of erl_tar:table/1,2 Fix false Dialyzer warnings for erl_tar:table/1
2018-01-09Merge branch 'maint'Hans Nilsson
* maint: ssh: A compatibility testing suite using dockers This suite tests compatibility with different combinations of OpenSSH and OpenSSL. The peer SSH is running in a docker container.
2018-01-09Merge branch 'hans/ssh/docker_compat_tests/OTP-14194' into maintHans Nilsson
* hans/ssh/docker_compat_tests/OTP-14194: ssh: A compatibility testing suite using dockers This suite tests compatibility with different combinations of OpenSSH and OpenSSL. The peer SSH is running in a docker container.
2018-01-09syntax_tools: Correct handling of stacktrace variableHans Bolinder
A quick fix to make the test suite work with the updated erl_eval. [I think that if "A:B:_" is allowed, it should have a representation in the abstract format, but that's another story. The pretty printer should not modify the source code, just print it nicely, IMHO. (But removing parentheses is OK)]
2018-01-09stdlib: Add check of stacktrace variable to erl_evalHans Bolinder
Some of the functions of the erl_eval module do not call the Erlang code linter, so they need to explicitly check that the newly introduced stacktrace variable is not bound.
2018-01-09stdlib: Improve erl_eval's stacktracesHans Bolinder
The call "erlang:get_stacktrace()" is not handled explicitly. If there are issues, they can probably be ignored since erlang:get_stacktrace/1 will be deprecated and removed.
2018-01-09dialyzer: Add a test of erl_tar:table/1,2Hans Bolinder
2018-01-09Fix false Dialyzer warnings for erl_tar:table/1Guilherme Andrade
'tar_entry()' values are only returned if we specify the 'verbose' option when calling table/2, which table/1 doesn't do. Now, it appears that Dialyzer as of OTP 20 is clever enough to realize that the return type of table/1 must intersect with the return type of table/2, and so it ignores the fact that table/1 says it returns strings, and therefore its callers are expected to be dealing with 'tar_entry()' tuples, and never with strings. This is obviously a mismatch between what the code does and what the spec says is does, leading to false Dialyzer warnings on code that uses table/1 (and, presumably, also table/2 when called without the 'verbose' option.)
2018-01-09Merge branch 'maint'Siri Hansen
2018-01-09Merge branch 'siri/etop/include/ERL-534/OTP-14842' into maintSiri Hansen
* siri/etop/include/ERL-534/OTP-14842: [observer] Use include_lib instead of include with relative path Add runtime_tools/include to tertiary bootstrap
2018-01-09Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Correct handling of erlang:abs/1
2018-01-09Merge branch 'hasse/dialyzer/fix_abs/OTP-14858/ERL-551' into maintHans Bolinder
* hasse/dialyzer/fix_abs/OTP-14858/ERL-551: dialyzer: Correct handling of erlang:abs/1
2018-01-09Merge branch 'maint'Siri Hansen
2018-01-09Merge branch 'siri/cdv/crash-when-truncated-in-mod-attr/ERL-537/OTP-14846' ↵Siri Hansen
into maint * siri/cdv/crash-when-truncated-in-mod-attr/ERL-537/OTP-14846: [cdv] Don't crash when dump is truncated in module attributes
2018-01-09Merge branch 'maint'Ingela Anderton Andin
2018-01-09Merge branch 'ingela/dtls/test-cuddle' into maintIngela Anderton Andin
* ingela/dtls/test-cuddle: dtls: Filter out rc4 for DTLS psk suites dtls: We do not need to wait for DTLS over UDP server
2018-01-08Reintroduce the arity optimization removed in OTP-14855John Högberg
We can safely tell when a test_arity or is_record instruction is superflous by keeping track of whether the size is exactly known or not.
2018-01-08dialyzer: Correct handling of erlang:abs/1Hans Bolinder
See also https://bugs.erlang.org/browse/ERL-551.
2018-01-08ssh: A compatibility testing suite using dockersHans Nilsson
This suite tests compatibility with different combinations of OpenSSH and OpenSSL. The peer SSH is running in a docker container.
2018-01-08Merge branch 'john/erts/putenv-thread-safety/OTP-14666'John Högberg
2018-01-08Merge branch 'maint'John Högberg
2018-01-08beam_validator: Strengthen validation of GC instructionsBjörn Gustavsson
beam_validator did not verify that the Y registers were initialized before executing the following instructions that could cause a GC: bs_append/8 bs_init2/6 bs_init_bits/6 gc_bif1/5 gc_bif2/6 gc_bif3/7 test_heap/2 That means that, for example, an incorrect optimization that replaced an 'allocate_zero' instruction with an 'allocate' instruction when it was not safe, would not be rejected by beam_validtor, but would instead cause a crash or other undefined behavior at runtime. Also fix a minor bug in beam_type exposed by the stronger checking. When compiling from .S files, beam_type did not handle the init/1 instruction and could produce unsafe code.
2018-01-08Merge pull request #1662 from bjorng/bjorn/compiler/beam_utilsBjörn Gustavsson
Reduce register shuffling in receive clauses
2018-01-07dtls: Filter out rc4 for DTLS psk suitesIngela Anderton Andin
Stream ciphers are not valid fro DTLS
2018-01-06dtls: We do not need to wait for DTLS over UDP serverIngela Anderton Andin
Client will retransmit until server becomes responsive
2018-01-04Remove unsafe is_record/test_arity optimizationsJohn Högberg
The type optimizations for is_record and test_arity checked whether the arity was equal to the size stored in the type information, which is incorrect since said size is the *minimum* size of the tuple (as determined by previous instructions) and not its exact size. A future patch to the 'master' branch will restore these optimizations in a safe manner.
2018-01-04Merge branch 'maint'Ingela Anderton Andin
Conflicts: lib/ssl/src/tls_connection.erl
2018-01-04Merge branch 'ingela/ssl/error-handling-race/ERL-539/OTP-14852' into maintIngela Anderton Andin
* ingela/ssl/error-handling-race/ERL-539/OTP-14852: ssl: Prevent error handling race condition
2018-01-04ssl: Prevent error handling race conditionIngela Anderton Andin
ERL-539
2018-01-03Merge branch 'maint'Sverker Eriksson
2018-01-03Merge PR-1664 from sverker/sverker/hipe-bs_put_utf8-gc-bug OTP-14850Sverker Eriksson
Fix GC bug for HiPE primop bs_put_utf8
2018-01-03Fix bug in hipe primop bs_put_utf8Sverker Eriksson
by preventing it from doing GC, which generated code relies on.
2018-01-03[cdv] Don't crash when dump is truncated in module attributesSiri Hansen
This bug was introduced by commit 3b964e8dbaa0cd73ca7a983b3ce948e0dbd2c35c
2018-01-03Disallow NULs in filename-encoded stringsJohn Högberg
Previously we accepted trailing NULs, which was backwards compatible as such usage never resulted in misbehavior in the first place. The downside is that it prevented erts_native_filename_need from returning an accurate number of *actual characters*, needlessly complicating encoding-agnostic code like erts_osenv.
2018-01-03Replace the libc environment with a thread-safe emulationJohn Högberg
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.
2017-12-22Merge branch 'maint'Hans Nilsson
* maint: ssh: ssh_dbg updates ssh: Better reports in some test case failures ssh: Tests - timeout catches external ssh that does not disconnect
2017-12-22Merge branch 'hans/ssh/cuddle_ssh_test' into maintHans Nilsson
* hans/ssh/cuddle_ssh_test: ssh: Better reports in some test case failures ssh: Tests - timeout catches external ssh that does not disconnect
2017-12-22Merge branch 'hans/ssh/cuddle_ssh_dbg' into maintHans Nilsson
* hans/ssh/cuddle_ssh_dbg: ssh: ssh_dbg updates