Age | Commit message (Collapse) | Author |
|
Optimize allocation of stack frames
|
|
When a process has many links and/or monitors, it could earlier take
very long time to display the process information window. This is now
improved by only showing a few links and monitors, and then an link
named "more..." to expand the rest.
Reading of the "Link list" from a crashdump is also improved.
|
|
m_strRec.str7 is long[3][2], not long[2][3]
which seem to trip up -O2 loop unrolling.
|
|
Turn more allocate_zero instructions into allocate instructions.
|
|
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},...,...}.
|
|
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.
|
|
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.
|
|
* maint:
beam_validator: Strengthen validation of GC instructions
|
|
beam_validator: Strengthen validation of GC instructions
OTP-14863
|
|
* 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
|
|
* maint:
dialyzer: Add a test of erl_tar:table/1,2
Fix false Dialyzer warnings for erl_tar:table/1
|
|
'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
|
|
* 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.
|
|
* 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.
|
|
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)]
|
|
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.
|
|
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.
|
|
|
|
|
|
'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.)
|
|
|
|
* siri/etop/include/ERL-534/OTP-14842:
[observer] Use include_lib instead of include with relative path
Add runtime_tools/include to tertiary bootstrap
|
|
* maint:
dialyzer: Correct handling of erlang:abs/1
|
|
* hasse/dialyzer/fix_abs/OTP-14858/ERL-551:
dialyzer: Correct handling of erlang:abs/1
|
|
|
|
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
|
|
|
|
* ingela/dtls/test-cuddle:
dtls: Filter out rc4 for DTLS psk suites
dtls: We do not need to wait for DTLS over UDP server
|
|
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.
|
|
See also https://bugs.erlang.org/browse/ERL-551.
|
|
The reduction cost of sending messages is now constant and will no
longer scale according to the length of the receiving process'
message queue.
|
|
This suite tests compatibility with different combinations of OpenSSH and OpenSSL. The peer SSH is running in a docker container.
|
|
|
|
|
|
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.
|
|
Reduce register shuffling in receive clauses
|
|
Stream ciphers are not valid fro DTLS
|
|
Client will retransmit until server becomes responsive
|
|
|
|
The Design Principles states that an application can have Erlang
source files one level below the "src" directory, and now
filelib:find_source() by default searches one level below "src".
The same applies to "esrc". That directory is only mentioned in
filename(3).
|
|
|
|
|
|
into utility functions.
|
|
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.
|
|
Conflicts:
lib/ssl/src/tls_connection.erl
|
|
* ingela/ssl/error-handling-race/ERL-539/OTP-14852:
ssl: Prevent error handling race condition
|
|
ERL-539
|
|
|
|
Fix GC bug for HiPE primop bs_put_utf8
|
|
in order to detect incompatible changes in primop interface
(which we just did for bs_put_utf8) and refuse hipe loading.
|