aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-09-07Improve indexing of cref docsRaimo Niskanen
2018-09-07Merge branch 'maint'Hans Nilsson
* maint: public_key: Remove strange and unused(?) DSAPrivateKey from verify/5
2018-09-07Merge branch 'hans/public_key/DSAPrivateKey_in_verify/OTP-15284' into maintHans Nilsson
* hans/public_key/DSAPrivateKey_in_verify/OTP-15284: public_key: Remove strange and unused(?) DSAPrivateKey from verify/5
2018-09-07Merge branch 'maint'Hans Nilsson
* maint: crypto: Bug fix - crypto:next_iv regarding aes_ige256 crypto: Bug fix - blowfish_cbc allowed in crypto:next_iv
2018-09-07Merge branch 'hans/crypto/next_iv/OTP-15283' into maintHans Nilsson
* hans/crypto/next_iv/OTP-15283: crypto: Bug fix - crypto:next_iv regarding aes_ige256 crypto: Bug fix - blowfish_cbc allowed in crypto:next_iv
2018-09-07public_key: Remove strange and unused(?) DSAPrivateKey from verify/5Hans Nilsson
2018-09-07crypto: Bug fix - crypto:next_iv regarding aes_ige256Hans Nilsson
2018-09-07crypto: Bug fix - blowfish_cbc allowed in crypto:next_ivHans Nilsson
2018-09-07[supervisor] Add warning about race conditionSiri Hansen
ERL-724: "During a 'gentle' shutdown, supervisors unlink from their children before sending shutdown signals to them. This can lead to a race condition in supervision trees, when the timeout for gentle shutdown of a parent supervisor expires and it kills a child supervisor that has just unlinked from a child of its own, leaving the child supervisor's own child still running after its supervisor is killed." This commit adds a warning about this in the documentation.
2018-09-07ssl: Fix cipher suite handlingPéter Dimitrov
Implementations of TLS 1.3 which choose to support prior versions of TLS SHOULD support TLS 1.2. That is, a TLS 1.3 ClientHello shall advertise support for TLS 1.2 ciphers in order to be able to connect to TLS 1.2 servers. This commit changes the list of the advertised cipher suites to include old TLS 1.2 ciphers. Change-Id: Iaece3ac4b66a59dfbe97068b682d6010d74522b8
2018-09-07ssl: Add TLS 1.3 cipher suitesPéter Dimitrov
TLS_AES_128_GCM_SHA256 = {0x13,0x01} TLS_AES_256_GCM_SHA384 = {0x13,0x02} TLS_CHACHA20_POLY1305_SHA256 = {0x13,0x03} Change-Id: I3406aaedac812fc43519ff31e5f00d26e375c5d5
2018-09-07Merge branch 'peterdmv/ssl/add_signature_algorithms'Péter Dimitrov
* peterdmv/ssl/add_signature_algorithms: ssl: Use 'HighestVersion' instead of extra function call ssl: Add new extension with encode/decode functions ssl: Format code in handle options Change-Id: Iba3600edc86dc646a7bbabf550d88e7884877e18
2018-09-07Merge branch 'ingela/ssl/property-tests'Ingela Anderton Andin
* ingela/ssl/property-tests: ssl: Correct compression decoding ssl: Add property tests framework ssl: Fix typo
2018-09-06Merge branch 'maint'Rickard Green
* maint: Update PCRE from version 8.41 to version 8.42
2018-09-06Merge branch 'rickard/pcre-8.42/OTP-15217' into maintRickard Green
* rickard/pcre-8.42/OTP-15217: Update PCRE from version 8.41 to version 8.42
2018-09-06Fix PGO configure testRickard Green
2018-09-06Merge branch 'maint'Rickard Green
* maint: erts: Fix configure check when cross-compiling
2018-09-06Merge pull request #1861 from fornwall/fix-cross-compilingRickard Green
erts: Fix configure check when cross-compiling OTP-15282
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-06ssl: Correct compression decodingIngela Anderton Andin
Property testing revealed an decoding error of "compression_methods" in the client hello. As we do not implement any compression methods this has no practical impact.
2018-09-06ssl: Add property tests frameworkErland Schönbeck
2018-09-06ssl: Use 'HighestVersion' instead of extra function callPéter Dimitrov
Change-Id: I7521cd4e83f881d3caeae8faf2dd8108db15aa7e
2018-09-06ssl: Add new extension with encode/decode functionsPéter Dimitrov
Change-Id: I8a5c11b3503b44cfc6cbd6e4fd8ff3005a8669dd
2018-09-06ssl: Fix typoIngela Anderton Andin
2018-09-05stdlib: Suppress test log spam in ets_SUITESverker Eriksson
of repeated table opts and waiting for workers
2018-09-05Add a more scalable ETS ordered_set implementationKjell Winblad
The current ETS ordered_set implementation can quickly become a scalability bottleneck on multicore machines when an application updates an ordered_set table from concurrent processes [1][2]. The current implementation is based on an AVL tree protected from concurrent writes by a single readers-writer lock. Furthermore, the current implementation has an optimization, called the stack optimization [3], that can improve the performance when only a single process accesses a table but can cause bad scalability even in read-only scenarios. It is possible to pass the option {write_concurrency, true} to ets:new/2 when creating an ETS table of type ordered_set but this option has no effect for tables of type ordered_set without this commit. The new ETS ordered_set implementation, added by this commit, is only activated when one passes the options ordered_set and {write_concurrency, true} to the ets:new/2 function. Thus, the previous ordered_set implementation (from here on called the default implementation) can still be used in applications that do not benefit from the new implementation. The benchmark results on the following web page show that the new implementation is many times faster than the old implementation in some scenarios and that the old implementation is still better than the new implementation in some scenarios. http://winsh.me/ets_catree_benchmark/ets_ca_tree_benchmark_results.html The new implementation is expected to scale better than the default implementation when concurrent processes use the following ETS operations to operate on a table: delete/2, delete_object/2, first/1, insert/2 (single object), insert_new/2 (single object), lookup/2, lookup_element/2, member/2, next/2, take/2 and update_element/3 (single object). Currently, the new implementation does not have scalable support for the other operations (e.g., select/2). However, when these operations are used infrequently, the new implantation may still scale better than the default implementation as the benchmark results at the URL above shows. Description of the New Implementation ---------------------------------- The new implementation is based on a data structure which is called the contention adapting search tree (CA tree for short). The following publication contains a detailed description of the CA tree: A Contention Adapting Approach to Concurrent Ordered Sets Journal of Parallel and Distributed Computing, 2018 Kjell Winblad and Konstantinos Sagonas https://doi.org/10.1016/j.jpdc.2017.11.007 http://www.it.uu.se/research/group/languages/software/ca_tree/catree_proofs.pdf A discussion of how the CA tree can be used as an ETS back-end can be found in another publication [1]. The CA tree is a data structure that dynamically changes its synchronization granularity based on detected contention. Internally, the CA tree uses instances of a sequential data structure to store items. The CA tree implementation contained in this commit uses the same AVL tree implementation as is used for the default ordered set implementation. This AVL tree implementation is reused so that much of the existing code to implement the ETS operations can be reused. Tests ----- The ETS tests in `lib/stdlib/test/ets_SUITE.erl` have been extended to also test the new ordered_set implementation. The function ets_SUITE:throughput_benchmark/0 has also been added to this file. This function can be used to measure and compare the performance of the different ETS table types and options. This function writes benchmark data to standard output that can be visualized by the HTML page `lib/stdlib/test/ets_SUITE_data/visualize_throughput.html`. [1] More Scalable Ordered Set for ETS Using Adaptation. In Thirteenth ACM SIGPLAN workshop on Erlang (2014). Kjell Winblad and Konstantinos Sagonas. https://doi.org/10.1145/2633448.2633455 http://www.it.uu.se/research/group/languages/software/ca_tree/erlang_paper.pdf [2] On the Scalability of the Erlang Term Storage In Twelfth ACM SIGPLAN workshop on Erlang (2013) Kjell Winblad, David Klaftenegger and Konstantinos Sagonas https://doi.org/10.1145/2505305.2505308 http://winsh.me/papers/erlang_workshop_2013.pdf [3] The stack optimization works by keeping one preallocated stack instance in every ordered_set table. This stack is updated so that it contains the search path in some read operations (e.g., ets:next/2). This makes it possible for a subsequent ets:next/2 to avoid traversing some nodes in some cases. Unfortunately, the preallocated stack needs to be flagged so that it is not updated concurrently by several threads which cause bad scalability.
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-05Fix documentation due to feedbackRaimo Niskanen
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-05ssl: Format code in handle optionsPéter Dimitrov
Change-Id: I997fa8808eaf48aad24a7097b82571be9f0ee252
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