Age | Commit message (Collapse) | Author |
|
|
|
rickard/port-emigrate-bug/maint/OTP-12084
* rickard/port-emigrate-bug/OTP-12084:
Verify run-queue asserts
Fix emigrate bug in erts_port_task_schedule()
Conflicts:
erts/emulator/beam/erl_port_task.c
|
|
|
|
While current run-queue lock is unlocked in the call to
erts_check_emigration_need() from erts_port_task_schedule() the
port can be migrated to another run-queue by another thread.
The code in erts_port_task_schedule() needs to check if this
has occurred when returning from erts_check_emigration_need(), and
if so respect the migration decision. When this was not done,
the thread calling erts_port_task_schedule() held the wrong
run-queue lock which caused invalid updates of the port task queue.
This bug was automatically fixed by the rewrites in the branch
rickard/r16b/port-optimizations-fixes/OTP-10336 (commit
56cef897ca3ad2377e34a6ea5800a54a28cbeb6e) introduced in erts-5.10
and do not effect erts versions after that.
|
|
The counter for the amount of outstanding data in the port queue
became inconsistent when aborting nosuspend-signals in
erts_port_task_schedule(). This since the counter was subtracted
by the data size of the signal although the data size had never
been added to it. This inconsistency caused the port queue to
remain in a busy state forever.
|
|
* paulgray/dtrace_snprintf_fix/OTP-11816:
Fix DTrace/SystemTap-related formatting
|
|
Thanks to Michał Ptaszek for bringing this embarrassing formatting error to
my attention. Many DTrace/SystemTap trace strings are incorrectly
truncated at 4/8 bytes, depending on the CPU word size. This patch expands
the work from commit d032e097 by zheng siyao.
Michał's report to the erlang-bugs list can be found at:
http://erlang.org/pipermail/erlang-bugs/2014-March/004250.html
Conflicts:
erts/emulator/beam/beam_emu.c
erts/emulator/beam/copy.c
erts/emulator/beam/dist.c
erts/emulator/beam/erl_async.c
erts/emulator/beam/erl_bif_port.c
erts/emulator/beam/erl_port_task.c
erts/emulator/beam/erl_process.c
erts/emulator/beam/io.c
|
|
* paulgray/dtrace_snprintf_fix/OTP-11816:
Pass full strings to DTrace probes
|
|
Whenever string is passed as an argument to a DTrace probe, its length
should be properly computed. Until now in order to get length of the
input buffer size_of(char *) was used - which evalutes to 4 or 8
(depending on the architecture). To get a proper length,
size_of(DTRACE_CHARBUF_NAME(buffer_name)) should be used.
|
|
This port has support for both non-smp and smp.
It contains a new way to do io checking in which erts_poll_wait
receives the payload of the polled entity. This has implications
for all linked-in drivers.
|
|
|
|
begin_port_cleanup can be called from a non-scheduler thread, this
means that there is no esdp available and thus erts_schedule_thr_prgr_later_op
segfaults.
|
|
* pan/r16b01/system_monitor_long_schedule/OTP-11067:
Minor spelling correction
Add system_monitor of long_schedule
|
|
* rickard/stale-driver-select/OTP-11084:
Fix crash when reporting stale driver select
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
* pan/fix-compiler-warnings-clang-and-new-gcc:
Fix compiler warnings from GCC 4.7.1 on ARCH Linux
Fix clang compiler warnings on FreeBSD in erts
|
|
|
|
|
|
|
|
|
|
|
|
rickard/r16/port-optimizations/OTP-10336
* rickard/port-optimizations/OTP-10336:
Change annotate level for emacs-22 in cerl
Update etp-commands
Add documentation on communication in Erlang
Add support for busy port message queue
Add driver callback epilogue
Implement true asynchronous signaling between processes and ports
Add erl_drv_[send|output]_term
Move busy port flag
Use rwlock for driver list
Optimize management of port tasks
Improve configuration of process and port tables
Remove R9 compatibility features
Use ptab functionality also for ports
Prepare for use of ptab functionality also for ports
Atomic port state
Generalize process table implementation
Implement functionality for delaying thread progress from unmanaged threads
Conflicts:
erts/doc/src/erl_driver.xml
erts/doc/src/erlang.xml
erts/emulator/beam/beam_bif_load.c
erts/emulator/beam/beam_bp.c
erts/emulator/beam/beam_emu.c
erts/emulator/beam/bif.c
erts/emulator/beam/copy.c
erts/emulator/beam/erl_alloc.c
erts/emulator/beam/erl_alloc.types
erts/emulator/beam/erl_bif_info.c
erts/emulator/beam/erl_bif_port.c
erts/emulator/beam/erl_bif_trace.c
erts/emulator/beam/erl_init.c
erts/emulator/beam/erl_message.c
erts/emulator/beam/erl_port_task.c
erts/emulator/beam/erl_process.c
erts/emulator/beam/erl_process.h
erts/emulator/beam/erl_process_lock.c
erts/emulator/beam/erl_trace.c
erts/emulator/beam/export.h
erts/emulator/beam/global.h
erts/emulator/beam/io.c
erts/emulator/sys/unix/sys.c
erts/emulator/sys/vxworks/sys.c
erts/emulator/test/port_SUITE.erl
erts/etc/unix/cerl.src
erts/preloaded/ebin/erlang.beam
erts/preloaded/ebin/prim_inet.beam
erts/preloaded/src/prim_inet.erl
lib/hipe/cerl/erl_bif_types.erl
lib/kernel/doc/src/inet.xml
lib/kernel/src/inet.erl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* maint:
ssl: Adopt test case to not take so long
Fix bug in erts_port_task_schedule()
Use reduction limit in order to determine when to do wakeup
Conflicts:
erts/emulator/beam/erl_port_task.c
erts/emulator/beam/erl_process.c
|
|
* rickard/port-sched-bug/OTP-10556:
Fix bug in erts_port_task_schedule()
|
|
|
|
|
|
|
|
|
|
|
|
Add probes to the virtual machine, except (mostly) the efile_drv.c
driver and other file I/O-related source files.
|
|
|
|
The common run-queue implementation is removed since it is unused,
untested, undocumented, unsupported, and only complicates the code.
A spinlock used by the run-queue management sometimes got heavily
contended. This code has now been rewritten, and the spinlock
has been removed.
|
|
The ERTS internal system block functionality has been replaced by
new functionality for blocking the system. The old system block
functionality had contention issues and complexity issues. The
new functionality piggy-backs on thread progress tracking functionality
needed by newly introduced lock-free synchronization in the runtime
system. When the functionality for blocking the system isn't used
there is more or less no overhead at all. This since the functionality
for tracking thread progress is there and needed anyway.
|