Age | Commit message (Collapse) | Author |
|
|
|
|
|
* hasse/stdlib/fix_io_lib_pretty/OTP-15159:
stdlib: Fix a 'chars_limit' bug
|
|
maint-21
* bjorn/compiler/fix-beam_jump-crash/ERL-660/OTP-15166:
Eliminate a crash in the beam_jump pass
|
|
* bjorn/compiler/fix-map_get/OTP-15157:
Fix internal compiler error for map_get/2
|
|
maint-21
* bjorn/compiler/fix-skipped-matching/ERL-655/OTP-15156:
beam_type: Fix unsafe optimization
|
|
https://bugs.erlang.org/browse/ERL-660
|
|
|
|
Code such as that the following:
Val = map_get(a, Map),
Map#{a:=z} %Could be any map update
would incorrectly cause an internal consistency check failure:
Internal consistency check failed - please report this bug.
Instruction: {put_map_exact,{f,0},{x,0},{x,0},1,{list,[{atom,a},{atom,z}]}}
Error: {bad_type,{needed,map},{actual,term}}:
Update beam_validator so that it understands that the second
argument for map_get/2 is a map.
|
|
beam_type assumed that the operand for the bs_context_to_binary
instruction must be a binary. That is not correct;
bs_context_to_binary accepts anything. Based on the incorrect
assumption, beam_type would remove other test instructions.
The bug was introduced in eee8655788d2, which was supposed
to be just a refactoring commit.
https://bugs.erlang.org/browse/ERL-655
|
|
Thoose were added by 598629aeba9de98e8cdf5637043eb34e5d407751 but are not universaly supported.
|
|
|
|
The compiler would crash when compiling code such as:
serialize(#{tag := value, id := Id, domain := Domain}) ->
[case Id of
nil ->
error(id({required, id}));
_ ->
<<10, 1:16/signed, Id:16/signed>>
end,
case Domain of
nil ->
error(id({required, domain}));
_ ->
<<8, 2:16/signed, Domain:32/signed>>
end].
The crash would look like this:
Function: serialize/1
t.erl: internal error in block2;
crash reason: {badmatch,false}
in function beam_utils:live_opt/4 (beam_utils.erl, line 861)
in call from beam_utils:live_opt/1 (beam_utils.erl, line 285)
in call from beam_block:function/2 (beam_block.erl, line 47)
in call from beam_block:'-module/2-lc$^0/1-0-'/2 (beam_block.erl, line 33)
in call from beam_block:'-module/2-lc$^0/1-0-'/2 (beam_block.erl, line 33)
in call from beam_block:module/2 (beam_block.erl, line 33)
in call from compile:block2/2 (compile.erl, line 1358)
in call from compile:'-internal_comp/5-anonymous-1-'/3 (compile.erl, line 349)
The reason for the crash is an assertion failure caused by a previous
unsafe optimization. Here is the code before the unsafe optimization:
.
.
.
{bs_init2,{f,0},7,0,0,{field_flags,[]},{x,1}}.
{bs_put_string,3,{string,[8,0,2]}}.
{bs_put_integer,{f,0},{integer,32},1,{field_flags,[signed,big]},{y,1}}.
{move,{x,1},{x,0}}.
{test_heap,4,1}.
.
.
.
beam_block:move_allocate/1 moved up the test_heap/2 instruction past the
move/2 instruction, adjusting the number of live registers at the same
time:
.
.
.
{bs_init2,{f,0},7,0,0,{field_flags,[]},{x,1}}.
%% Only x1 is live now.
{bs_put_string,3,{string,[8,0,2]}}.
{bs_put_integer,{f,0},{integer,32},1,{field_flags,[signed,big]},{y,1}}.
{test_heap,4,2}. %Unsafe. x0 is dead.
{move,{x,1},{x,0}}.
.
.
.
This optimization is unsafe because the bs_init2 instruction killed
x0.
The bug is in beam_utils:anno_defs/1, which adds annotations indicating
the registers that are defined at the beginning of each block. The
annotation before the move/2 instruction incorrectly indicated that
x0 was live.
https://bugs.erlang.org/browse/ERL-650
https://github.com/elixir-lang/elixir/issues/7782
|
|
|
|
* origin/henrik/Update-copyright:
Update copyright year
|
|
|
|
* ingela/ssl/doc-fix-21:
ssl: Document enhancements
|
|
|
|
* lukas/otp_mibs/deprecate/OTP-15141:
Update primary bootstrap
Deprecate otp_mibs
|
|
* siri/logger-fix:
[logger] Update documentation
[logger] Adjust priority settings in test
[logger] Unregister handler names before terminating
[logger] Stress overload_kill tests in disk_log handler
|
|
|
|
Now only setting high priority on every second burst sending process,
to allow for handler process to be scheduled in every now and then.
|
|
|
|
|
|
* peppe/common_test/no_export_all_warning/OTP-14810:
No export_all warning when compiling test suites
OTP-14810
|
|
* peppe/kernel/logger_updates:
[logger] Correct documentation
[logger] Update handler documentation
[logger] Fix test suite compilation warnings
[logger] Fix failing tests
[logger] Change overload_kill_restart_after value to infinity
[logger] Change name of function sync/1 to filesync/1
[logger] Reset logger config after tests
[logger] Don't delete log file of failing test cases
[logger] Set up priority for processes generatig test bursts
[logger] Stress overload_kill tests a bit more
[logger] Remove some compiler warnings in test suites
[logger] Sort keys when testing formatter template
[logger] Skip test involving file access rights on windows
[logger] Skip some overload protection tests when using dirty schedulers
|
|
* hans/crypto/EVP_DH_key/OTP-14864:
crypto: Remove EVP_PKEY from dh_compute_key_nif
crypto: Try fix valgrind errors
|
|
Included config files relative to sys.config directory
OTP-15137
|
|
Change the way included config files are searched in sys.config.
Search first relative to sys.config directory, then relative
to current working directory, for backward compatibility.
This permit same result when using a sys.config file in a release
or starting manually a node with -config.
Credit to Siri Hansen for test case.
|
|
* ingela/ssl/21-enhanchment:
ssl: Add handle_continue/2 and document enhancements
|
|
OTP-14810
|
|
|
|
|
|
|
|
According to valgrind, there is a memory leak. When fixing that there is a core-dump instead.
Since generate_key is the part that is important for the quality of the key we keep the old
compute_key part to avoid memory leakage.
|
|
Re-structure dh_compute_key_nif and dh_generate_key_nif to see variable scoping and alloc/dealloc pairs better
|
|
* deprecation of ssl:ssl_accept/[1,2,3]
* deprecation of ssl:cipher_suites/[0,1]
* More consistent naming
|
|
Fix a crash in HiPE's lazy code motion pass
|
|
|
|
|
|
* maint:
Updated OTP version
Prepare release
Add test case
Parse #mc_new_type{}s before definitions_loop/2
erts: Fix race between ets table deletion and auto-unfix
|
|
* maint-20:
Updated OTP version
Prepare release
Add test case
Parse #mc_new_type{}s before definitions_loop/2
erts: Fix race between ets table deletion and auto-unfix
|
|
* ingela/ssl/test-ecdh-check:
ssl: Update interop conditions
|
|
|
|
|
|
|
|
* hans/ssh/eddh_experimental/OTP-15097:
crypto: Remove comments
|
|
|
|
|
|
* raimo/stdlib/gen_statem-dev/OTP-14015:
Show state changes in sys:trace
|