A service for automated crash-dump analysis
SuperDump is a service for automated crash-dump analysis. It has a web- as well as a REST-interface to upload Windows crash dumps or Linux coredumps.
SuperDump was made with these goals in mind:
What SuperDump is not:
Maintainer: Christoph Neumüller (christoph.neumueller@dynatrace.com, https://twitter.com/discostu105)
Windows analyis can be run simply in Docker for Windows:
docker run -d -p 80:5000 -v superdump
\superdump\data\dumps discostu105/superdump
localhost:5000
though. Use docker inspect <id>
to get the IP address of the container and access it directly <ip-of-container>:80
. This should improve in future Windows versions..dmp
files). Only process-dumps, not kernel-dumps..core
files). See format for core dumps.zip
files containing multiple crash-dumps are also supported. Each contained dump is processed..json
files and can be queried via REST-API. But they can also be viewed in SuperDump directly.WinDbg
commands automatically and logs them to a separate log-file..mht
file is created automatically and can be downloaded.cdb.exe
(basically WinDbg for the command line) and create a websocket-based console terminal in the browser which lets you analyze the dump more deeply, with out the need to download it and have debugging tools installed locally. (Isn’t that awesome?).core
) are supported too. The analysis is triggered via a docker container (the actual command is configurable via LinuxAnalysisCommand
. Note, that linux dumps must be uploaded in archives in a specific format. In addition to the .core
file, it must also contain linux system libraries as libs.tar.gz
, otherwise symbols cannot be resolved correctly. If you’re interested in seriously using this, please get in touch and we’ll document this better. Find more details on linux analysis here: http://epub.jku.at/obvulihs/download/pdf/2581999?originalFilename=trueSlackNotificationUrls
config setting)RepositoryUrl
setting)Demo-Video: https://youtu.be/XdyDjkW8MDk
Slides about SuperDump (explaining some of the architecture): https://www.slideshare.net/ChristophNeumller/large-scale-crash-dump-analysis-with-superdump
UseInMemoryHangfireStorage
setting)conf/appsettings.json
cdb.exe
) (optional, for interactive mode)building/*.cmd
(see README.md)Run via build/runsuperdump.cmd
(defaults to port 5000)
For authentication it is necessary to add a few settings to either the appconfig.json file, environment variables or using the user secrets file of asp .net.
“SuperDumpSettingsGroupNames:Viewer”
When “SuperDumpSettingsLdapServiceUserMode” is set to “ServiceUser” it is also necessary to specify
“SuperDumpSettingsLdapServiceUserPwd”
The user secrets file can be created by right-clicking the “SuperDumpService” Project in Visual Studio and selecting “Manage User Secrets”
For the https redirection it is necessary to add urls for https and http to the ASPNETCORE_URLS environment variable.
SuperDump has been created at Dynatrace as an internship project in 2016. It turned out to be pretty useful so we thought it might be useful for others too. Thus we decided to open source it. This project is considered “community supported”. No full-fledged support (with SLA’s) is provided by Dynatrace.
Though it currently works great for us at Dynatrace, there are areas that need to be improved to make it a high-quality and generally useful tool:
We’ve open sourced SuperDump, because we believe it can be helpful for others. Anyone is welcome to contribute to SuperDump. In small ways, or in ways we have not thought about yet. Feedback, github tickets, as well as PR’s are welcome.
Some high-level ideas we’ve been poking around:
A word of caution: SuperDump is meant to be an internal tool to make crash dump diagnosis easier and faster. It is NOT designed to be used as a publicly hosted service. If you deploy SuperDump, it’s recommended to put access restrictions in place on top of the LDAP authentication that SuperDump provides to only allow access for trusted individuals, .
Known shortcomings:
SuperDumpSettings
GroupNames:User
can enter Interactive Mode.SuperDumpSettings
GroupNames:User
is given, such a user can download other dumps or enter Interactive Mode. Memory dumps are may contain highly sensitive data, so such access must only be given to trusted individuals.Most of the initial code base was written by Andreas Lobmaier in his summer internship of 2016. It’s been maintained and further developed since then by Christoph Neumüller and other folks at Dynatrace. Dominik Steinbinder also contributed large parts, such as Linux analysis, elastic search integration and much more.
Some of the thread analysis code is based on Sasha Goldshtein’s work in https://github.com/goldshtn/msos.
Thank you!