aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2015-12-30Skip time_SUITE:timestamp on timewarp testRickard Green
2015-12-28Merge branch 'binarin/maint' into maintZandra
* binarin/maint: Don't wait for twice the delay_write timeout OTP-13220
2015-12-23Use monotonic time for call_time traceRickard Green
2015-12-21Do not allow aux work on dirty schedulersSteve Vinoski
The nature of aux work is such that dirty schedulers should not attempt to perform it. Modify the code to ensure that dirty schedulers avoid aux work. Also fix an incorrect assumption about the size of a Uint in the ErtsDirtySchedId type.
2015-12-20efile_drv: logic error in compressed file writeMikael Pettersson
Compiling OTP 18.2.1 with gcc-5.3 shows the following warning: drivers/common/efile_drv.c:1538:23: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses] The code in question is: if (! (status = erts_gzwrite((ErtsGzFile)d->fd, iov[i].iov_base, iov[i].iov_len)) == iov[i].iov_len) { d->errInfo.posix_errno = d->errInfo.os_errno = errno; /* XXX Correct? */ break; } If we hoist the assignment out of the if for clarity, it becomes: status = erts_gzwrite(..., iov[i].iov_len); if (! status == iov[i].iov_len) { ...; break; } iov_len is > 0 here, and status will equal iov_len if erts_gzwrite succeeded, but will be less than iov_len if an error occurred. "! status" is 0 or 1, which can only equal iov_len if iov_len is 1 and erts_gzwrite detected an error and returned 0. The effect of this mistake is that any error when iov_len >= 2 will skip the conditional code and break statement. In particular, partial writes (0 < status && status < iov_len) will not be flagged as errors. All releases since OTP R8B-0 are affected. The variable "status" is really a boolean, which is to be set to zero on error. The fix is to set status to 1 if erts_gzwrite() returned iov_len and 0 otherwise, and to change the condition to "if (! status) ...". I'm also hoisting the assignment out of the condition since it obscures the code while providing not benefit (the condition in a while or for loop would be a different matter).
2015-12-17Update release notesErlang/OTP
2015-12-17Update version numbersErlang/OTP
2015-12-17Merge branch 'jj1bdx/jj1bdx-18.2-freebsd-hipe-fix-2' into maintErlang/OTP
* jj1bdx/jj1bdx-18.2-freebsd-hipe-fix-2: hipe_x86_signal.c: add FreeBSD sigaction code
2015-12-17Revert "Fix erroneous splitting of emulator path"Björn-Egil Dahlberg
This reverts commit 731890f3b4ac62eed1221aa7d9fd2bfa6bf51d8c.
2015-12-17hipe_x86_signal.c: add FreeBSD sigaction codeKenji Rikitake
* erts/emulator/hipe/hipe_x86_signal.c: add FreeBSD sigaction code, based on the Darwin (OS X) code
2015-12-15Prevent down nodes going undetected in epmdAlexey Lebedeff
In the following (rare) case down node will be always registered in epmd: - client connects to epmd and sends ALIVE2 request - epmd reads this request and starts to process it - during that time client socket closes in such way that subsequent write(2) in epmd will result in error - at this point we have node that was registered in database, but as the connection struct has no 'keep' flag set, the do_read() closes connection and removes it from select fdset - and so there is no way for this node to be cleaned up later. We've seen several epmd instances in such state on our production systems. And while I'm not sure what was the exact sequence of events that leads to failed write(2), issue could be easily reproduced using SO_LINGER option for socket.
2015-12-15Update release notesErlang/OTP
2015-12-15Update version numbersErlang/OTP
2015-12-14Don't wait for twice the delay_write timeoutAlexey Lebedeff
This happens only during processing ALIVE2 request. reply() already performs the same delay as in the deleted code.
2015-12-14Update preloaded modulesHenrik Nord
2015-12-11Merge branch 'sverk/setnode-rename-bug/OTP-13076' into maintSverker Eriksson
* sverk/setnode-rename-bug/OTP-13076: erts: Fix correct node name for DTRACE
2015-12-11erts: Fix correct node name for DTRACESverker Eriksson
broken by 949de78331b9c4ecb9.
2015-12-11Merge branch 'sverk/dist-ctrl-msg-overflow' into maintSverker Eriksson
* sverk/dist-ctrl-msg-overflow: erts: Fix faulty cleanup when receiving broken dist msg
2015-12-11erts: Fix faulty cleanup when receiving broken dist msgSverker Eriksson
Bug introduced in ce8279d6a48d41f9. Thank you valgrind.
2015-12-09Merge branch 'sverk/dist-ctrl-msg-overflow' into maintSverker Eriksson
OTP-13146 (more stuff) * sverk/dist-ctrl-msg-overflow: erts: Tweak hashmap heap size estimation erts: Fix bug for remote control message containing fat maps erts: Add test for remote exit signal with fat map erts: Fix bug in heap_factory_undo for FACTORY_HEAP_FRAGS mode
2015-12-09erts: Correct the types section in The Abstract Format documentHans Bolinder
Fixed a mistake in commit 23885a.
2015-12-07erts: Tweak hashmap heap size estimationSverker Eriksson
1. Change order between mul and div to not lose too much in integer divisions. 2. Fix estimation in DEBUG to really be an *under* estimation.
2015-12-07erts: Fix bug for remote control message containing fat mapsSverker Eriksson
that could cause the static factory to overflow Fix: Introduce a new factory mode FACTORY_TMP
2015-12-07erts: Add test for remote exit signal with fat mapSverker Eriksson
2015-12-07Merge branch 'maint-17' into maintHenrik Nord
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk otp_versions.table
2015-12-07erts: Remove CDATA from The Abstract Format documentHans Bolinder
2015-12-07erts: Correct the types section in The Abstract Format documentHans Bolinder
The Types section is more consistent with Kostis' text in The Reference Manual.
2015-12-04Prepare releaseErlang/OTP
2015-12-04Merge branch 'maint-17' into maintHenrik Nord
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk lib/kernel/doc/src/notes.xml lib/kernel/src/kernel.appup.src lib/kernel/vsn.mk lib/ssl/doc/src/notes.xml lib/ssl/src/ssl.appup.src lib/ssl/src/ssl_cipher.erl lib/ssl/vsn.mk otp_versions.table
2015-12-04Remove ERTS_PRINT_INVALID from erts_print()Rickard Green
ERTS_PRINT_INVALID prevented file descriptor 0 to be used which could cause an empty crash dump.
2015-12-04Merge branch 'mikpe/hipe_x86_signal-musl-support' into maintZandra
* mikpe/hipe_x86_signal-musl-support: hipe_x86_signal: add support for musl libc OTP-13159
2015-12-03erts: Fix bug in heap_factory_undo for FACTORY_HEAP_FRAGS modeSverker Eriksson
Make sure a heap fragment is not deallocated before all off_heap terms have been cleared. The fix assumes/asserts that the off_heap-lists of all additional heap fragments are empty. I think this bug has been harmless as hashmap nodes, which is only ones (?) that can cause a factory to produce more heap, are not linked in off_heap-list.
2015-12-03Prepare releaseErlang/OTP
2015-12-02hipe: Fix signed compares of unsigned sizesMagnus Lång
Also, some of the branches were testing sizes in bits against a constant ?MAX_BINSIZE, which was in bytes. The signed comparisons masked this mistake. These branches have been removed since all sizes in bits that fit in a machine word are valid binary sizes. Finally, a test that reproduces the issue was added to bs_construct, along with a test for one of the cases (bs_init<0>(...)) when the test against ?MAX_BINSIZE must be changed to unsigned rather than removed.
2015-12-02beam: Fix overflow bug in i_bs_add_jIdMagnus Lång
The test whether the result would fit in a smallnum could overflow into a negative number that would fit a smallnum. A test that reproduces the issue was added to bs_construct_SUITE.
2015-11-30Merge branch 'sverk/rare-gc-map-overflow/OTP-13146' into maintSverker Eriksson
* sverk/rare-gc-map-overflow/OTP-13146: erts: Fix rare case of faulty heap fragment deallocation
2015-11-30Merge branch 'rickard/erts-print/OTP-13150' into maintRickard Green
* rickard/erts-print/OTP-13150: Remove ERTS_PRINT_INVALID from erts_print()
2015-11-30Remove ERTS_PRINT_INVALID from erts_print()Rickard Green
ERTS_PRINT_INVALID prevented file descriptor 0 to be used which could cause an empty crash dump.
2015-11-27Add missing corner-case to bs_construct_SUITEMagnus Lång
huge_binary/1 did not consider that the Shift variable is not a constant, and misses the case of a literal size.
2015-11-27hipe: test unit size match in bs_appendMagnus Lång
This feature was previously missing and expressions such as <<<<1:1>>/binary>> would succeed construction when compiled with HiPE. A primop is_divisible is introduced to handle the case when the unit size is not a power of two.
2015-11-27erts: Fix rare case of faulty heap fragment deallocationSverker Eriksson
after major GC. Can only be caused by distributed messages containing large maps. Bad map hashing will increase the risk.
2015-11-27Merge branch 'sverk/cpool_fetch-dc_list-fix' into maintSverker Eriksson
OTP-13147 * sverk/cpool_fetch-dc_list-fix: erts: Reduce alloc_SUITE:rbtree runtime for valgrind erts: Remove double free in efile_drv erts: Improve alloc_SUITE:migration test erts: Pass free mem and build type to alloc_SUITE tests erts: Fix snprintf in alloc_SUITE for windows erts: Workaround for strange crash on win64 in alloc_SUITE test code erts: Refactor alloc_SUITE to use NIFs instead of drivers erts: Add enif_getenv erts: Make key argument constant for erl_drv_{get|put}env erts: Add alloc_SUITE:migration erts: Add TEST allocator erts: Fix confusion of callbacks destroying_mbc() vs remove_mbc() erts: Fix resurrection of carriers from dc_list
2015-11-26Merge branch 'sverk/setnode-rename-bug/OTP-13076' into maintSverker Eriksson
* sverk/setnode-rename-bug/OTP-13076: erts: Fix bug in setnode/2 erts: Remove ERTS_PSD_DIST_ENTRY erts: Remove faulty ASSERT in erts_proc_*_refc
2015-11-26erts: Reduce alloc_SUITE:rbtree runtime for valgrindSverker Eriksson
2015-11-26erts: Remove double free in efile_drvSverker Eriksson
That double free is probably very seldom invoked as the port is already gone leading to free_data being called instead of file_async_ready.
2015-11-26erts: Improve alloc_SUITE:migration testSverker Eriksson
In the quest to improve code coverage in cpool_fetch
2015-11-26erts: Pass free mem and build type to alloc_SUITE testsSverker Eriksson
2015-11-26erts: Fix snprintf in alloc_SUITE for windowsSverker Eriksson
2015-11-26erts: Workaround for strange crash on win64 in alloc_SUITE test codeSverker Eriksson
For some reason setjmp() crash when having jmp_buf heap allocated but works when stack allocated.
2015-11-26erts: Refactor alloc_SUITE to use NIFs instead of driversSverker Eriksson