Age | Commit message (Collapse) | Author |
|
|
|
* siri/cuddle-master:
Update sasl/test/test_lib.hrl with recent versions of kernel and stdlib
[logger] Fix faulty report_cb in logger_disk_log_h_SUITE:logging/1
[cdv] Update compiler directive for release compatibility
[reltool] Make test pass when $ERL_LIBS is set
|
|
In crashdump_viewer test, the helper module must be loaded on earlier
releases (major-2), so it has a compiler directive. This was r18, but
is now changed to r20.
|
|
* maint:
[xmerl] Fix detect charset crash
[cdv] Check only own persistent terms in crashdump_viewer test
Fix remote-call error in ms_transform
Conflicts:
lib/observer/test/crashdump_helper.erl
|
|
|
|
|
|
* siri/cdv/div-bugfixes/OTP-15391:
[cdv] Handle multiple "Yc" lines refering to the same refc binary
[cdv] Speed up reading of dump with many processes
|
|
* maint:
Implement a tab for persistent terms in crashdump viewer
Add tests of persistent terms for crashdump_viewer
Add a persistent term storage
Refactor releasing of literals
Extend the sharing-preserving routines to optionally copy literals
Conflicts:
erts/emulator/Makefile.in
erts/emulator/beam/erl_process_dump.c
erts/preloaded/ebin/erts_internal.beam
erts/preloaded/ebin/init.beam
lib/sasl/src/systools_make.erl
|
|
Co-authored-by: Siri Hansen <[email protected]>
|
|
|
|
Usually, sub binaries are implemented as special sub binary terms
("Ys" lines). But if a sub binary is sent to another process, sub
binaries will be eliminated and incorporated into the ProcBin ("Yc"
line), and when that happens there can be several "Yc" lines that
refer to the same underlying binary object. Make sure that that the
crash dump viewer can handle multiple "Yc" lines referring to the same
binary object.
|
|
bjorng/bjorn/observer/fix-crashdump_viewer/ERL-722/OTP-15365
Eliminate crash in crashdump_viewer reading some literal maps
|
|
Literal maps with complex keys such as:
#{"one"=>1,"two"=>2,"three"=>3,"four"=>4}.
would produce a crash dump that `crashdump_viewer` was unable
to read.
https://bugs.erlang.org/browse/ERL-722
|
|
* richcarl/erts/erl_init-cleanup/OTP-15336:
sasl: Order systools_make:preloaded modules alphabetically
Update preloaded modules
Move calling on_load for preloaded modules to erl_init
Make erl_init.c pass the boot module to erl_init.beam
Remove obsolete comment text
Remove undocumented and unused -# display_items emulator option
Remove broken and undocumented boot function emulator option
Replace remaining references to otp_ring0 with erl_init
Drop otp_ring0, using erl_init instead
Update preloaded modules
Add erl_init module
Conflicts:
erts/emulator/beam/erl_init.c
erts/preloaded/ebin/erl_prim_loader.beam
erts/preloaded/ebin/erl_tracer.beam
erts/preloaded/ebin/erlang.beam
erts/preloaded/ebin/erts_code_purger.beam
erts/preloaded/ebin/erts_dirty_process_signal_handler.beam
erts/preloaded/ebin/erts_internal.beam
erts/preloaded/ebin/erts_literal_area_collector.beam
erts/preloaded/ebin/init.beam
erts/preloaded/ebin/otp_ring0.beam
erts/preloaded/ebin/prim_buffer.beam
erts/preloaded/ebin/prim_eval.beam
erts/preloaded/ebin/prim_file.beam
erts/preloaded/ebin/prim_inet.beam
erts/preloaded/ebin/prim_zip.beam
erts/preloaded/ebin/zlib.beam
|
|
I did not find any legitimate use of "can not", however skipped
changing e.g RFCs archived in the source tree.
|
|
|
|
|
|
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).
|
|
|
|
* siri/cuddle:
[cdv] Fix test of size limit reached on crash dump, again
|
|
* maint:
ErLLVM: Preserve precise BEAM tailcall semantics
observer: Fix change accum
Remove double calls
observer: Don't crash for late messages
observer: Optimize tv tab for many tables
|
|
* dgud/observer/opt-tv-tab/OTP-14856:
observer: Fix change accum
Remove double calls
observer: Don't crash for late messages
observer: Optimize tv tab for many tables
|
|
Conflicts:
lib/observer/src/crashdump_viewer.erl
|
|
This test failed every now and then since the selected max size could
be equal to actual size of the dump - so the dump was not
truncated. This is now corrected.
|
|
Make it a virtual table, the only table which was not a virtual table.
Updating 10000 rows with many columns and alternating colors takes too
long time to be a viable solution.
|
|
When a process has many links and/or monitors, it could earlier take
very long time to display the process information window. This is now
improved by only showing a few links and monitors, and then an link
named "more..." to expand the rest.
Reading of the "Link list" from a crashdump is also improved.
|
|
|
|
This bug was introduced by commit 3b964e8dbaa0cd73ca7a983b3ce948e0dbd2c35c
|
|
* maint:
Use base64 encoding in crash dumps
Correct parsing of sub binaries
Generalize passing of options for decoding
|
|
This will reduce the size of crash dumps, especially if
there are large binaries.
|
|
Correct several problems parsing sub binaries. A sub binary
would often be replaced with '#CDVNonexistingBinary'.
When parsing a sub binary, we must scan ahead to find the
definition of the refc or heap binary being referenced.
|
|
Conflicts:
lib/observer/src/crashdump_viewer.erl
|
|
This test failed every now and then since the selected max size could
be greater than the actual size of the dump - so the dump was not
truncated. This is now corrected.
|
|
|
|
If the version of the given crash dump is newer than what
crashdump_viewer is prepared to read, then crashdump_viewer will
display an info dialog and then terminate. This is to allow major
updates of the format of crash dumps.
|
|
* maint:
Bump version of crash dumps to 0.4
Verify that binaries of different sizes are dumped correctly
Don't dump literal areas that are not referenced at all
Dump literals separately to avoid incomplete heap data
Implement dumping of maps in crash dumps
Buffer writing of crash dumps
Conflicts:
erts/emulator/beam/erl_alloc.types
|
|
|
|
When a literal was used from several processes, the literal would
be dumped in only one of the processes. The other processes
that referenced the literals would have incomplete heap data.
|
|
Maps would be dumped as the atom 'undefined', which is
not very informative.
|
|
Conflicts:
lib/observer/src/crashdump_viewer.erl
lib/sasl/src/sasl.appup.src
lib/stdlib/src/stdlib.appup.src
|
|
|
|
|
|
|
|
* siri/string-new-api: (28 commits)
hipe (test): Do not use deprecated functions in string(3)
dialyzer (test): Do not use deprecated functions in string(3)
eunit (test): Do not use deprecated functions in string(3)
system (test): Do not use deprecated functions in string(3)
system (test): Do not use deprecated functions in string(3)
mnesia (test): Do not use deprecated functions in string(3)
Deprecate old string functions
observer: Do not use deprecated functions in string(3)
common_test: Do not use deprecated functions in string(3)
eldap: Do not use deprecated functions in string(3)
et: Do not use deprecated functions in string(3)
os_mon: Do not use deprecated functions in string(3)
debugger: Do not use deprecated functions in string(3)
runtime_tools: Do not use deprecated functions in string(3)
asn1: Do not use deprecated functions in string(3)
compiler: Do not use deprecated functions in string(3)
sasl: Do not use deprecated functions in string(3)
reltool: Do not use deprecated functions in string(3)
kernel: Do not use deprecated functions in string(3)
hipe: Do not use deprecated functions in string(3)
...
Conflicts:
lib/eunit/src/eunit_lib.erl
lib/observer/src/crashdump_viewer.erl
lib/reltool/src/reltool_target.erl
|
|
|
|
Earlier, crashdump_viewer stored an index of all binaries in a gb_tree
on startup. The binary index was also stored in the
cdv_dump_index_table along with all other "=xxx" tags from the
dump. The difference between the indices was that the ets table
contained the addresses of the binaries as strings (the hex address
found after the "=binary:" tag) and in the gb_tree this hex address
was instead converted to its integer value. The index in the ets table
was only used once - when creating the gb_tree. The gb_tree was used
for all later looups (to map integer address to file position).
This commit replaces the two storages with one new ets table,
cdv_binary_index_table, using the integer value of the hex address as
key, and the position in the crashdump file as value. In the case of
many binaries, this makes the start of crashdump viewer faster (only
one place to write), and the data usage smaller (hex address strings
are no longer stored). And it avoids the gc of the gb_tree.
|
|
This is a bug fix: the end of the 'Last calls' section is meant to be
an empty line, but in some situations this is not the case. This could
cause the complete dump to be read and stored as 'Last calls', causing
very unexpected behavior in the crashdump viewer.
This commit adds a check for ": ", which indicates that a new heading
has occured and thus the 'Last calls' section is completly read.
|
|
|
|
|
|
Compatibility two releases back are tested, which implies R18.
|