SlideShare a Scribd company logo
Automatic
Crash Analysis System
Anton Naumovich
About me
Anton Naumovich
Development Manager at LogicNow
Developer at Microsoft (Hyper-V) in the past
Specializing in performance, debugging,
troubleshooting
Bad things happen
Divergence
Crashes Hangs
Overusage of processor and RAM
And more...
Large numbers
Sources of divergence
Developers’ mistakes
Thirdparty libraries issues
Environment diversity (software, hardware)
How to find the root cause?
Take a memory dump!
Dump is a snapshot of process memory
Problem root cause can be located from the dump
The fact that dump is taken is an “attention!” signal
Dump kinds
Minidump
threads and handles
Full dump
+virtual memory
Kernel dump
Full OS
KeBugCheckEx
Taking a process dump
We need a “non-involved” controller process
SuperController.exe
Controller app
SuperApp.exe
Worker app
Dump
file
Monitoring
Taking dumps
Apps capable of taking dumps
Process Explorer (full, mini)
Task Manager (full)
ProcDump (full, mini, and much more)
ProcDump: basics
-c CPU threshold above which to create a dump of the process
-e Write a dump when the process encounters an unhandled exception
-m Memory commit threshold in MB at which to create a dump
-t Write a dump when the process terminates
-h Write dump if process has a hung window
-p Trigger on the performance counter when the threshold exceeded
ProcDump: advanced
-w Wait for the specified process to launch if it's not running
-s Consecutive seconds before dump is written (default is 10)
-n Number of dumps to write before exiting
-r Dump using a clone
-i Install ProcDump as the AeDebug postmortem debugger
-ma Write a dump file with all process memory
procdump: controlling apps
SuperApp.exe
Worker app
procdump -c 30 SuperApp.exe procdump -h SuperApp.exe
procdump -m 300 SuperApp.exe
procdump -t SuperApp.exe
procdump -p "Process(SuperApp)Handle Count" 1000 SuperApp.exe
Fetching info from the dump
Dump analysis is
just static debugging
cdb.exe -y C:lab -i C:lab -z C:labSuperApp.dmp -c "~*k;q" > C:analysis.txt
Easily automatable:
Debugger
SuperApp.pdb
Debugging
symbols
SuperApp.dmp
Memory dump
SuperApp.exe
App executable
Analysis results
It’s all about thread stacks
008afcf0 MSVCP120!std::_Xout_of_range+0x36
008fc86b SuperApp!WorkerProcessor::GetNextChunk+0x1e1
0061d914 SuperApp!WorkerProcessor::CalculateAverage+0x202
0062875c SuperApp!WorkerModule::ProcessQueueEvent+0xdf
0012877a SuperApp!WorkerModule::TakeSingleItem+0x54
004dc89a SuperApp!WorkerModule::Run+0x67
00bdc100 SuperApp!main+0x1955
Mission Control
Connecting it all together
Key analysis features
Dump fuzzy matching and grouping by stack
Integration with issue tracking (Jira)
Analyze dump by user request
Notifications about new/critical problems
Symbol Server
- Storage and access to app debugging symbols
- Dramatically speeds up debugging
Analogues
Windows Error Reporting
http://msdn.microsoft.com/en-us/library/windows/desktop/bb513641(v=vs.85).aspx
Mozilla Crash Reporter
https://support.mozilla.org/en-US/kb/mozillacrashreporter
Dr. Dump
https://drdump.com/crash-reporting-system
Example: Dr. Dump
https://drdump.com/AppVersion.aspx
What can you do tomorrow?
Setup symbol server (simply a shared folder)
Use a script to monitor problems and capture dumps
Use a script to analyze dumps
Toolset
Debugging Tools for Windows (cdb, windbg)
http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx
Sysinternals tool suite (procdump, procexp)
http://technet.microsoft.com/en-us/sysinternals/bb545021.aspx
Google Breakpad library
https://code.google.com/p/google-breakpad/
Windows API: Debug Help family
http://msdn.microsoft.com/en-us/library/windows/desktop/ms679309(v=vs.85).aspx
Microsoft Symbols Server
http://en.wikipedia.org/wiki/Microsoft_Symbol_Server
1. Speed up defect location
2. Immediate reaction to critical problems
3. Version quality indicators
4. Improve stability
Profit
Thanks! Questions?
Anton.Naumovich@LogicNow.com

