aboutsummaryrefslogtreecommitdiffstats
path: root/lib/observer/test/crashdump_viewer_SUITE.erl
AgeCommit message (Collapse)Author
2018-11-27Merge branch 'siri/cdv/div-bugfixes/OTP-15391' into maintSiri Hansen
* 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
2018-11-06Implement a tab for persistent terms in crashdump viewerBjörn Gustavsson
Co-authored-by: Siri Hansen <[email protected]>
2018-11-06Add tests of persistent terms for crashdump_viewerBjörn Gustavsson
2018-10-29[cdv] Handle multiple "Yc" lines refering to the same refc binarySiri Hansen
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.
2018-06-18Update copyright yearHenrik Nord
2018-04-23erts: Rewrite memory instrumentationJohn Högberg
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).
2018-01-12[cdv] Fix test of size limit reached on crash dump, againSiri Hansen
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.
2018-01-03[cdv] Don't crash when dump is truncated in module attributesSiri Hansen
This bug was introduced by commit 3b964e8dbaa0cd73ca7a983b3ce948e0dbd2c35c
2017-11-21Use base64 encoding in crash dumpsBjörn Gustavsson
This will reduce the size of crash dumps, especially if there are large binaries.
2017-11-21Correct parsing of sub binariesBjörn Gustavsson
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.
2017-11-08[cdv] Fix test of size limit reached on crash dumpSiri Hansen
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.
2017-11-08[cdv] Display warning if heap is incompleteSiri Hansen
2017-10-26[cdv] Check if dump version is newer than cdv can handleSiri Hansen
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.
2017-10-18Verify that binaries of different sizes are dumped correctlyBjörn Gustavsson
2017-10-18Dump literals separately to avoid incomplete heap dataBjörn Gustavsson
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.
2017-10-18Implement dumping of maps in crash dumpsBjörn Gustavsson
Maps would be dumped as the atom 'undefined', which is not very informative.
2017-09-18cdv: Show progress bar while reading big dataSiri Hansen
2017-09-15cdv: Optimize reading of crashdump with many binariesSiri Hansen
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.
2017-09-13cdv: Find end of 'Last calls' sectionSiri Hansen
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.
2017-09-05observer: Improve handling of UnicodeSiri Hansen
2016-12-05Merge branch 'maint'Ingela Anderton Andin
2016-11-30[crashdump_viewer] Display abort reason when truncatedSiri Hansen
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.
2016-06-27Make crashdump_viewer_SUITE independent of OTP versionSiri Hansen
2016-05-04Merge branch 'siri/cuddle-master'Siri Hansen
* siri/cuddle-master: Extend timer in test Update crashdump_viewer_SUITE with new release numbers Set longer timetrap when creating dsa files Check that ssh application exists before starting netconf tests Improve error control when starting ssh in netconf test
2016-03-31Update crashdump_viewer_SUITE with new release numbersSiri Hansen
After bumping to Erlang/OTP 19, R16 dumps can no longer be created. Now we test dumps from OTP 17 and 18.
2016-03-15update copyright-yearHenrik Nord
2016-03-02Merge branch 'maint'Siri Hansen
2016-03-01Set dir for slave node's erl_crash.dumpSiri Hansen
This was earlier filename:dirname(code:which(test_server)). On Microsoft Windows, this pointed to a directory under c:/Program Files, and in later versions this directory is no longer writable. The framework (common_test) log dir is now used instead.
2016-02-17Eliminate use of test_server.hrl and test_server_line.hrlBjörn Gustavsson
As a first step to removing the test_server application as as its own separate application, change the inclusion of test_server.hrl to an inclusion of ct.hrl and remove the inclusion of test_server_line.hrl.
2015-06-18Change license text to APLv2Bruce Yinhe
2014-05-28Merge branch 'maint'Siri Hansen
2014-05-27[cdv] Allow registered name as owner of timer in crashdumpSiri Hansen
crashdump_viewer would crash if the owner of a timer was specified as the process' regisered name. This has been corrected.
2014-04-23Update crashdump_viewer_SUITE with new release numbersSiri Hansen
After bumping to Erlang/OTP 18, R15 dumps can no longer be created. Now we test dumps from R16B and 17.
2014-04-03Add debug printouts in crashdump_viewer_SUITE:load_fileSiri Hansen
2014-03-26Improve crashdump_viewer_SUITE:start_stop test caseSiri Hansen
Instead of setting a timer and expecting all processes to be terminated, set a monitor and wait for them to terminate.
2014-03-25Fix crash in crashdump_viewer when node has multiple creationsSiri Hansen
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)
2014-01-27observer: Fix progress dialog creationDan Gudmundsson
Should not call showModal on a wxProgressdialog it is already display (see doc) and it hangs on MacOSX until someone presses the menu.
2014-01-27observer: renamed crashdump_viewer files and fixed makefilesSiri Hansen
2014-01-27observer: improve wx version of crashdump_viewerSiri Hansen
* bugfixes * add first test * remove unused code
2013-05-15[observer] Update crahshdump_viewer_SUITE for R17Siri Hansen
2013-01-09Prepare OTP files for Unicode as default encodingHans Bolinder
2012-12-17[observer] Set ERL_CRASH_DUMP_SECONDS/=-1 on old releasesSiri Hansen
Else, crashdumps can not be generated.
2012-12-17[observer] Fix crashdump_viewer tests for R16Siri Hansen
Generate dumps for r14, r15 and r16. Save generated dumps if test fails.
2012-06-05Update to work with whitespace in exec pathLukas Larsson
OTP-10106 OTP-10107
2012-05-16[crashdump_viewer] URL encode module names in link to loaded module detailsSiri Hansen
2012-03-30[crashdump_viewer] Add case clause for testing with dump from R14BSiri Hansen
2011-11-24observer tests: Test compatibility with R13, not R12Björn Gustavsson
2011-03-04Wait longer than 5 sec instead of 2.5 sec for crashdump to be created in testSiri Hansen
2011-02-28Fix file descriptor leak in crashdump_viewer:chunk_pageSiri Hansen
Also, remove compiler warnings for crashdump_viewer_SUITE and fix Makefile in test directory so Emakefile does not grow.
2011-02-28Fix slow parsing of crashdumpsSiri Hansen
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.