Age | Commit message (Collapse) | Author |
|
* maint:
Change rwlock to rlock where possible
|
|
* lukas/erts/nodes_rwlock_contentions/OTP-11097:
Change rwlock to rlock where possible
|
|
Having rwlock could cause high unneccesary contention on the
dist table when calling erlang:nodes() from many schedulers at
the same time.
|
|
* maint:
Repeat flush loop at timeout intervals
|
|
* lukas/erts/win32_io_flush_hangs/OTP-11096:
Repeat flush loop at timeout intervals
|
|
|
|
* nox/wide-chars/OTP-11088:
Support wide characters in the shell through wcwidth()
Fix bogus DEBUGLOG() incantations in ttsl_drv
|
|
|
|
* sverk/fix-alloc-fixes:
erts: Remove unnecessary utf8 analysis step in external decoding
erts: Fix locking order violation for allocation wrappers
erts: Change locking order for "port_table" and "port_sched_lock"
erts: Adjust sizes for fix allocator
erts: Fix unabused bug in fixed allocation
erts: Fix benign size-bug for fix-allocators MONITOR_SH and NLINK_SH
erts: Refactor in new struct ErtsAllctrFixDDBlock_t
OTP-11085
|
|
|
|
* nox/fix-warnings/OTP-11086:
Fix some sign warnings found with Clang
Fix a shift/reduce conflicts warning in icparse
Fix two deprecation warnings in com.ericsson.otp.ic.Environment
Define matherr only on platforms where it is used
Properly declare _sigaction on Darwin
Properly mark Uint literals as unsigned in big.c
Do not use -mdynamic-no-pic on Darwin
|
|
* egil/opt-list_to_binary/OTP-11082:
erts: Use fast path for list_to_binary([Bin]) case
|
|
A common case is to wrap an argument to list_to_binary in a list
to ensure conversion can happen even though the argument may already
be a binary. Use fast path for this case.
|
|
|
|
|
|
|
|
|
|
There is one remaining bug where ttsl_drv's state ends up inconsistent
with the terminal own state; when a wide character is entered on the
last column of the terminal.
Reported-by: Loïc Hoguin
|
|
|
|
* maint:
Fix src/dest overlap in ttsl driver
fix valgrind error in erts/emulator/drivers/unix/ttsl_drv.c
|
|
|
|
Running some valgrind memory checking showed the error below:
==18040== Thread 6:
==18040== Source and destination overlap in memcpy(0xf3f3f04, 0xf3f3f08, 52)
==18040== at 0x4C2CFA0: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==18040== by 0x5CF527: del_chars (ttsl_drv.c:845)
==18040== by 0x5CED5E: ttysl_from_erlang (ttsl_drv.c:658)
==18040== by 0x4982E3: erts_write_to_port (io.c:1235)
==18040== by 0x49A2BD: erts_port_command (io.c:2223)
==18040== by 0x48C054: do_send (bif.c:1962)
==18040== by 0x48CB6E: erl_send (bif.c:2162)
==18040== by 0x566599: process_main (beam_emu.c:1665)
==18040== by 0x4B1A95: sched_thread_func (erl_process.c:4834)
==18040== by 0x6075E2: thr_wrapper (ethread.c:106)
==18040== by 0x5560E99: start_thread (pthread_create.c:308)
This occurred on Linux using R15B01 while the shell was emitting a prompt,
but the same problem is still present in R16B.
Change the memcpy on line 845 of ttsl_drv.c to memmove as valgrind
suggests. After the change, verify with valgrind that the error no longer
occurs.
|
|
|
|
* maint-r16:
Prepare release
Prepare release
Do not count offline run-queues as empty
Prepare release
Prevent loss of objects after the extension marker
Don't lose the extension mark for object set parameters
Conflicts:
erts/vsn.mk
|
|
To ensure that 'master' compiles when we merge 'maint' to it,
regardless of which encoding is default in 'master', all source
files with non-ascii characters *must* have the encoding specified.
|
|
|
|
Faulty utf8 atoms are rejected anyway later when the atom is created.
|
|
Some query functions in erl_alloc_util.c lock the allocator mutex
and then use erts_printf that in turn may call the sys allocator
through the wrappers. To avoid breaking locking order these
query functions first "pre-locks" all allocator wrappers.
|
|
Keep order between the two but move them before all the allocation locks.
Old order violated for "port_table" lock in ptab_list_bif_engine().
|
|
|
|
Conflicts:
erts/vsn.mk
|
|
* egil/r16/fix-delete_element/OTP-10932:
erts: Refactor erlang:insert_element/3 for clarity
erts: Fix copy error in erlang:delete_element/2
|
|
* rickard/sys-flags/OTP-11000:
Fix `+sws' and `+swt' system flags
|
|
* rickard/thr_prgr_later_op/OTP-10994:
Make port close not be delayed
Be less eager requesting wakeup for cleanup jobs
|
|
Drivers are dereferenced when the port is completely gone, in the operation
scheduled with erts_schedule_thr_prgr_later_op. If we use
erts_schedule_thr_prgr_later_cleanup_op, it may not happen
for a long time and the driver can not be unloaded.
We can not dereference the driver before the thread_progress_later
thing, because references to the driver may exist in other threads, so
the unloading of the driver may free locks held by other schedulers and
whatnot.
|
|
|
|
|
|
Make sure each fix allocator type always allocate the right fixed size.
|
|
Bug will (as it seems) only result in faulty statistics.
|
|
to replace macro constant ERTS_ALCU_DD_FIX_TYPE_OFFS.
|
|
* sverk/meta-trace-leak:
erts: Fix memleak related to meta tracing
OTP-10997
|
|
|
|
* lukas/erts/efile_delayed_write_fix/OTP-10984:
Do driver_deq in worker threads instead of async_ready
|
|
|
|
Doing it in async_ready was needed before the pdl was introduced, but
now with the pdl the deq no longer needs the port lock to protect it.
This was not an issue when async_ready was called in the worker thread,
but now (R15B) that it is signalled back to the scheduler, some very nasty
race conditions could occur when using driver_timer and async jobs.
|
|
|
|
Off-by-one error in element copy.
|
|
|
|
spells __NetBSD__ correctly.
|
|
* egil/fix-mseg_dealloc-arguments/OTP-10912:
erts: Fix refactor error in mseg
|