More Related Content

PPTX
VS Debugging Tricks
PPTX
Advanced Debugging with WinDbg and SOS
PPTX
C++ Production Debugging
PDF
Trick or Tip - Symfony Edition
PDF
Webinar: Node.js Transaction Tracing & Root Cause Analysis with StrongLoop Arc
PPTX
unix- the process states, zombies, running jobs in background
PPTX
Qualidade levada a sério em Python - Emilio Simoni
PDF
EasyMock 101
VS Debugging Tricks
Advanced Debugging with WinDbg and SOS
C++ Production Debugging
Trick or Tip - Symfony Edition
Webinar: Node.js Transaction Tracing & Root Cause Analysis with StrongLoop Arc
unix- the process states, zombies, running jobs in background
Qualidade levada a sério em Python - Emilio Simoni
EasyMock 101

Viewers also liked (20)

PPTX
c++ boost and STL
PPTX
Allure framework. Пример настройки исчерпывающего репорта на реальном проекте
PPTX
Hpx runtime system
PPTX
закон иерархических компенсаций седова и C++ core guidelines
PPTX
C++ idioms
PDF
обзор средств разработки для вычислений Gpgpu
PDF
tricks of Stl containers
PPTX
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
PPTX
MobileAPI + CRM – using application related .xml files to build automation f...
PPTX
Многогранная профессия тестировщика глазами с++ разработчика в примерах
PPTX
Автоматизация визуального тестирования
PPTX
CodeFest
PPTX
Example of TAF with batch execution of test cases
PPTX
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
PPTX
Automated tests ci
PPTX
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
PPTX
Автоматизация для не-автоматизаторов: хотелки и реальность
PPTX
Docker в автоматизации тестирования
PPTX
От хаоса к автоматизации тестирования на примере Backend
PPTX
Обзор автоматизации тестирования на JavaScript
c++ boost and STL
Allure framework. Пример настройки исчерпывающего репорта на реальном проекте
Hpx runtime system
закон иерархических компенсаций седова и C++ core guidelines
C++ idioms
обзор средств разработки для вычислений Gpgpu
tricks of Stl containers
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
MobileAPI + CRM – using application related .xml files to build automation f...
Многогранная профессия тестировщика глазами с++ разработчика в примерах
Автоматизация визуального тестирования
CodeFest
Example of TAF with batch execution of test cases
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Automated tests ci
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Автоматизация для не-автоматизаторов: хотелки и реальность
Docker в автоматизации тестирования
От хаоса к автоматизации тестирования на примере Backend
Обзор автоматизации тестирования на JavaScript
Ad

Similar to Automatic crash analysis system (20)

