Age | Commit message (Collapse) | Author |
|
* john/erts/OTP-18.3.4/minusminus_trapping/OTP-15371:
Optimize operator '--' and yield on large inputs
|
|
The removal set now uses a red-black tree instead of an array on
large inputs, decreasing runtime complexity from `n*n` to
`n*log(n)`. It will also exit early when there are no more items
left in the removal set, drastically improving performance and
memory use when the items to be removed are present near the head
of the list.
This got a lot more complicated than before as the overhead of
always using a red-black tree was unacceptable when either of the
inputs were small, but this compromise has okay-to-decent
performance regardless of input size.
Co-authored-by: Dmytro Lytovchenko <[email protected]>
|
|
Cherry-picked from 7c5fcd3f2701cbb614930682ac52ff75b9c26e6c
Error: Leak_DefinitelyLost
erts_alloc:230 (-> 0x52E54D) [erl_alloc.h]
port_task_alloc:154 (-> 0x52F3CA) [erl_port_task.c]
erts_port_task_alloc_p2p_sig_data:212 (-> 0x52F5D3) [erl_port_task.c]
erts_port_output:2147 (-> 0x4F6057) [io.c]
erts_port_command:4126 (-> 0x4FA10E) [io.c]
do_send:2200 (-> 0x4E4C64) [bif.c]
erl_send:2494 (-> 0x4E5E09) [bif.c]
process_main:1730 (-> 0x43ADA5) [beam_emu.c]
|
|
* rickard/timer-sid-bug/OTP-14548:
Fix scheduler id field in timers
|
|
maint-18
* sverker/r16/binary_to_atom-utf8-crash/ERL-474/OTP-14590:
erts: Fix crash in binary_to_atom/term for invalid utf8
|
|
* sverker/big-bxor-bug/ERL-450/OTP-14514:
erts: Fix bug in bxor of a big negative number
|
|
* sverker/prealloc-race-bug/OTP-14491:
erts: Fix bug in quick alloc
|
|
such as a sub-binary, of a correct utf8 string,
that ends in the middle of a character.
|
|
|
|
Wrong result for
(X bsl WS) bxor Y.
where
X is any negative integer
Y is any integer that does not require more words than X
WS is erlang:system_info(wordsize) or larger
Fix: The subtraction of 1 (for 2-complement conversion)
must be carried along all the way to the last words.
|
|
The effect of the race is that a pre-allocated memory block
is inserted last without updating tail.data.last, which will cause
all subsequent insertions to also fail to update tail.data.last.
Hence all pre-allocation for this quick alloc instance is leaked
for this thread and will fallback on erts_alloc.
|
|
* sverker/bin2term-zlib-bug/ERL-340/OTP-14159:
erts: Fix binary_to_term for compressed and zlib >= v1.2.9
|
|
maint-18
* egil/erts/fix_scheduler_suspend/ERL-94/PR-978/OTP-13425:
erts: Fix install of suspend handler
|
|
* rickard/thr-prgr-unmanaged-delay-bug/OTP-13869:
Fix erts_thr_progress_unmanaged_delay()
|
|
* rickard/drv-send-term-thr-bug/OTP-13866:
Fix thread calls to erl_drv_send_term()/erl_drv_output_term()
|
|
Problem: z_stream was incorrectly copied with memcpy
which just happened to work with zlib < v1.2.9.
Solution: Avoid copying z_stream.
|
|
Thread progress leader update did not cache current unmanaged index
when waiting for unmanaged threads. This caused
erts_thr_progress_unmanaged_delay() to stop working until a new leader
took over.
|
|
|
|
This commit makes sure to setup the suspend handler
to matter what +B option is given at the command line.
|
|
* rickard/erl-crash-dump-bug/OTP-13799:
Avoid segfault when printing slogan after crashdumping
|
|
* rickard/proc-tmo-bug/OTP-13798:
Fix race causing lost wakeup on receive-after timeout
|
|
|
|
|
|
in 'set' with 'write_concurrency'
when inserting default object causes table to grow
and the bucket to split is protected by same lock as the key.
|
|
Always free term after WUNLOCK_HASH
|
|
* sverker/erts/trap_exit-race/OTP-13452:
erts: Fix race for process_flag(trap_exit,true)
|
|
* rickard/proc-free-fix/OTP-13446:
Fix bad refc management of process struct
# Conflicts:
# erts/emulator/beam/erl_process.c
|
|
* rickard/port-sig-dropped-fix/OTP-13424:
Fix implementation of dropped signal to port
|
|
* rickard/last_calls/OTP-13418:
Unbreak process_info(Pid,last_calls)
|
|
and a concurrent exit signal.
We now actually guarantee that the process will not die
from exit signal *after* the call to process_flag(trap_exit,true)
has returned.
The race is narrow and probably quite hard to observe even if you
manage to provoke it. Has only been confirmed with the help of
return trace and a sleep in send_exit_signal().
Solution:
Seize status lock to prevent send_exit_signal() from reading
an old status (without TRAP_EXIT) and then writing PENDING_EXIT
after TRAP_EXIT has been set by process_flag_2().
|
|
|
|
|
|
|
|
This was accidentally removed in commit cd6903be0740db
|
|
One little (unsigned long) left behind.
|
|
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
|
|
|
|
Just mask away the high bits to get a more tolerant erlang:halt
that behaves the same on 32 and 64 bit architectures.
|
|
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).
|
|
|
|
* sverk/proc-lock-check-fix:
erts: Fix lock checker for process locks
|
|
* rickard/rq-state-bug/OTP-13298:
Fix bug causing run-queue mask to become inconsistent
|
|
Do lock order check *before* trying to seize lock... duh!
|
|
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
|
|
|