Age | Commit message (Collapse) | Author |
|
This commit replaces the old memory instrumentation with a new
implementation that scans carriers instead of wrapping
erts_alloc/erts_free. The old implementation could not extract
information without halting the emulator, had considerable runtime
overhead, and the memory maps it produced were noisy and lacked
critical information.
Since the new implementation walks through existing data structures
there's no longer a need to start the emulator with special flags to
get information about carrier utilization/fragmentation. Memory
fragmentation is also easier to diagnose as it's presented on a
per-carrier basis which eliminates the need to account for "holes"
between mmap segments.
To help track allocations, each allocation can now be tagged with
what it is and who allocated it at the cost of one extra word per
allocation. This is controlled on a per-allocator basis with the
+M<S>atags option, and is enabled by default for binary_alloc and
driver_alloc (which is also used by NIFs).
|
|
OTP-15024
|
|
|
|
This may be of interest in crash dumps and allows the upcoming
allocation tagging feature to track allocations on a per-NIF basis.
Note that this is only updated when user code calls a NIF; it's not
altered when the emulator calls NIFs during code upgrades or
tracing.
|
|
|
|
This increases the accuracy of crash dumps and the upcoming
allocation tagging feature.
|
|
* rickard/process_info/OTP-14966:
Fix deadlock in HiPE gc after receive
|
|
* bjorn/compiler/beam_validator:
beam_validator: Remove repeated "this"
beam_validator: Remove unnecessary inclusion of beam_disasm.hrl
beam_validator: Strengthen validation of remaining GC instructions
|
|
Update SSH(6) documentation
|
|
Fix typo in ssh key_cb type description
|
|
|
|
* rickard/auth-timeout/ERL-601/OTP-15009:
Set infinity timeout for auth requests
|
|
* rickard/monotonic_time_1_fix/OTP-15008:
Teach erlang:monotonic_time/1 the perf_counter time unit
|
|
* rickard/process_info/OTP-14966:
New process_info() implementation using signals
|
|
* rickard/signals/OTP-14589:
Fix VM probes compilation
Conflicts:
erts/emulator/beam/erl_message.c
|
|
Improve float_to_list(F, [{decimals,D}])
|
|
* lukas/erts/init_restart_flush_messages/OTP-15013:
erts: Flush messages before doing init restart
|
|
* lukas/erts/fix_openbsd_eof_poll/OTP-14346:
erts: Break etp-processes/ports when all found
erts: Don't use EV_DISPATCH on openbsd
|
|
|
|
* lukas/erl_docgen/add_github_contrib_link/OTP-14979:
erl_docgen: Remove git dependency in github link script
stdlib: Fix timer monotonic time link
erl_docgen: Use name based anchors where possible
erl_docgen: Change ghlink icon to pencil
erl_docgen: Fix ghlinks to .xmlsrc
erl_docgen: Add hover links for ghlink
erl_docgen: Add ghlink step for all non-generated doc xml files
Fix erlang:abs/2 type docs
Tickets missed in 9033a41375f3a31a18eb0cba3ea
OTP-14651: temp_alloc disabling
OTP-14652: msacc bugs
|
|
Two drafts have now been RFCs. Only editorial changes in them from implementation point of view.
|
|
|
|
* rickard/signals/OTP-14589:
Fix seq trace
Fix bad assert
|
|
Run scripts/diffable without arguments to print a description
and a few examples.
|
|
Teach httpc to honour server connection close
|
|
|
|
|
|
1ee21858db7e strengenthed validatation of GC instructions, but
forgot the following instructions:
bs_start_match2/5
bs_get_binary2/7
bs_get_float2/7
bs_get_integer2/7
bs_get_utf8/5
bs_get_utf16/5
bs_get_utf32/5
bs_skip_utf8/4
bs_skip_utf16/4
bs_skip_utf32/4
|
|
|
|
|
|
|
|
|
|
|
|
We don't want to use generate-id as it varies across builds
so it becomes impossible to link permanently to specific
sections.
|
|
|
|
|
|
All functions, datatype and h3 headings have gotten a hover
attribute that shows a link directly to the edit page on
github for easy editing of documentation.
The github link links to the maint branch. An early attempt
was done to use the SHA of the current branch, but that did
not work well as github can only take pull requests from
branches.
|
|
Remove note about heart rebooting on NTP updates
|
|
The timestamp code in heart uses monotonic time so it is immune to NTP
changes.
|
|
If messages are not flushed they would cause problems when
the system is booting. For instance module load requests
would be issued before the prim loader has been launched.
|
|
In order to get line numbers into the ghlink we have to add a post
processing step for all xml files.
|
|
|
|
|
|
Reflect actual timer:tc behaviour in documentation
|
|
It was switched to monotnic_time from timestamp 3 years ago
in d927209aa36fe370eb4ecf0a081923b0b951458b
|
|
|
|
`ssh_server_key_api` was missed instead`ssh_client_key_api` mentioned two times.
|
|
Check that messages outside of the heap are not corrupted
|
|
Waiting messages for a process may be stored in a queue
outside of any heap or heap fragment belonging to the process.
This is an optimization added in a recent major release to
avoid garbage collection messages again and again if there
is a long message queue.
Until such message has been matched and accepted by
the remove_message/0 instruction, the message must not be
included in the root set for a garbage collection, as that
would corrupt the message. The loop_rec/2 instruction explicitly
turns off garbage collection of the process as long messages
are being matched.
However, if the compiler were to put references to a message
outside of the heap in an Y register (on the stack) and there
happened to be a GC when the process had been scheduled out,
the message would be corrupted and the runtime system would
crash sooner or later.
To ensure that doesn't happen, teach beam_validator to check
for references on the stack to messages outside of the heap.
|
|
Support dumping of external fun literals to a crash dump
|