PDF
Антон Наумович, Система автоматической крэш-аналитики своими средствами
PPTX
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
PDF
Debugging a .NET program after crash (Post-mortem debugging)
PDF
Crash dump analysis - experience sharing
PPTX
Large Scale Crash Dump Analysis with SuperDump
PDF
PAC 2019 virtual Christoph NEUMÜLLER
PDF
Fundamentals of Complete Crash and Hang Memory Dump Analysis
PPTX
Advanced windows debugging
PPTX
Memory Dump
PDF
Fundamentals of Complete Crash and Hang Memory Dump Analysis (Revision 2)
PPTX
SVR302_Pearson Windows crash dump analysis
PPTX
.Net debugging 2017
PPTX
Windows Debugging with WinDbg
PDF
Crash (or) Hang dump analysis using WinDbg in Windows platform by K.S.Shanmug...
PDF
The Old New Crash: Cloud Memory Dump Analysis
PPT
.NET Debugging Tips and Techniques
PPT
.Net Debugging Techniques
PDF
Fundamentals of Physical Memory Analysis
PPTX
Sql Bits Sql Server Crash Dump Analysis
PPTX
CarolinaCon 2009 Anti-Debugging
Антон Наумович, Система автоматической крэш-аналитики своими средствами
How We Analyzed 1000 Dumps in One Day - Dina Goldshtein, Brightsource - DevOp...
Debugging a .NET program after crash (Post-mortem debugging)
Crash dump analysis - experience sharing
Large Scale Crash Dump Analysis with SuperDump
PAC 2019 virtual Christoph NEUMÜLLER
Fundamentals of Complete Crash and Hang Memory Dump Analysis
Advanced windows debugging
Memory Dump
Fundamentals of Complete Crash and Hang Memory Dump Analysis (Revision 2)
SVR302_Pearson Windows crash dump analysis
.Net debugging 2017
Windows Debugging with WinDbg
Crash (or) Hang dump analysis using WinDbg in Windows platform by K.S.Shanmug...
The Old New Crash: Cloud Memory Dump Analysis
.NET Debugging Tips and Techniques
.Net Debugging Techniques
Fundamentals of Physical Memory Analysis
Sql Bits Sql Server Crash Dump Analysis
CarolinaCon 2009 Anti-Debugging
Ad

More from COMAQA.BY (20)

PDF
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
PPTX
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
PPTX
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
PPTX
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
PPTX
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
PPTX
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
PPTX
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
PPTX
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
PPTX
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
PPTX
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
PPTX
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
PPTX
Моя роль в конфликте
PPTX
Организация приемочного тестирования силами матерых тестировщиков
PPTX
Развитие или смерть
PPTX
Системный взгляд на параллельный запуск Selenium тестов
PPTX
Эффективная работа с рутинными задачами
PPTX
Как стать синьором
PPTX
Open your mind for OpenSource
PPTX
JDI 2.0. Not only UI testing
PPTX
Out of box page object design pattern, java
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...
Моя роль в конфликте
Организация приемочного тестирования силами матерых тестировщиков
Развитие или смерть
Системный взгляд на параллельный запуск Selenium тестов
Эффективная работа с рутинными задачами
Как стать синьором
Open your mind for OpenSource
JDI 2.0. Not only UI testing
Out of box page object design pattern, java

Recently uploaded (20)

PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Getting Started with Data Integration: FME Form 101
PDF
Encapsulation theory and applications.pdf
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Approach and Philosophy of On baking technology
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Machine Learning_overview_presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Machine learning based COVID-19 study performance prediction
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
1. Introduction to Computer Programming.pptx
Assigned Numbers - 2025 - Bluetooth® Document
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Getting Started with Data Integration: FME Form 101
Encapsulation theory and applications.pdf
SOPHOS-XG Firewall Administrator PPT.pptx
Group 1 Presentation -Planning and Decision Making .pptx
Approach and Philosophy of On baking technology
OMC Textile Division Presentation 2021.pptx
A comparative study of natural language inference in Swahili using monolingua...
Machine Learning_overview_presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
NewMind AI Weekly Chronicles - August'25-Week II
Machine learning based COVID-19 study performance prediction
Reach Out and Touch Someone: Haptics and Empathic Computing
Spectral efficient network and resource selection model in 5G networks
Building Integrated photovoltaic BIPV_UPV.pdf
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Diabetes mellitus diagnosis method based random forest with bat algorithm
1. Introduction to Computer Programming.pptx

