aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-09-06Merge branch 'maint'Rickard Green
* maint: Updated OTP version Update release notes Update version numbers kernel: Fix missing abort_connection in net_kernel Prevent inconsistent node lists Fix an endless rescheduling loop when a process is executing process_info(self(), ...)
2018-09-06Merge branch 'maint-21' into maintRickard Green
* maint-21: Updated OTP version Update release notes Update version numbers kernel: Fix missing abort_connection in net_kernel Prevent inconsistent node lists Fix an endless rescheduling loop when a process is executing process_info(self(), ...)
2018-09-06Merge branch 'maint'Rickard Green
* maint: Fix an endless rescheduling loop when a process is executing process_info(self(), ...)
2018-09-06Merge pull request #1943 from max-au/handle_signals_before_dirty_gcRickard Green
Fix an endless rescheduling loop when a process is executing process_… OTP-15275
2018-09-06Merge branch 'maint'Ingela Anderton Andin
2018-09-06Merge pull request #1951 from lasseebert/fix_ssl_typespecIngela Andin
Correct dialyzer spec for key option OTP-15281
2018-09-05Updated OTP versionOTP-21.0.8Erlang/OTP
2018-09-05Update release notesErlang/OTP
2018-09-05Update version numbersErlang/OTP
2018-09-05Merge branch 'sverker/net_kernel-missing-aborts/OTP-15280' into maint-21Erlang/OTP
* sverker/net_kernel-missing-aborts/OTP-15280: kernel: Fix missing abort_connection in net_kernel
2018-09-05Merge branch 'rickard/dist-entry-gc-fix/OTP-15279' into maint-21Erlang/OTP
* rickard/dist-entry-gc-fix/OTP-15279: Prevent inconsistent node lists
2018-09-05Merge branch 'max-au/handle_signals_before_dirty_gc/OTP-15275' into maint-21Erlang/OTP
* max-au/handle_signals_before_dirty_gc/OTP-15275: Fix an endless rescheduling loop when a process is executing process_info(self(), ...)
2018-09-05kernel: Fix missing abort_connection in net_kernelSverker Eriksson
2018-09-05Prevent inconsistent node listsRickard Green
If net_kernel "forgets" to abort a connection (as it currently might), the garbage collection of a distribution entry could cause node lists to enter an inconsistent state.
2018-09-05Merge branch 'maint'Sverker Eriksson
2018-09-05Merge branch 'sverker/erts/ets-memstat-false-leak/ERL-720/OTP-15278' into maintSverker Eriksson
* sverker/erts/ets-memstat-false-leak/ERL-720/OTP-15278: erts: Refactor ets FixedDeletion allocations erts: Fix ets memstat false leak of FixedDeletion
2018-09-05Update primary bootstrapBjörn Gustavsson
2018-09-05Merge pull request #1947 from bjorng/bjorn/opt-put-tupleBjörn Gustavsson
Introduce a put_tuple2 instruction
2018-09-05Merge branch 'ingela/ssl/initial-tls-1.3-functions'Ingela Anderton Andin
* ingela/ssl/initial-tls-1.3-functions: ssl: Initial cipher suites adoption for TLS-1.3 ssl: Add new TLS-1.3 Alerts ssl: Add initial TLS 1.3 hanshake encode/decode support
2018-09-04Fix an endless rescheduling loop when a process is executing ↵Maxim Fedorov
process_info(self(), ...) It is possible that a process has to yield before completing process_info BIF when it runs out of reductions. If this BIF is called by the process itself, it does not send a signal but executes in the context of a process. If it has to yield, it turns F_LOCAL_SIGS_ONLY flag on, which means new signals won't be fetched from the outer message queue. When the same process needs to execute dirty system code (e.g. dirty GC) it has to be run on a dirty scheduler. However signals enqueued into outer queue cause it to be rescheduled on a normal scheduler. F_LOCAL_SIGS_ONLY prevent outer queue signals delivery, creating an endless rescheduling loop. This commit disengages F_LOCAL_SIG_ONLY if process needs to execute dirty code in order to complete signal delivery and allow process to be moved to dirty run queue.
2018-09-04ssl: Initial cipher suites adoption for TLS-1.3Ingela Anderton Andin
This commit filters out cipher suites not to be used in TLS-1.3 We still need to add new cipher suites for TLS-1.3 and possible add new information to the suite data structure.
2018-09-04Update CONTRIBUTING.mdKenneth Lundin
2018-09-04ssl: Add new TLS-1.3 AlertsIngela Anderton Andin
2018-09-04ssl: Add initial TLS 1.3 hanshake encode/decode supportIngela Anderton Andin
2018-09-04Merge branch 'maint'Sverker Eriksson
2018-09-04Merge PR-1929 from dotsimon/erl_compare_ext_lists_bug OTP-15277Sverker Eriksson
Erl compare ext lists bug (ERL-705)
2018-09-04Merge branch 'maint'Sverker Eriksson
2018-09-04Merge PR-1920 from saleyn/float_to_list OTP-15276Sverker Eriksson
Fix bug in compact representation of float_to_list/2
2018-09-04Fixed ssl_options typespec for keyLasse Skindstad Ebert
2018-09-04Merge pull request #1945 from gomoripeti/ms_transform_specHans Bolinder
Fix type spec of ms_transform:parse_trans/2
2018-09-03erts: Refactor ets FixedDeletion allocationsSverker Eriksson
2018-09-03erts: Fix ets memstat false leak of FixedDeletionSverker Eriksson
causing erlang:memory to report too much ets memory.
2018-09-03Introduce a put_tuple2 instructionBjörn Gustavsson
Sometimes when building a tuple, there is no way to avoid an extra `move` instruction. Consider this code: make_tuple(A) -> {ok,A}. The corresponding BEAM code looks like this: {test_heap,3,1}. {put_tuple,2,{x,1}}. {put,{atom,ok}}. {put,{x,0}}. {move,{x,1},{x,0}}. return. To avoid overwriting the source register `{x,0}`, a `move` instruction is necessary. The problem doesn't exist when building a list: %% build_list(A) -> [A]. {test_heap,2,1}. {put_list,{x,0},nil,{x,0}}. return. Introduce a new `put_tuple2` instruction that builds a tuple in a single instruction, so that the `move` instruction can be eliminated: %% make_tuple(A) -> {ok,A}. {test_heap,3,1}. {put_tuple2,{x,0},{list,[{atom,ok},{x,0}]}}. return. Note that the BEAM loader already combines `put_tuple` and `put` instructions into an internal instruction similar to `put_tuple2`. Therefore the introduction of the new instruction will not speed up execution of tuple building itself, but it will be less work for the loader to load the new instruction.
2018-09-03Merge branch 'maint'Björn Gustavsson
* maint: ops.tab: Fix potentially unsafe optimization of raise/2
2018-09-03ops.tab: Fix potentially unsafe optimization of raise/2Björn Gustavsson
The operands for the raise/2 instruction are almost always in x(2) and x(1). Therefore the loader translates the raise/2 instruction to an i_raise/0 instruction which uses the values in x(2) and x(1). If the operands happens to be in other registers, the loader inserts move/2 instruction to move them to x(2) and x(1). The problem is that x(3) is used as a temporary register when generating the move/2 instructions. That is unsafe if the Value operand for raise/2 is x(3). Thus: raise x(0) x(3) will be translated to: move x(0) x(3) move x(3) x(1) move x(3) x(2) i_raise The Trace will be written to both x(2) and x(1). The current compiler will never use x(3) for the Value operand, so there is no need to patch previous releases. But a future compiler version might allocate registers differently.
2018-08-31Fix an endless rescheduling loop when a process is executing ↵Maxim Fedorov
process_info(self(), ...) It is possible that a process has to yield before completing process_info BIF when it runs out of reductions. If this BIF is called by the process itself, it does not send a signal but executes in the context of a process. If it has to yield, it turns F_LOCAL_SIGS_ONLY flag on, which means new signals won't be fetched from the outer message queue. When the same process needs to execute dirty system code (e.g. dirty GC) it has to be run on a dirty scheduler. However signals enqueued into outer queue cause it to be rescheduled on a normal scheduler. F_LOCAL_SIGS_ONLY prevent outer queue signals delivery, creating an endless rescheduling loop. This commit disengages F_LOCAL_SIG_ONLY if process needs to execute dirty code in order to complete signal delivery and allow process to be moved to dirty run queue.
2018-08-31Merge branch 'maint'Hans Nilsson
* maint: crypto: Let otp_test_engine only add what is needed OpenSSL_add_all_algorithms hangs on some test machines
2018-08-31Merge branch 'hans/crypto/init_test_engine_fix' into maintHans Nilsson
* hans/crypto/init_test_engine_fix: crypto: Let otp_test_engine only add what is needed OpenSSL_add_all_algorithms hangs on some test machines
2018-08-31Merge branch 'maint'Hans Bolinder
* maint:
2018-08-31Merge branch 'hasse/dialyzer/improve_guards/OTP-15268/ERL-680' into maintHans Bolinder
* hasse/dialyzer/improve_guards/OTP-15268/ERL-680: dialyzer: Improve handling of complex guards
2018-08-31Merge pull request #1944 from ↵Hans Bolinder
uabboli/hasse/dialyzer/improve_guards/OTP-15268/ERL-680 dialyzer: Improve handling of complex guards
2018-08-31Fix type spec of ms_transform:parse_trans/2Péter Gömöri
It can also return errors and warnings.
2018-08-30Merge branch 'maint'Ingela Anderton Andin
Conflicts: lib/ssl/src/ssl_connection.erl lib/ssl/src/tls_connection.erl
2018-08-30Merge branch 'ingela/ssl/send-recv-dead-lock/ERL-622' into maintIngela Anderton Andin
* ingela/ssl/send-recv-dead-lock/ERL-622: ssl: Improve close handling ssl: Adopt distribution over TLS to use new sender process ssl: Add new sender process for TLS state machine
2018-08-30Merge branch 'maint'Rickard Green
* maint: Updated OTP version Update release notes Update version numbers Fix missing 'in' trace events during 'running' trace
2018-08-30Merge branch 'maint-21' into maintRickard Green
* maint-21: Updated OTP version Update release notes Update version numbers Fix missing 'in' trace events during 'running' trace
2018-08-30crypto: Let otp_test_engine only add what is neededHans Nilsson
OpenSSL_add_all_algorithms hangs on some test machines
2018-08-29Updated OTP versionOTP-21.0.7Erlang/OTP
2018-08-29Update release notesErlang/OTP
2018-08-29Update version numbersErlang/OTP