aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2016-04-17clean up FP exception code in sys_float.cMikael Pettersson
This performs a number of cleanups in the FP exception code: - inline the body of unmask_fpe_conditional() in its only caller, then delete the duplicated and identical definitions of it - start the big processor-specific block with a comment describing the two functions that must be defined, then delete redundant comments at all the mask_*() functions - add a comment before fpe_sig_action() explaining exactly what processor-specific action is required of it - flatten #ifdef nesting in fpe_sig_action() - move common code in the x86 unmask_fpe() and erts_restore_fpu() function into a subroutine - minor tweaks: drop a redundant L suffix on a 0, add a comment after an #else, bump the size of a debug buffer, There should be no change in behaviour from these changes.
2016-03-09erts: Fix wobbling tests in nif_SUITESverker Eriksson
No point in checking tmp_alloc instance 0 as any non-scheduler thread could race us.
2016-03-08erts: Fix alloc_SUITE:rbtree and migration for win64Sverker Eriksson
One little (unsigned long) left behind.
2016-03-08test: do not divide by zeroDan Gudmundsson
2016-03-01Merge branch 'sverk/halt-INT_MIN' into maintSverker Eriksson
OTP-13251 * sverk/halt-INT_MIN: erts: Make erlang:halt() accept bignums as Status erts: Change erl_exit into erts_exit kernel: Remove calls to erl_exit
2016-02-25Merge branch 'egil/heart-callback/OTP-13250' into maintBjörn-Egil Dahlberg
2016-02-24erts: Make erlang:halt() accept bignums as StatusSverker Eriksson
Just mask away the high bits to get a more tolerant erlang:halt that behaves the same on 32 and 64 bit architectures.
2016-02-24erts: Change erl_exit into erts_exitSverker Eriksson
This is mostly a pure refactoring. Except for the buggy cases when calling erlang:halt() with a positive integer in the range -(INT_MIN+2) to -INT_MIN that got confused with ERTS_ABORT_EXIT, ERTS_DUMP_EXIT and ERTS_INTR_EXIT. Outcome OLD erl_exit(n, ) NEW erts_exit(n, ) ------- ------------------- ------------------------------------------- exit(Status) n = -Status <= 0 n = Status >= 0 crashdump+abort n > 0, ignore n n = ERTS_ERROR_EXIT < 0 The outcome of the old ERTS_ABORT_EXIT, ERTS_INTR_EXIT and ERTS_DUMP_EXIT are the same as before (even though their values have changed).
2016-02-23Do not wait for main lock when looking up process not runningRickard Green
2016-02-22Merge branch 'sverk/proc-lock-check-fix' into maintSverker Eriksson
* sverk/proc-lock-check-fix: erts: Fix lock checker for process locks
2016-02-19Merge branch 'rickard/rq-state-bug/OTP-13298' into maintRickard Green
* rickard/rq-state-bug/OTP-13298: Fix bug causing run-queue mask to become inconsistent
2016-02-18erts: Fix lock checker for process locksSverker Eriksson
Do lock order check *before* trying to seize lock... duh!
2016-02-16erts: Add BIF erts_internal:system_check/1Björn-Egil Dahlberg
This commit implements erts_internal:system_check(schedulers) with the intent of a basic responsiveness test check of the schedulers.
2016-02-12erts: Fix wobbling test failure in nif_SUITESverker Eriksson
ResA may have been GC'd after its last use.
2016-02-08Merge branch 'sverk/hipe-line-table-bug/OTP-13282' into maintSverker Eriksson
* sverk/hipe-line-table-bug/OTP-13282: erts: Fix bug concerning line information for hipe modules
2016-02-08Merge branch 'sverk/proc-exiting-timer-race/OTP-13245' into maintSverker Eriksson
* sverk/proc-exiting-timer-race/OTP-13245: erts: Fix race between receive timeout and exit signal
2016-02-04Fix bug causing run-queue mask to become inconsistentRickard Green
2016-02-03Merge branch 'lukas/erts/enomem_no_abort/OTP-13292' into maintLukas Larsson
* lukas/erts/enomem_no_abort/OTP-13292: erts: When erts_alloc fails, the emulator no longer aborts
2016-02-02Merge branch 'rickard/monotonic-time-improvements/OTP-13222' into maintRickard Green
* rickard/monotonic-time-improvements/OTP-13222: Use nano second time unit in tracing
2016-02-02Use nano second time unit in tracingRickard Green
2016-02-02Merge branch 'margnus1/bs_unit_fix' into maintZandra
* 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
2016-02-02Merge branch 'rickard/rq-len/OTP-13201' into maintRickard Green
* rickard/rq-len/OTP-13201: Fix testcase
2016-02-02Merge branch 'rickard/tcp-accept-tmo-bug/OTP-13254' into maintRickard Green
* rickard/tcp-accept-tmo-bug/OTP-13254: Fix inet driver multi timers using new time API
2016-02-02Merge branch 'rickard/monotonic-time-improvements/OTP-13222' into maintRickard Green
* 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
2016-01-28erts: Fix bug concerning line information for hipe modulesSverker Eriksson
Line table was left uninitialized for hipe (stub) modules causing process_info(OtherPid, current_location) to crash.
2016-01-27erts: When erts_alloc fails, the emulator no longer abortsLukas Larsson
2016-01-27Merge branch 'theom/freebsd-sendfile-patch-2/OTP-13271' into maintLukas Larsson
* theom/freebsd-sendfile-patch-2/OTP-13271: erts: Fix sendfile:ing of large files on FreeBSD
2016-01-27erts: Fix sendfile:ing of large files on FreeBSDJP
If the file was larger than the OS send buffer the call would fail before this patch.
2016-01-27Merge branch 'mikpe/erts/efile-write-compressed-error/OTP-13270' into maintLukas Larsson
* mikpe/erts/efile-write-compressed-error/OTP-13270: efile_drv: logic error in compressed file write
2016-01-22Merge branch 'rickard/test-fix' into maintRickard Green
* 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
2016-01-22Fix testcaseRickard Green
2016-01-21Introduce time management in native APIsRickard Green
2016-01-21Fix inet driver multi timers using new time APIRickard Green
2016-01-20Introduce time warp safe replacement for safe_fixed optionRickard Green
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.
2016-01-20Introduce time warp safe trace timestamp formatsRickard Green
New timestamp options for trace, sequential trace, and system profile: - monotonic_timestamp - strict_monotonic_timestamp
2016-01-20Merge branch 'vinoski/check-awdp-esdp' into maintRickard Green
* vinoski/check-awdp-esdp: Fix dirty scheduler check in handle_aux_work
2016-01-19Merge branch 'sverk/armata-memset-bug' into maintSverker Eriksson
* sverk/armata-memset-bug: erts: Workaround memset bug in test case
2016-01-18Fix dirty scheduler check in handle_aux_workSteve Vinoski
2016-01-18erts: Fix race between receive timeout and exit signalSverker Eriksson
Must re-read 'state' after seizing proc locks as other thread may have set EXITING.
2016-01-14Merge branch 'vinoski/dirty-sched-no-aux-work/OTP-13236' into maintRickard Green
* vinoski/dirty-sched-no-aux-work/OTP-13236: Do not allow aux work on dirty schedulers
2016-01-11erts: Workaround memset bug in test caseSverker Eriksson
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.
2015-12-30Merge branch 'rickard/rq-len/OTP-13201' into maintRickard Green
* rickard/rq-len/OTP-13201: Light weight statistics of run queue lengths
2015-12-30Light weight statistics of run queue lengthsRickard Green
- statistics(total_run_queue_lengths) - statistics(run_queue_lengths) - statistics(total_active_tasks) - statistics(active_tasks) Conflicts: erts/emulator/beam/erl_process.c
2015-12-30Fix HL timer hard debug implementationRickard Green
2015-12-30Skip time_SUITE:timestamp on timewarp testRickard Green
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-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-11Merge branch 'sverk/setnode-rename-bug/OTP-13076' into maintSverker Eriksson
* sverk/setnode-rename-bug/OTP-13076: erts: Fix correct node name for DTRACE