aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2018-09-19Update release notesErlang/OTP
2018-09-19Update version numbersErlang/OTP
2018-09-19erts: Fix memory leak when sending to terminating portSverker Eriksson
Cherry-picked from 7c5fcd3f2701cbb614930682ac52ff75b9c26e6c. Error: Leak_DefinitelyLost erts_alloc:230 (-> 0x52E54D) [erl_alloc.h] port_task_alloc:154 (-> 0x52F3CA) [erl_port_task.c] erts_port_task_alloc_p2p_sig_data:212 (-> 0x52F5D3) [erl_port_task.c] erts_port_output:2147 (-> 0x4F6057) [io.c] erts_port_command:4126 (-> 0x4FA10E) [io.c] do_send:2200 (-> 0x4E4C64) [bif.c] erl_send:2494 (-> 0x4E5E09) [bif.c] process_main:1730 (-> 0x43ADA5) [beam_emu.c]
2018-08-09Update release notesErlang/OTP
2018-08-09Update version numbersErlang/OTP
2018-08-09Merge branch 'john/erts/inet-drv-race/OTP-15158/ERL-654' into maint-19Erlang/OTP
* john/erts/inet-drv-race/OTP-15158/ERL-654: Fix a race condition when generating async operation ids
2018-08-09Merge branch 'dotsimon/ref_ordering_bug/OTP-15225' into maint-19Erlang/OTP
* dotsimon/ref_ordering_bug/OTP-15225: Fixed #Ref ordering bug Test #Ref ordering in lists and ets
2018-08-09Fixed #Ref ordering bugSimon Cornish
2018-08-09Test #Ref ordering in lists and etsSimon Cornish
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.
2017-12-15Prepare releaseErlang/OTP
2017-12-15Merge branch 'rickard/node-mon-proc-exit-race/OTP-14781' into maint-19Erlang/OTP
* rickard/node-mon-proc-exit-race/OTP-14781: Fix triggering of node monitors
2017-12-15Merge branch 'john/erts/fix-close-eintr/OTP-14775' into maint-19Erlang/OTP
* john/erts/fix-close-eintr/OTP-14775: Remove invalid EINTR loop around close(2)
2017-11-15Fix triggering of node monitorsRickard Green
2017-11-13Remove invalid EINTR loop around close(2)John Högberg
Retrying close(2) on anything other than HP-UX is likely to close something entirely different. POSIX says that the state of the file descriptor is unspecified, and Linux/BSD guarantee that it's closed on return.
2017-10-05Update release notesErlang/OTP
2017-10-05Update version numbersErlang/OTP
2017-10-05Merge branch 'sverker/bad-dist-msg-bug/ERIERL-80/OTP-14661' into maint-19Erlang/OTP
* sverker/bad-dist-msg-bug/ERIERL-80/OTP-14661: erts: Fix bug when detecting bad dist message Add distribution_SUITE:bad_dist_ext_size
2017-10-05Merge branch 'sverker/19/on_load-on_load-bug/OTP-14612' into maint-19Erlang/OTP
* sverker/19/on_load-on_load-bug/OTP-14612: erts: Fix 'on_load' tracing bug for modules with -on_load code_SUITE:on_load_trace_on_load
2017-10-05Merge branch 'sverker/19/binary_to_atom-utf8-crash/ERL-474/OTP-14590' into ↵Erlang/OTP
maint-19 * sverker/19/binary_to_atom-utf8-crash/ERL-474/OTP-14590: erts: Fix crash in binary_to_atom/term for invalid utf8
2017-10-05Merge branch 'rickard/timer-sid-bug/OTP-14548' into maint-19Erlang/OTP
* rickard/timer-sid-bug/OTP-14548: Fix scheduler id field in timers
2017-10-02erts: Fix bug when detecting bad dist messageSverker Eriksson
We can't just leave it in queue with dist_ext=NULL. Two symptoms seen: 1. 'receive' trying to deref dist_ext as NULL. 2. GC think it's a term and put THE_NON_VALUE in root set.
2017-10-02Add distribution_SUITE:bad_dist_ext_sizeSverker Eriksson
2017-09-13erts: Fix 'on_load' tracing bug for modules with -on_loadSverker Eriksson
Symptom: VM crash when erlang:trace_pattern(on_load, ..) is set and module with -on_load is loaded. Problem: Tracing and -on_load clash in their use of Export.beam[1] Solution: Do not do call set_default_trace_pattern in finish_loading_1 for modules with -on_load. finish_after_on_load_2 will do that anyway.
2017-08-30Merge tag 'OTP-19.0' into sverker/19/binary_to_atom-utf8-crash/ERL-474/OTP-14590Sverker Eriksson
2017-08-30erts: Fix crash in binary_to_atom/term for invalid utf8Sverker Eriksson
such as a sub-binary, of a correct utf8 string, that ends in the middle of a character.
2017-08-23Fix scheduler id field in timersRickard Green
2017-07-25Update release notesErlang/OTP
2017-07-25Update version numbersErlang/OTP
2017-07-25Merge branch 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maint-19Erlang/OTP
* sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
2017-07-25Merge branch 'john/erts/fix-tcp-send-timeout/OTP-14509/ERL-448' into maint-19Erlang/OTP
* john/erts/fix-tcp-send-timeout/OTP-14509/ERL-448: Add a dedicated close function for TCP ports to prevent issues like ERL-430/448 Close TCP ports properly on send timeout
2017-07-25Merge branch 'sverker/prealloc-race-bug/OTP-14491' into maint-19Erlang/OTP
* sverker/prealloc-race-bug/OTP-14491: erts: Fix bug in quick alloc
2017-07-12erts: Fix bug in bxor of a big negative numberSverker Eriksson
Wrong result for (X bsl WS) bxor Y. where X is any negative integer Y is any integer that does not require more words than X WS is erlang:system_info(wordsize) or larger Fix: The subtraction of 1 (for 2-complement conversion) must be carried along all the way to the last words.
2017-07-10Add a dedicated close function for TCP ports to prevent issues like ERL-430/448John Högberg
2017-07-10Close TCP ports properly on send timeoutJohn Högberg
2017-06-30erts: Fix bug in quick allocSverker Eriksson
The effect of the race is that a pre-allocated memory block is inserted last without updating tail.data.last, which will cause all subsequent insertions to also fail to update tail.data.last. Hence all pre-allocation for this quick alloc instance is leaked for this thread and will fallback on erts_alloc.
2017-06-26Update release notesErlang/OTP
2017-06-26Update version numbersErlang/OTP
2017-06-26Merge branch 'rickard/statistics/OTP-14484' into maint-19Erlang/OTP
* rickard/statistics/OTP-14484: Fix statistics(wall_clock) and statistics(runtime) implementation
2017-06-26Merge branch 'lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481' ↵Erlang/OTP
into maint-19 * lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481: fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race erts: Cleanup dropped port tasks correctly
2017-06-26Merge branch 'john/erts/fix-port-leak/OTP-13939/ERL-193' into maint-19Erlang/OTP
* john/erts/fix-port-leak/OTP-13939/ERL-193: Add a testcase for OTP-13939/ERL-193 Mark socket disconnected on tcp_send_or_shutdown_error # Conflicts: # lib/kernel/test/gen_tcp_misc_SUITE.erl
2017-06-22Fix statistics(wall_clock) and statistics(runtime) implementationRickard Green
2017-06-14fixup! erts: Cleanup dropped port tasks correctlyLukas Larsson
2017-06-14erts: Add tests to detect port close raceLukas Larsson
2017-06-14erts: Cleanup dropped port tasks correctlyLukas Larsson
Before this fix, the extra data attached to a port task had to be cleaned up by the calling function. This caused problems because the outputv call, co-allocates the extra data with the port task. So in rare circumstances the port task would be free'd before the extra data was free'd which led to segfault when looking at the port task. This has been fixed by the generic PORT_TASK_ABORT behaviour being used even for tasks dropped in the erts_schedule_proc2port_signal API.
2017-06-14Mark socket disconnected on tcp_send_or_shutdown_errorkvakvs
The socket left lingering due to {exit_on_close, false} will accept writes in a confusing way, returning either enotconn or blocking. This fix allows socket to know that it has been closed recently, and new writes won't pass.
2017-06-08Merge tag 'OTP-19.1.6.1' into maint-19Rickard Green
=== OTP-19.1.6.1 === Changed Applications: - erts-8.1.1.1 Unchanged Applications: - asn1-4.0.4 - common_test-1.12.3 - compiler-7.0.2 - cosEvent-2.2.1 - cosEventDomain-1.2.1 - cosFileTransfer-1.2.1 - cosNotification-1.2.2 - cosProperty-1.2.1 - cosTime-1.2.2 - cosTransactions-1.3.2 - crypto-3.7.1 - debugger-4.2.1 - dialyzer-3.0.2 - diameter-1.12.1 - edoc-0.8 - eldap-1.2.2 - erl_docgen-0.6 - erl_interface-3.9.1 - et-1.6 - eunit-2.3.1 - gs-1.6.2 - hipe-3.15.2 - ic-4.4.2 - inets-6.3.3 - jinterface-1.7.1 - kernel-5.1 - megaco-3.18.1 - mnesia-4.14.1 - observer-2.2.2 - odbc-2.11.3 - orber-3.8.2 - os_mon-2.4.1 - otp_mibs-1.1.1 - parsetools-2.1.3 - percept-0.9 - public_key-1.2 - reltool-0.7.2 - runtime_tools-1.10.1 - sasl-3.0.1 - snmp-5.2.4 - ssh-4.3.6 - ssl-8.0.3 - stdlib-3.1 - syntax_tools-2.1 - tools-2.8.6 - typer-0.9.11 - wx-1.7.1 - xmerl-1.3.12 * tag 'OTP-19.1.6.1': Updated OTP version Prepare release Conflicts: OTP_VERSION erts/vsn.mk otp_versions.table
2017-06-07Update release notesErlang/OTP
2017-06-07Update version numbersErlang/OTP
2017-06-07Merge branch 'lukas/erts/fix_zz_sigterm_kill/OTP-14451' into maint-19Erlang/OTP
* lukas/erts/fix_zz_sigterm_kill/OTP-14451: erts: Fix so that 81b628 (sigterm=kill) works