Age | Commit message (Collapse) | Author |
|
* lukas/erts/fix_signalhandler_errno_restore/OTP-13868:
erts: Fix child setup signal hander bug
|
|
When running the signal handler, the errno has to be restored
to its original value, otherwise code running in the same thread
may misbehave.
|
|
* rickard/premature-timeout/OTP-13698:
Improve accuracy of timeouts using premature timeouts
|
|
|
|
* lukas/erts/spawn_driver_relative_cd/ERL-175/OTP-13733:
erts: Add port_SUITE:cd invalid dir testcase
erts: Fix spawn driver with relative cd option
erts: Fix HARD_DEBUG printouts in erl_child_setup
erts: Improve error printouts in erl_child_setup
Conflicts:
erts/emulator/test/port_SUITE.erl
|
|
|
|
|
|
|
|
Add prints to stderr with a small description of the error
so that errors will be easier to debug. Also if a protocol
error is detected, erl_child_setup will abort instead of exit.
|
|
Nice to have for core dump inspection when stderr -> /dev/null.
|
|
Improve accuracy of timeouts using a premature timeout then
return to sleep with a shorter timeout just before requested
timeout. This approach is only used on certain platforms where
we know it improves the accuracy of the timeouts, e.g. MacOS X.
|
|
for 9f779819f6bda734c595.
|
|
that need to be enqueued.
|
|
Symptom: open_port() succeeds, port program never starts but instead
seem to terminate with exit_status 150 (EINVAL+128).
When: If the command payload buffer (including the entire environment)
for the port program is between 1 to 4 bytes above the pipe capacity,
which is 65536 bytes on newer Linux, but can be as low as 4096 on older
32-bit Linux.
Since: OTP-19.0-rc1.
|
|
* rickard/mach-clock-fix/OTP-13686:
Fix mach clock usage on Sierra
|
|
|
|
|
|
|
|
A fix for running 19.0-rc2 on FreeBSD with HiPE enabled.
* erl_mmap.h: disregard MAP_NORESERVE for FreeBSD
MAP_NORESERVE is undefined in FreeBSD 10.x and later.
This is to enable 64bit HiPE experimentally on FreeBSD.
Note that on FreeBSD MAP_NORESERVE was "never implemented"
even before 11.x (and the flag does not exist in /usr/src/sys/vm/mmap.c
of 10.3-STABLE r301478 either), and HiPE was working on OTP 18.3.3,
so mandating MAP_NORESERVE on FreeBSD might not be needed.
See the following message on how MAP_NORESERVE was treated on FreeBSD:
<http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150202/122958.html>
* erl_mmap.c: disable MAP_NORESERVE for FreeBSD
* See also <https://github.com/erlang/otp/pull/925/commits/b02ce940c8738785ad018c9f758ca0d05d256bbb>
|
|
Similar bug that was fixed for unix in 7bbb207b30360c60fb99653.
|
|
|
|
and make erts_mmap unavailable at compile time
if not supported.
|
|
by (only) moving around stuff in the file.
in order to make it easier to ifdef away
all erts_mmap_* if not supported.
|
|
will now return
[{instance,0,[{segments_size,9961472,9961472,11010048}]},
{instance,1,[{segments_size,6291456,6291456,6815744}]},
{instance,2,[{segments_size,524288,524288,786432}]},
{instance,3,[{segments_size,1048576,1048576,1835008}]},
{instance,4,[{segments_size,0,0,262144}]}]
and not just empty lists.
|
|
from {allocator,mseg_alloc} to {allocator,erts_mmap}
|
|
* mikpe/fp-exceptions-cleanups/PR-1019/OTP-13531:
clean up FP exception code in sys_float.c
|
|
When FP exceptions are used, matherr() forces a fake FP exception,
which is interpreted as an error by the checking code after a math
routine call. This is wrong for several reasons:
- it's not necessary for error checking: when FP exceptions aren't
used, matherr() is a stub and no information is derived from it
being called
- it's not necessary for FPU maintenance: the FPU only needs to be
reprogrammed after an actual FP exception
- it causes false negatives: matherr() may be called even though
Erlang doesn't consider the case to be an error (exp() and pow()
underflows on Solaris for instance); with FP exceptions enabled
they are incorrectly considered errors
The fix is to remove all FP exception related code from matherr().
|
|
|
|
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.
|
|
that uses its own super carrier (erts_exec_mmapper)
to guarantee low addressed and executable memory (PROT_EXEC).
Currently only used on x86_64 that needs low memory
for HiPE/AMD64's small code model.
By initializing erts_exec_mapper early we secure
its low memory area before erts_literal_mmapper might
steal it.
|
|
to prepare for hipe native code allocation.
|
|
Make the callbacks more general to be usable for any allocator
that that uses its own ErtsMemMapper.
|
|
Reduce main carrier size
and number of free descriptors.
|
|
* henrik/update-copyrightyear:
update copyright-year
|
|
* egil/erts/tracing-beam-lttng/OTP-10282:
erts: Don't use ratio in carrier lttng tracepoints
Add lttng testcases
erts: Extend erlang:system_info/1 with lttng
Refactor and fix dtrace define in erl_message
erts: Add lttng tracepoints for async pool queue
erts: Add lttng tracepoints for drivers
erts: Add lttng tracepoints for scheduler events
erts: Add lttng tracepoints for memory carriers
erts: Update lttng-wrapper with mfa conversion
erts: Teach lttng to configure and build system
|
|
* driver_event
* driver_flush
* driver_finish
* driver_init
* driver_output
* driver_outputv
* driver_process_exit
* driver_ready_async
* driver_ready_input
* driver_ready_output
* driver_start
* driver_stop
* driver_stop_select
* driver_timeout
|
|
* lukas/erts/inline_tagvaldef/OTP-13440:
erts: inline tag_val_def
|
|
The tag_val_def function was called and multiple switch statements
had to be traversed in term.c, and then a big switch in the calling
code to branch on the term types. By inlining the switches are
merged by the compiler and a lot fewer branches have to be taken.
Benchmarks show that this increases performance of enc_term by as
much as 10%.
|
|
* lukas/erts/fix_scheduler_suspend/ERL-94/PR-978/OTP-13425:
erts: Fix install of suspend handler
Conflicts:
erts/emulator/sys/unix/erl_unix_sys.h
erts/emulator/sys/unix/sys.c
|
|
Floating-point exception support on MacOS X has never been especially
reliable, and has therefore been disabled by default for a long time.
The fpe support is now broken.
Therefore, take out the unnecessary test for modern mcontext in
configure (whatever that means) and the associated code in sys_float.c.
Add #error directives to sys_float.c to make it clear that
fpe is not supported.
It seems to risky to mess with the mess of #ifdef's, so we will
not attempt to remove all fpe support code for MacOS X.
|
|
|
|
* sverk/literal-alloc-polish:
erts: Add emulator flag +MIscs for literal super carrier size
erts: Refactor init of erts_literal_mmapper
erts: Make literal_alloc documented and configurable
|
|
* sverk/master/halt-INT_MIN:
erts: Make erlang:halt() accept bignums as Status
erts: Change erl_exit into erts_exit
kernel: Remove calls to erl_exit
|
|
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
|
|
|
|
|
|
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).
|
|
|
|
Except it cannot be disabled and cannot be multi-threaded.
The bit-vector 'erts_literal_vspace_map' on 32-bit is currently only
protected by the literal allocator mutex. We could allow multiple
instances on 64-bit (I think), but what would be the point?
|
|
This commit makes sure to setup the suspend handler
to matter what +B option is given at the command line.
|