Automatic crash analysis system

  • 2. About me Anton Naumovich Development Manager at LogicNow Developer at Microsoft (Hyper-V) in the past Specializing in performance, debugging, troubleshooting
  • 4. Divergence Crashes Hangs Overusage of processor and RAM And more...
  • 6. Sources of divergence Developers’ mistakes Thirdparty libraries issues Environment diversity (software, hardware)
  • 7. How to find the root cause?
  • 8. Take a memory dump! Dump is a snapshot of process memory Problem root cause can be located from the dump The fact that dump is taken is an “attention!” signal
  • 9. Dump kinds Minidump threads and handles Full dump +virtual memory Kernel dump Full OS
  • 11. Taking a process dump We need a “non-involved” controller process SuperController.exe Controller app SuperApp.exe Worker app Dump file Monitoring Taking dumps
  • 12. Apps capable of taking dumps Process Explorer (full, mini) Task Manager (full) ProcDump (full, mini, and much more)
  • 13. ProcDump: basics -c CPU threshold above which to create a dump of the process -e Write a dump when the process encounters an unhandled exception -m Memory commit threshold in MB at which to create a dump -t Write a dump when the process terminates -h Write dump if process has a hung window -p Trigger on the performance counter when the threshold exceeded
  • 14. ProcDump: advanced -w Wait for the specified process to launch if it's not running -s Consecutive seconds before dump is written (default is 10) -n Number of dumps to write before exiting -r Dump using a clone -i Install ProcDump as the AeDebug postmortem debugger -ma Write a dump file with all process memory
  • 15. procdump: controlling apps SuperApp.exe Worker app procdump -c 30 SuperApp.exe procdump -h SuperApp.exe procdump -m 300 SuperApp.exe procdump -t SuperApp.exe procdump -p "Process(SuperApp)Handle Count" 1000 SuperApp.exe
  • 16. Fetching info from the dump Dump analysis is just static debugging cdb.exe -y C:lab -i C:lab -z C:labSuperApp.dmp -c "~*k;q" > C:analysis.txt Easily automatable: Debugger SuperApp.pdb Debugging symbols SuperApp.dmp Memory dump SuperApp.exe App executable
  • 17. Analysis results It’s all about thread stacks 008afcf0 MSVCP120!std::_Xout_of_range+0x36 008fc86b SuperApp!WorkerProcessor::GetNextChunk+0x1e1 0061d914 SuperApp!WorkerProcessor::CalculateAverage+0x202 0062875c SuperApp!WorkerModule::ProcessQueueEvent+0xdf 0012877a SuperApp!WorkerModule::TakeSingleItem+0x54 004dc89a SuperApp!WorkerModule::Run+0x67 00bdc100 SuperApp!main+0x1955
  • 19. Connecting it all together
  • 20. Key analysis features Dump fuzzy matching and grouping by stack Integration with issue tracking (Jira) Analyze dump by user request Notifications about new/critical problems
  • 21. Symbol Server - Storage and access to app debugging symbols - Dramatically speeds up debugging
  • 22. Analogues Windows Error Reporting http://msdn.microsoft.com/en-us/library/windows/desktop/bb513641(v=vs.85).aspx Mozilla Crash Reporter https://support.mozilla.org/en-US/kb/mozillacrashreporter Dr. Dump https://drdump.com/crash-reporting-system
  • 24. What can you do tomorrow? Setup symbol server (simply a shared folder) Use a script to monitor problems and capture dumps Use a script to analyze dumps
  • 25. Toolset Debugging Tools for Windows (cdb, windbg) http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx Sysinternals tool suite (procdump, procexp) http://technet.microsoft.com/en-us/sysinternals/bb545021.aspx Google Breakpad library https://code.google.com/p/google-breakpad/ Windows API: Debug Help family http://msdn.microsoft.com/en-us/library/windows/desktop/ms679309(v=vs.85).aspx Microsoft Symbols Server http://en.wikipedia.org/wiki/Microsoft_Symbol_Server
  • 26. 1. Speed up defect location 2. Immediate reaction to critical problems 3. Version quality indicators 4. Improve stability Profit

