Age | Commit message (Collapse) | Author |
|
* maint:
stdlib: Add a few uses of erl_anno
|
|
* hasse/stdlib/fix_erl_anno_usage:
stdlib: Add a few uses of erl_anno
|
|
Fold is_function/1,2 during compilation
|
|
Optimise beam_jump
|
|
uri_string: support key without value in query string
|
|
|
|
|
|
* maint:
Updated OTP version
Prepare release
Fix unsafe optimization when running beam_block the second time
Fix environment case sensitivity issues on Windows
|
|
* maint-21:
Updated OTP version
Prepare release
Fix unsafe optimization when running beam_block the second time
Fix environment case sensitivity issues on Windows
|
|
* maint:
Updated OTP version
Prepare release
ssh: Report the signal name if there is an exit-signal to sftpd
ssh: Bug fix sftp error codes
ssh: Fix ssh_xfer decode_ATTR error for Vsn=4
ftp: Disallow 'packet_size' for low-level options
ftp: Socket options
syntax_tools: Fix a bug regarding reverting map types.
|
|
* maint-20:
Updated OTP version
Prepare release
ssh: Report the signal name if there is an exit-signal to sftpd
ssh: Bug fix sftp error codes
ssh: Fix ssh_xfer decode_ATTR error for Vsn=4
syntax_tools: Fix a bug regarding reverting map types.
Conflicts:
OTP_VERSION
lib/inets/doc/src/notes.xml
lib/inets/vsn.mk
lib/ssh/doc/src/notes.xml
lib/ssh/vsn.mk
lib/syntax_tools/doc/src/notes.xml
lib/syntax_tools/vsn.mk
otp_versions.table
|
|
* hans/ftp/21socket_opts/ERIERL-192/OTP-15120:
ftp: Disallow 'packet_size' for low-level options
ftp: Socket options
|
|
* maint:
Don't enqueue system tasks if target process is in fail_state
Fix erroneous schedule of freed/exiting processes
Fix deadlock in run queue evacuation
Fix memory leak of processes that died in the run queue
|
|
* john/erts/merge-OTP-15067:
Don't enqueue system tasks if target process is in fail_state
Fix erroneous schedule of freed/exiting processes
Fix deadlock in run queue evacuation
Fix memory leak of processes that died in the run queue
|
|
|
|
|
|
* bjorn/compiler/fix-beam_utils/ERL-650/OTP-15150:
Fix unsafe optimization when running beam_block the second time
|
|
maint-21
* john/erts/win32-case-insensitive-osenv/OTP-15147/ERL-644:
Fix environment case sensitivity issues on Windows
|
|
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
|
|
With DEBUG=true in erl_anno, erl_parse, and erl_pp a few (harmless)
non-opaque accesses of annotations were found.
|
|
|
|
|
|
* hans/ssh/sftp_ver4_xfer/ERIERL-199/OTP-15149:
ssh: Fix ssh_xfer decode_ATTR error for Vsn=4
|
|
* hans/ssh/sftp_error_codes/ERIERL-194/OTP-15148:
ssh: Report the signal name if there is an exit-signal to sftpd
ssh: Bug fix sftp error codes
|
|
maint-20
* hasse/syntax_tools/fix_map_type/OTP-15098/ERIERL-177:
syntax_tools: Fix a bug regarding reverting map types.
|
|
* hans/ftp/socket_opts/ERIERL-192/OTP-15120:
ftp: Disallow 'packet_size' for low-level options
ftp: Socket options
|
|
this should be an empty merge commit
|
|
(same as 7d1b8752a7a0cd66de6b3625b3b1f7afccb6147a)
|
|
Copy to .git/hooks/pre-push to activate.
|
|
|
|
|
|
Report the signal name if the signal error message is ""
Do not report a return code of 0 as an error.
|
|
* henrik/update-OTP_VERSION:
update for 22
|
|
|
|
* maint:
travis: Enable docs deploy for all branches
|
|
|
|
* maint:
travis: Enable delivery of docs
|
|
|
|
|
|
hans/ftp/21socket_opts/ERIERL-192/OTP-15120
Conflicts:
lib/ftp/src/ftp.erl
|
|
* maint:
erts: Update etp-commands with correct aux_flags
|
|
* lukas/erts/etp-aux-work-fixes:
erts: Update etp-commands with correct aux_flags
|
|
|
|
* maint:
travis: Update deploy security token
|
|
|
|
|
|
|
|
|
|
Need to create a seperate repo first for this to push to.
|
|
* lukas/travis/deploy:
Add deploy stage to travis-ci
|