Age | Commit message (Collapse) | Author |
|
* rickard/monotonic-time-improvements/OTP-13222:
Introduce time management in native APIs
Introduce time warp safe replacement for safe_fixed option
Introduce time warp safe trace timestamp formats
|
|
* theom/freebsd-sendfile-patch-2/OTP-13271:
erts: Fix sendfile:ing of large files on FreeBSD
|
|
If the file was larger than the OS send buffer the call
would fail before this patch.
|
|
* mikpe/erts/efile-write-compressed-error/OTP-13270:
efile_drv: logic error in compressed file write
|
|
* rickard/test-fix:
Fix HL timer hard debug implementation
Fix stack alignment problem in ethread test on arm
Skip time_SUITE:timestamp on timewarp test
|
|
|
|
The new time warp safe option is safe_fixed_monotonic_time which
gives erlang:monotonic_time().
The safe_fixed option was also slightly changed. It now gives
erlang:timestamp() instead of erlang:now(). This has however
not been documented, so it is considered a compatible change.
The above effects both ets, and dets.
This commit also include the bugfix OTP-13239 for
dets:info(Tab, safe_fixed). The timestamp in the result returned
by dets:info(Tab, safe_fixed) was unintentionally broken as a
result of the time API rewrites in OTP 18.0.
|
|
New timestamp options for trace, sequential trace, and
system profile:
- monotonic_timestamp
- strict_monotonic_timestamp
|
|
* vinoski/check-awdp-esdp:
Fix dirty scheduler check in handle_aux_work
|
|
* sverk/armata-memset-bug:
erts: Workaround memset bug in test case
|
|
|
|
* vinoski/dirty-sched-no-aux-work/OTP-13236:
Do not allow aux work on dirty schedulers
|
|
memset seen to fail with values larger than 255
on (armata) 32-bit ARM Debian
with EGLIBC 2.13-38+rpi2+deb7u8
and gcc 4.6.3-14+rpi1.
|
|
* rickard/rq-len/OTP-13201:
Light weight statistics of run queue lengths
|
|
- statistics(total_run_queue_lengths)
- statistics(run_queue_lengths)
- statistics(total_active_tasks)
- statistics(active_tasks)
Conflicts:
erts/emulator/beam/erl_process.c
|
|
|
|
|
|
|
|
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.
|
|
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).
|
|
* erts/emulator/hipe/hipe_x86_signal.c:
add FreeBSD sigaction code, based on the Darwin (OS X) code
|
|
* sverk/setnode-rename-bug/OTP-13076:
erts: Fix correct node name for DTRACE
|
|
broken by 949de78331b9c4ecb9.
|
|
* sverk/dist-ctrl-msg-overflow:
erts: Fix faulty cleanup when receiving broken dist msg
|
|
Bug introduced in ce8279d6a48d41f9.
Thank you valgrind.
|
|
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
|
|
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.
|
|
that could cause the static factory to overflow
Fix: Introduce a new factory mode FACTORY_TMP
|
|
|
|
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
|
|
* mikpe/hipe_x86_signal-musl-support:
hipe_x86_signal: add support for musl libc
OTP-13159
|
|
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.
|
|
* sverk/rare-gc-map-overflow/OTP-13146:
erts: Fix rare case of faulty heap fragment deallocation
|
|
* rickard/erts-print/OTP-13150:
Remove ERTS_PRINT_INVALID from erts_print()
|
|
ERTS_PRINT_INVALID prevented file descriptor 0 to be used which
could cause an empty crash dump.
|
|
after major GC.
Can only be caused by distributed messages containing large maps.
Bad map hashing will increase the risk.
|
|
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
|
|
* 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
|
|
|
|
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.
|
|
In the quest to improve code coverage in cpool_fetch
|
|
|
|
|
|
For some reason setjmp() crash when having jmp_buf heap allocated
but works when stack allocated.
|
|
|
|
to read OS environment variables in a safe and portable way.
|
|
* egil/18/fix-maps-binary_to_term/OTP-13125:
erts: More testcases for map binary_to_term/1
erts: Fix maps decode in erlang:binary_to_term/1
|
|
|
|
Decoding a term with a large (HAMT) map in an small (FLAT) map could cause
a critical error if the external format was not produced by beam.
|
|
|