Editor's Notes

  • #2: Я расскажу о контроле качества в реальном времени - то есть не в “лабораторных” условиях, а во время того, как приложение выполняет свою реальную работу на машинах конечных пользователей. Фактически, речь пойдет о построении системы обратной связи из продакшена в “Центр Управления Полетами” :) Такая система находится в сфере интересов и на стыке компетенции многих отделов - Development, QA+Automation, Support
  • #5: Нас будут интересовать такие показатели качества как: падения (выполнение недопустимой операции) - все видели такое окошечко, скоро мы узнаем что происходит за кулисами когда мы соглашаемся отправить отчет подвисания - когда приложение перестает отвечать на внешние раздражители потребление памяти - либо утечки, либо просто нерациональное ее использование потребление процессора и дугие - специфические для предметной области, или комбинированные перечисленные выше.
  • #7: Причина как правило в 90% случаев - это человеческий фактор, т.е. ошибки разработчиков. Мы все люди, мы все делаем ошибки, и будем их делать. Нюансы сторонних библиотек и разнообразие окружения - это зачастую тоже человеческий ошибки, только других людей.
  • #9: В Windows, как и в других операционных системах, есть встроенная возможность снимать с процесса слепок памяти в любой момент времени Причем беглого анализа достаточно чтобы найти причину того или иного отклонения Более того, очень важно, параметры отклонений можно подобрать так, что сам факт наличия дампа - уже сигнал “Внимание”
  • #12: Поговорим о том, как же снимать дампы В докладе приводится сквозной пример - приложение SuperApp. Обычно если приложение должно работать в фоне, то в связке с ним идет и приложение-контроллер SuperController, который отвечает за то чтобы его подопечный жил и функционировал. Так вот, это приложение-контроллер можно нагрузить дополнительной работой и заставить мониторить важные показатели жизнедеятельности реального работника, и в случае отклонений этих показателей от нормы снимать дамп с наблюдаемого. Также, дампы умеют снимать Task Manager (встроенный в Windows) и очень мощная утилита procdump из sysinternals - на ней мы остановимся подробнее для демонстрации спектра возможностей.
  • #14: В качестве примеров Performance Counter - ов можно привести количество открытых файлов, количество прочитанных с диска или отосланных в сеть байт, и так далее.
  • #17: Немного технических деталей об анализе дампов. Для анализа нужны три компонента - отладочная информация, исполняемый файл и отладочные символы Анализ - это очень просто, то же самое что и отладка, то есть любой программист априори умеет это делать Это элементарно автоматизируемо, например с помощью отладчика cdb
  • #18: Пример - проблема обычно кроется в самых последних фреймах - вот выход за границы вектора
  • #20: Мы знаем как собирать и как анализировать дампы - если связать все вместе, получится такая картина. На клиенте На клиентской стороне SuperApp и SuperController работают в паре - SuperApp делает свою работу, SuperController следит за ним Как только происходит отклонение - SuperController снимает дамп и отсылает его на сервер (например, по протоколу FTP или HTTP) вместе со вспомогательной информацией. На сервере Присланный дамп попадает в хранилище, например на файловой системе или в базе данных В фоне процесс-аналитик SuperAnalyst запускает анализ дампов, извлекая нужную эксперту информацию О самых критичных проблемах процесс-аналитик сообщает эксперту например через почту или SMS. Иногда надо среагировать мгновенно.
  • #22: Технология для облегчения доступа к отладочной информации разных версий. Не нужно тратить время на поиск символов, достаточно просто указать один адрес, остальное сделает отладчик.
  • #23: Любое более-менее серьезное приложение имеет похожую систему обратной связи - например Windows, Mozilla и т.п.
  • #26: С помощью бесплатных Debugging Tools for Windows и SysInternals можно организовать подобную систему в тестовой лаборатории - причем за считанные дни, причем практически без дополнительных усилий со стороны программистов.