Age | Commit message (Collapse) | Author |
|
|
|
Conflicts:
lib/observer/src/crashdump_viewer.erl
lib/sasl/src/sasl.appup.src
lib/stdlib/src/stdlib.appup.src
|
|
Warn the user if the node executing the crashdump viewer potentially
could overwrite the crashdump under inspection.
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
Replaced "Id" column with "Is Named".
Removed "Slot" column.
Sort by name instead if id.
Use name in right-click menu instead of id.
|
|
|
|
If a crashdump is truncated due to size limit reached, a new 'abort'
tag with reason is added at the end of the crashdump. This reason is
now displayed along with the truncated-warning.
|
|
|
|
|
|
The type was set in the wrong datastructure.
|
|
|
|
New info in 18.
|
|
Info available from erl-18 nodes.
|
|
* dgud/observer/misc-fixes:
observer: Fix external monitors to registered processes in cdv
observer: Cleanup io server parts
observer: Fix range test
|
|
|
|
Missing information
|
|
crashdump_viewer would crash if the owner of a timer was specified as
the process' regisered name. This has been corrected.
|
|
A node to which we have references to multiple instances (creations)
will have an information line in the crashdump like this:
Creation: 1 2 ...
This would earlier crash because crashdump_viewer would try to do
list_to_integer on the value after "Creation: ". This is now
corrected.
This correction also helps the case when the emulator is debug
compiled, since the line could then be
Creation: 1 (refc=1)
|
|
crashdump_viewer:progress_pmap did sometimes hang since is spawned a
process, then monitored it and waited for a specific DOWN
message. When the process' work was very fast, it would exit before
the call to monitor and the DOWN message would contain reason 'noproc'
instead of the expected {pmap_done,Result}.
By doing spawn_monitor/1 instead, the monitor is always set before the
process exits so the deadlock is avoided.
|
|
|
|
* bugfixes
* add first test
* remove unused code
|
|
* bugfixes
* better progress dialogs
* show expanded binaries in different formats
* speed up reading of big crashdumps
|
|
The old web base crashdump_viewer is now removed.
|
|
|
|
A new field named "Memory" has been added for each process in the
crash dump. This is now shown by the crashdump_viewer. It replaces the
"Stack+heap" column in the process overview page, and is added to the
process detail page.
|
|
A new table with summary of allocator blocks- and carriers size is
added under "Allocator information" in crashdump viewer.
|
|
Running "open" on an HTTP URL will pass it to the system's configured
default browser.
|
|
|
|
Also, remove compiler warnings for crashdump_viewer_SUITE and fix
Makefile in test directory so Emakefile does not grow.
|
|
|
|
Since browsers no longer can provide the full path of a file selected
with a file-type input field (browse button), the input field for
loading a crashdump is now changed to a plain text input field. Since
this reduces the user-friendlyness, a shell script (and a .bat file)
has instead been added so the crashdump_viewer can be started directly
from the command line - and thus normal tab completion can be used for
selecting the crashdump file.
Usage: cdv file [ browser ]
|
|
This is a first attempt at fixing the problem described in seq11783 -
crashdump_viewer is very slow at parsing big crashdumps. To open the
first page for a dump of 17M takes about 2 minutes and a dump of 280M
takes 1.5-2 hours.
The main problmem is that the cdv_dump_index_table, which holds all
tags read from the dump, is a bag. Profiling shows that ~95% of the
time is spent in ets:insert. The table is now changed to an
ordered_set.
A second problem occured when a page with many table rows was
opened. These pages were sent to inet in one chunk, causing both
crashdump_viewer_server and the inets (mod_esi) process to grow very
much in memory usage. To overcome this, the pages are now sent to
inets in chunks of 1000 rows, and the data is coverted to binaries to
avoid data copying between the two processes.
Also, some new information in the crashdump was not recognized by the
crashdump_viewer. This has been fixed.
|
|
NIF function prototypes in order to allow more than 3 function
arguments. Also an incompatible change in the return value of
erlang:load_nif/2. Added support for references, floats and term
comparison in NIFs. Read more in the documentation of erl_nif and
erlang:load_nif/2.
|
|
|