Age | Commit message (Collapse) | Author |
|
Since: R16B01
Symptom: A spawned process may get the same PID as an existing
process. The new process will "steal" the PID and make the old process
unreachable through the PID.
The problem also applies to port identities but has only been seen
for processes.
Conditions: SMP emulator with at least two scheduler threads. Rapid
spawning and termination of a large number of processes. A small
number of free slots in the process table will also increase the risk
for this bug.
Workaround: Use command line options "+P legacy" and "+Q legacy"
Cause: The race happens if a process terminates and gets stalled while
releasing its process table slot. The stall has to be so long (due to OS
preemptive scheduling most probably) for other schedluer threads to
consume all other free slots for newly spawn processes.
Fix: Write invalid-markers in the free-pid-table and do atomic exhange
operations in retry-loops to make sure each thread gets a unique PID.
|
|
|
|
* sverk/term_to_binary-memleak:
erts: Fix memory leak in term_to_binary/2 with compressed option
|
|
|
|
|
|
|
|
|
|
* rickard/+sfwi/OTP-11164:
erts: Add the +sfwi system flag
|
|
+sfwi Interval
Set scheduler forced wakeup interval. All run queues will be scanned
each Interval milliseconds. While there are sleeping schedulers in
the system, one scheduler will be woken for each non-empty run queue
found. An Interval of zero disables this feature, which also is the
default.
This feature has been introduced as a temporary workaround for lengthy
executing native code, and native code that do not bump reductions
properly in OTP. When these bugs have be fixed the +sfwi flag will
be removed.
|
|
* pan/happi/yield_in_term_to_binary:
Add testcase to stress extra_root
term_to_binary: Remove debug code and set production trap levels
Teach erl_gc:offset_rootset about extra_root
Teach external.c to handle reallocs before compression
Make all steps ofterm_to_binary work in chunks and yield
Make term_to_binary yield (trap).
OTP-11163
|
|
|
|
|
|
* rickard-sverker/carrier-migration/OTP-10279:
erts: Fix warning
erts: Fix management of redirected carrier to deallocate
|
|
* sverk/darwin-unlimited-select:
erts: Fix dynamic select for darwin
erts: Refactor unlimited select patch
erts: Fix bug in unlimited fd_set patch
Use _DARWIN_UNLIMITED_SELECT in erl_poll
|
|
* rickard/stale-driver-select/OTP-11084:
Fix bad fix of erts_stale_drv_select()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* lukas/erts/gc_stat_contention/OTP-10271:
erts: Update spec in preloaded to reflect sucess typing
|
|
|
|
* pan/unicode_error_wrong_offset:
Fix faulty rest on error in unicode:characters_to_list
OTP-11080
|
|
* pan/r16b01/system_monitor_long_schedule/OTP-11067:
Minor spelling correction
Add system_monitor of long_schedule
|
|
* pan/win_now_jumps:
Enable use of GetTickCoun64 when available
Intermediate code with lock on gettickcount()
Tmp
OTP-11146
|
|
* pan/raise_windows_version:
Raise the minimal supported Windows version
OTP-11145
|
|
Rewrite and extend of Happi's initial work
Extra_root to process structure to enable GC of state - Changed the
process structure to point to a separate struct, the struct also
contains a destructor function to allow for proper cleanup.
Rewrote encode_size_struct and enc_term to have internal versions with
reduction counters which will result in interrupt for later restart
when the counter reaches zero - removed the EWA_STACK from Happis
version and directly save the ESTACK's and WSTACK's in the above
mentioned struct (or array thereof) that are pointed out from the
process structure. The destructor will take care of the deallocation
in case of process death.
Added ESTACK and WSTACK macros to save and restore stack and to change
allocator, which makes the previously mentioned stack-save work.
Rewrote enc_term to not store pointers on the stack, and use one WSTACK
for commands etc and another ESTACK for Eterms - Slightly different than
Happis version to make halfword code simpler.
Rewrote encode_size_struct2 so that it does not store pointers on the
stack, also switched to ESTACK instead of WSTACK, this also handles
halfword correctly.
Added interfaces for chunkwise compression, that are
used from term_to_binary/2 when the compressed option is given.
|
|
|
|
* sverk/pwrite-bug:
kernel: Fix bug in file:pwrite for large data sets
|
|
* sverk/core-chmodding:
system: Prevent z_SUITE from changing the timestamp on core files
|
|
* rickard/stale-driver-select/OTP-11084:
Fix crash when reporting stale driver select
|
|
* rickard-sverker/carrier-migration/OTP-10279:
erts: Document the +M<S>acul command line argument
erts: Carrier pool information in allocator information
erts: Use carrier pool for migration of carriers
erts: Implement test case for carrier pool
erts: Implement carrier pool
erts: Fix type errors in info functions
erts: Use Uint64 for call counts
erts: Fix failing testcase alloc_SUITE:rbtree
erts: Rename allocator aoffcbf to aoffcaobf
erts: Remove unnecessary flag arguments in allocators
erts: Remove SBMBC allocator
erts: Add test for add_mbc and remove_mbc callbacks
erts: Fix deallocation in removed carrier
erts: Change naive list to rb-tree of carriers in AOFF allocator
erts: Prepare aoff allocator for carrier migration
erts: Make carrier header sizes customizable
erts: Add "bestfit within carrier" for aoff allocator (aoffcbf)
|
|
|
|
That is, include information about carrier pool in result returned from
erlang:system_info({allocator,allocator_sizes, _}).
|
|
|
|
Make sure the fd-sets (read and write) are of equal size.
|
|
|
|
|
|
|
|
|
|
|
|
* lukas/erts/cerl_gdb_extension/OTP-11130:
Add rcore and rgdb to cerl
|
|
These commands invoke gdb directly instead of going through emacs
|
|
* lukas/r16b01/testcase-fixes/OTP-11138:
Do not fail if there is no variables file
Run iter max ports on a seperate vm with smaller port table
Set max ports for slave node
Decrease sleep timer
|
|
* nox/erl_eval-receive/OTP-11137:
Updated primary bootstrap for erl_eval
Added preloaded prim_eval
Fix receive support in erl_eval with a BEAM module
|
|
and add documentation in erts_alloc
|
|
A cleanup after SBMBC was removed.
|
|
|