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.
|
|
=== OTP-18.2.4.0.1 ===
Changed Applications:
- erts-7.2.1.1
Unchanged Applications:
- asn1-4.0.1
- common_test-1.11.2
- compiler-6.0.2
- cosEvent-2.2
- cosEventDomain-1.2
- cosFileTransfer-1.2
- cosNotification-1.2
- cosProperty-1.2
- cosTime-1.2
- cosTransactions-1.3
- crypto-3.6.2
- debugger-4.1.1
- dialyzer-2.8.2
- diameter-1.11.1
- edoc-0.7.17
- eldap-1.2
- erl_docgen-0.4.1
- erl_interface-3.8.1
- et-1.5.1
- eunit-2.2.12
- gs-1.6
- hipe-3.14
- ic-4.4
- inets-6.1.1
- jinterface-1.6.1
- kernel-4.1.1
- megaco-3.18
- mnesia-4.13.2
- observer-2.1.1
- odbc-2.11.1
- orber-3.8
- os_mon-2.4
- ose-1.1
- otp_mibs-1.1
- parsetools-2.1.1
- percept-0.8.11
- public_key-1.1
- reltool-0.7
- runtime_tools-1.9.2
- sasl-2.6.1
- snmp-5.2.1
- ssh-4.2.1
- ssl-7.2
- stdlib-2.7
- syntax_tools-1.7
- test_server-3.9.1
- tools-2.8.2
- typer-0.9.10
- webtool-0.9
- wx-1.6
- xmerl-1.3.9
* tag 'OTP-18.2.4.0.1':
Updated OTP version
Prepare release
Conflicts:
OTP_VERSION
erts/vsn.mk
otp_versions.table
|
|
|
|
* rickard/rq-len/OTP-13201:
Fix testcase
Light weight statistics of run queue lengths
|
|
|
|
* 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/ethr-event-futex-wait-timeout/OTP-13420:
Fix premature timeouts for ethread events on Linux
|
|
* 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
|
|
|
|
|
|
|
|
No point in checking tmp_alloc instance 0
as any non-scheduler thread could race us.
|