Age | Commit message (Collapse) | Author |
|
|
|
Fix broken receive mark after an exception
OTP-14782
|
|
Conflicts:
lib/ssl/src/dtls_connection.erl
lib/ssl/src/ssl_connection.erl
lib/ssl/src/ssl_handshake.erl
lib/ssl/src/tls_connection.erl
|
|
* ingela/ssl/code-enhance:
ssl: Align code of TLS/DTLS handshake handling
ssl: Align code of TLS/DTLS record handling
ssl: Align code of main modules implementing the gen_statem behaviour
dtls: Add state spec
|
|
|
|
|
|
|
|
|
|
* maint:
edoc: The map type is denoted map()
|
|
* hasse/edoc/fix_map_type/OTP-14777:
edoc: The map type is denoted map()
|
|
Refactor supervisor, and store children in a map instead of a list
OTP-14586
|
|
Add 'used' option for binary_to_term/2
|
|
HiPE: Support for literal tag, tests and bugfixes
|
|
|
|
|
|
|
|
The map type was erroneously displayed as "#{}", the empty map type.
|
|
|
|
* maint:
dialyzer: Display error messages without call stack
|
|
* hasse/dialyzer/fix_crash_msg/OTP-14742:
dialyzer: Display error messages without call stack
|
|
When a ref is created before performing a receive that will only
receive message containing that ref, there is a compiler optimization
to avoid scanning messages that can't possible contain the newly
created ref.
Magnus Lång pointed out that the implementation of the optimization
is flawed. Exceptions or recursive calls could cause the receive
operation to scan the receive queue from a position beyond the expected
message (that is, the message containing the ref would never be
matched out). See the receive_opt_exception/1 and receive_opt_recursion/1
test cases in receive_SUITE.
It turns out that we can simplify the implementation of the
optimization while fixing the bug (suggested by Magnus Lång). We
actually don't need the c_p->msg.mark field. It is enough to have
c_p->msg.saved_pos; if it is non-zero, it is a valid position in the
message qeueue. All we need to do is to ensure that we clear
c_p->msg.saved_pos when a receive is exited normally or abnormally.
We can clear c_p->msg.saved_pos in JOIN_MESSAGE(), since it is called
both when leaving a receive because a message matched and because there
was a timeout and the 'after' clause was executed. In addition, we
need to clear c_p->msg.saved_pos when an exception is caught.
https://bugs.erlang.org/browse/ERL-511
|
|
Add internal documentation for the beam_makeops script
OTP-14626
|
|
|
|
* maint:
Recognize 'deterministic' when given in a -compile() attribute
Conflicts:
lib/compiler/src/beam_asm.erl
|
|
* bjorn/compiler/fix-deterministic-attribute/ERL-498:
Recognize 'deterministic' when given in a -compile() attribute
OTP-14773
|
|
|
|
* ingela/ssl/doc-link-fix:
ssl: Fix broken link in doc
|
|
|
|
The 's' operand overloads the tags for pids and ports to represent
X and Y registers, respectively. At load time, refuse to load the
module if the "literal" term is not a pid or port, as it would be
interpreted as a register.
This does not happen with normally compiled code, but it can happen
if the compiler (or beam_asm) is abused like in the following example:
make_bad() ->
Pid = self(),
Forms = [{attribute, 0, module, bad_s_operand},
{attribute, 0, export, [{test, 0}]},
{function, 0, test, 0,
[{clause, 0, [], [],
[{call,0,{atom,0,tuple_size},[{integer, 0, Pid}]}]}]}],
{ok, Module, Bin} = compile:forms(Forms, [no_copt,no_postopt,report_errors]),
code:load_binary(Module, "bad_s_operand.erl", Bin).
With this commit applied, the following message will be printed
when make_bad() is run:
=ERROR REPORT==== 10-Nov-2017::14:47:59 ===
Loading of bad_s_operand.erl failed: badfile
=ERROR REPORT==== 10-Nov-2017::14:47:59 ===
beam/beam_load.c(2396): Error loading function bad_s_operand:test/0: op bif1_body: bsd:
the term '<0.60.0>' would be confused with a register
|
|
|
|
As of commit 12b379 many of the reasons displayed after
"Analysis failed with error:"
erroneously include a call stack. The bug is now corrected.
The bug was pointed out in
http://erlang.org/pipermail/erlang-questions/2017-October/093838.html.
|
|
* maint:
Updated OTP version
Update release notes
Update version numbers
inets: Prepare for release
inets: Add missing guard
Avoid WindowBits=8 as per the manual
Fix deflateParams on zlib 1.2.11
Ignore empty binaries in enif_inspect_iovec
Emasculate writable binaries on entering an iovec
Only apply EOS behaviors if there's pending data
Conflicts:
OTP_VERSION
|
|
* maint-20:
Updated OTP version
Update release notes
Update version numbers
inets: Prepare for release
inets: Add missing guard
Avoid WindowBits=8 as per the manual
Fix deflateParams on zlib 1.2.11
Ignore empty binaries in enif_inspect_iovec
Emasculate writable binaries on entering an iovec
Only apply EOS behaviors if there's pending data
Stop assuming that all schedulers are managed when updating msacc
|
|
* bjorn/cuddle-with-tests:
Skip compile_SUITE:pre_load_check/1 when code is native-compiled
|
|
|
|
* ingela/snmp/cuddle:
snmp: Correct netsnmp arglist and check for usable netsnmp
|
|
|
|
* ingela/ssl/engine-API/OTP-14448:
ssl: Add private key configuration for crypto engine
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Engine
Only RSA and DSA so far.
|
|
|
|
|
|
|