Age | Commit message (Collapse) | Author |
|
This commit implements erts_internal:system_check(schedulers) with the
intent of a basic responsiveness test check of the schedulers.
|
|
* sverk/hipe-line-table-bug/OTP-13282:
erts: Fix bug concerning line information for hipe modules
|
|
* sverk/proc-exiting-timer-race/OTP-13245:
erts: Fix race between receive timeout and exit signal
|
|
* lukas/erts/enomem_no_abort/OTP-13292:
erts: When erts_alloc fails, the emulator no longer aborts
|
|
* rickard/monotonic-time-improvements/OTP-13222:
Use nano second time unit in tracing
|
|
|
|
* margnus1/bs_unit_fix:
hipe: Fix signed compares of unsigned sizes
beam: Fix overflow bug in i_bs_add_jId
hipe: Add tests for bad bit syntax float sizes
Add a case testing the handling of guards involving binaries
Add some more binary syntax construction tests
hipe: Guard against enormous numbers in ranges
hipe: Fix constructing huge binaries
hipe: Fix binary constructions failing with badarith
Add missing corner-case to bs_construct_SUITE
hipe: Allow unsigned args in hipe_rtl_arith
hipe: test unit size match in bs_put_binary_all
hipe: test unit size match in bs_append
Fix hipe_rtl_binary_construct:floorlog2/1
OTP-13272
|
|
* rickard/rq-len/OTP-13201:
Fix testcase
|
|
* rickard/tcp-accept-tmo-bug/OTP-13254:
Fix inet driver multi timers using new time API
|
|
* 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
|
|
Line table was left uninitialized for hipe (stub) modules
causing process_info(OtherPid, current_location) to crash.
|
|
|
|
* 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
|
|
|
|
Must re-read 'state' after seizing proc locks as other thread may
have set EXITING.
|
|
* 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.
|
|
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.
|
|
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.
|
|
* 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()
|