aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-06-29Merge branch 'john/erts/inet-drv-race/OTP-15158/ERL-654' into maint-21Erlang/OTP
* john/erts/inet-drv-race/OTP-15158/ERL-654: Fix a race condition when generating async operation ids
2018-06-29Merge branch 'bjorn/compiler/fix-map_get/OTP-15157' into maint-21Erlang/OTP
* bjorn/compiler/fix-map_get/OTP-15157: Fix internal compiler error for map_get/2
2018-06-29Merge branch 'bjorn/compiler/fix-skipped-matching/ERL-655/OTP-15156' into ↵Erlang/OTP
maint-21 * bjorn/compiler/fix-skipped-matching/ERL-655/OTP-15156: beam_type: Fix unsafe optimization
2018-06-29Merge branch 'hans/public_key/remove_unsup_keylens/OTP-15151' into maint-21Erlang/OTP
* hans/public_key/remove_unsup_keylens/OTP-15151: public_key: Remove moduli 5121 and 7167 Thoose were added by 598629aeba9de98e8cdf5637043eb34e5d407751 but are not universaly supported.
2018-06-29Merge branch 'john/erts/merge-OTP-15067' into maint-21Erlang/OTP
* 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
2018-06-28Fix a race condition when generating async operation idsJohn Högberg
The counter used for generating async operation ids was a plain int shared between all ports, which was incorrect but mostly worked fine since the ids only had to be unique on a per-port basis. However, some compilers (notably GCC 8.1.1) generated code that assumed that this value didn't change between reads. Using a shortened version of enq_async_w_tmo as an example: int id = async_ref++; op->id = id; //A return id; //B In GCC 7 and earlier, `async_ref` would be read once and assigned to `id` before being incremented, which kept the values at A and B consistent. In GCC 8, `async_ref` was read when assigned at A and read again at B, and then incremented, which made them inconsistent if we raced with another port. This commit fixes the issue by removing `async_ref` altogether and replacing it with a per-port counter which makes it impossible to race with someone else.
2018-06-27Fix internal compiler error for map_get/2Björn Gustavsson
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.
2018-06-27beam_type: Fix unsafe optimizationBjörn Gustavsson
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
2018-06-26public_key: Remove moduli 5121 and 7167Hans Nilsson
Thoose were added by 598629aeba9de98e8cdf5637043eb34e5d407751 but are not universaly supported.
2018-06-25Updated OTP versionOTP-21.0.1Erlang/OTP
2018-06-25Prepare releaseErlang/OTP
2018-06-25Merge branch 'bjorn/compiler/fix-beam_utils/ERL-650/OTP-15150' into maint-21Erlang/OTP
* bjorn/compiler/fix-beam_utils/ERL-650/OTP-15150: Fix unsafe optimization when running beam_block the second time
2018-06-25Merge branch 'john/erts/win32-case-insensitive-osenv/OTP-15147/ERL-644' into ↵Erlang/OTP
maint-21 * john/erts/win32-case-insensitive-osenv/OTP-15147/ERL-644: Fix environment case sensitivity issues on Windows
2018-06-25Fix unsafe optimization when running beam_block the second timeBjörn Gustavsson
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
2018-06-21Fix environment case sensitivity issues on WindowsJohn Högberg
2018-06-19Updated OTP versionOTP-21.0Erlang/OTP
2018-06-19Prepare releaseErlang/OTP
2018-06-18travis: Don't run docs deploy scriptLukas Larsson
Need to create a seperate repo first for this to push to.
2018-06-18Merge branch 'lukas/travis/deploy'Lukas Larsson
* lukas/travis/deploy: Add deploy stage to travis-ci
2018-06-18Add deploy stage to travis-ciLukas Larsson
2018-06-18Merge remote-tracking branch 'origin/henrik/Update-copyright'Henrik Nord
* origin/henrik/Update-copyright: Update copyright year
2018-06-18Update copyright yearHenrik Nord
2018-06-18Merge branch 'ingela/ssl/doc-fix-21'Ingela Anderton Andin
* ingela/ssl/doc-fix-21: ssl: Document enhancements
2018-06-18ssl: Document enhancementsIngela Anderton Andin
2018-06-18Merge branch 'lukas/erts/fix_vxworks_configure'Lukas Larsson
* lukas/erts/fix_vxworks_configure: erts: Fix vxworks configure broken by corba removal
2018-06-18erts: Fix vxworks configure broken by corba removalLukas Larsson
2018-06-18Update preloaded modulesHenrik Nord
2018-06-18Update primary bootstrapHenrik Nord
2018-06-15Merge branch 'sverker/macos-select-fd-bug'Sverker Eriksson
* sverker/macos-select-fd-bug: erts: Fix MacOS pollset bug
2018-06-15Merge branch 'lukas/otp_mibs/deprecate/OTP-15141'Lukas Larsson
* lukas/otp_mibs/deprecate/OTP-15141: Update primary bootstrap Deprecate otp_mibs
2018-06-15Merge branch 'siri/logger-fix'Siri Hansen
* 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
2018-06-15[logger] Update documentationSiri Hansen
2018-06-15[logger] Adjust priority settings in testSiri Hansen
Now only setting high priority on every second burst sending process, to allow for handler process to be scheduled in every now and then.
2018-06-15[logger] Unregister handler names before terminatingSiri Hansen
2018-06-15[logger] Stress overload_kill tests in disk_log handlerSiri Hansen
2018-06-15Merge branch 'peppe/common_test/no_export_all_warning/OTP-14810'Peter Andersson
* peppe/common_test/no_export_all_warning/OTP-14810: No export_all warning when compiling test suites OTP-14810
2018-06-15Merge branch 'peppe/kernel/logger_updates'Peter Andersson
* 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
2018-06-15Merge pull request #1839 from rickard-green/rickard/misc-docRickard Green
Info about support, compatibility, deprecation and removal OTP-15140
2018-06-15Merge branch 'hans/crypto/EVP_DH_key/OTP-14864'Hans Nilsson
* hans/crypto/EVP_DH_key/OTP-14864: crypto: Remove EVP_PKEY from dh_compute_key_nif crypto: Try fix valgrind errors
2018-06-15Merge pull request #1838 from crownedgrouse/masterSiri Hansen
Included config files relative to sys.config directory OTP-15137
2018-06-14Included config files relative to sys.config dircrownedgrouse
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.
2018-06-14Info about support, compatibility, deprecation and removalRickard Green
2018-06-14Merge branch 'ingela/ssl/21-enhanchment'Ingela Anderton Andin
* ingela/ssl/21-enhanchment: ssl: Add handle_continue/2 and document enhancements
2018-06-14No export_all warning when compiling test suitesPeter Andersson
OTP-14810
2018-06-14[logger] Correct documentationPeter Andersson
2018-06-14[logger] Update handler documentationPeter Andersson
2018-06-14[logger] Fix test suite compilation warningsPeter Andersson
2018-06-14crypto: Remove EVP_PKEY from dh_compute_key_nifHans Nilsson
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.
2018-06-14crypto: Try fix valgrind errorsHans Nilsson
Re-structure dh_compute_key_nif and dh_generate_key_nif to see variable scoping and alloc/dealloc pairs better
2018-06-14ssl: Add handle_continue/2 and document enhancementsIngela Anderton Andin
* deprecation of ssl:ssl_accept/[1,2,3] * deprecation of ssl:cipher_suites/[0,1] * More consistent naming