Systems and methods for crash analysis using code version history
A crash analysis system for identifying the cause of application crashes. The crash analysis system generates mapped stack traces that combine code version history data with logging information. The mapped stack traces are used to identify the causal stack frame which includes the function that caused the application crash. The crash analysis system also identifies the author of the function that caused the application crash and distributes a notification to the author that prompts the author to develop a fix that resolves the application crash.
1. A computer implemented method of identifying a cause of an application crash, the method comprising:
receiving a stack trace including multiple stack frames, each stack frame including a function that was called by an application during the application crash;
retrieving code version history data for each stack frame, the code version history data including a change to the function included in each stack frame;
extracting multiple change properties for each change in the code version history data;
mapping the change properties to the stack frames by associating each change included in the code version history data with the function included in the stack frames; and
identifying a causal stack frame based on the change properties for each stack frame, the causal stack frame including the function that caused the application crash;
receiving a patch that resolves the application crash; and
automatically pushing the patch that resolves the application crash to the function that caused the application crash.
2. The method of claim 1 , further comprising:
identifying an author of the function included in the causal stack frame based on the change properties; and
distributing a notification to the author, the notification assigning to the author a task of developing a patch that resolves the application crash.
3. The method of claim 1 , wherein the change properties include a change date that relates to an amount of time that has passed since a particular change was submitted.
4. The method of claim 3 , further comprising:
extracting at least one of a date or timestamp for each change from the code version history data;
calculating the change date for each change based on the extracted date or timestamp;
comparing the change date for each change to determine a most recent change date; and
identifying the causal stack frame by selecting a stack frame having the most recent change date.
5. The method of claim 1 , further comprising:
determining multiple causal stack frames based on the change properties;
identifying an author for each function included in the multiple causal stack frames based on the change properties for each stack frame included in the multiple causal stack frames; and
distributing a notification to the author of each function, the notification assigning to the author of each function a task of developing a patch that resolves the application crash.
6. The method of claim 1 , further comprising:
adding the causal stack frame to a crash repository; and
reviewing multiple files included in the application to determine if any other files include the function included in the causal stack frame.
7. The method of claim 1 , further comprising:
storing the causal stack frame in a crash repository including multiple causal stack frames;
identifying a vulnerability in a piece of code by comparing the piece of code to the multiple causal stack frames included in the crash repository; and
determining that the piece of code includes a vulnerability based on detecting a function included in at least one of the multiple causal stack frames in the piece of code.
8. The method of claim 1 , further comprising adding a path including a file name and a line number to each stack frame included in the stack trace.
9. The method of claim 1 , wherein the stack frames included in the stack trace are arranged in hierarchical order so that each function below a first line of the stack trace ultimately leads to a call of a function in the first line of the stack trace.
10. The method of claim 1 , wherein the code version history data is retrieved from a version control system that manages multiple code repositories including a code repository that stores each file included in the application.
11. A system for identifying a cause of an application crash, the system comprising:
a repository configured to store a stack trace including multiple stack frames, each stack frame including a function that was called by an application during the application crash;
a stack trace mapping service executing on a processor and being configured to:
receive the stack trace;
retrieve code version history data for the multiple stack frames, the code version history data including a change to the function included each stack frame;
extract multiple change properties for each change in the code version history data;
map the change properties to the stack frames by associating each change included in the code version history data to the function included in the stack frames; and
a diagnostics service executing on the processor and being configured to:
identify a causal stack frame based on the change properties for each stack frame, the causal stack frame including the function that caused the application crash;
receive a patch that resolves the application crash; and
automatically pushing the patch that resolves the application crash to the function that caused the application crash.
12. The system of claim 11 , wherein the diagnostics service is further configured to:
identify an author of the function included in the causal stack frame based on the change properties; and
distribute a notification to the author, the notification assigning to the author a task of developing a patch that resolves the application crash.
13. The system of claim 11 , wherein the change properties include a change date that relates to an amount of time that has passed since a particular change was submitted.
14. The system of claim 13 , wherein the stack trace mapping service is further configured to:
extract at least one of a date or timestamp for each change from the code version history data;
calculate the change date for each change based on the extracted date or timestamp;
compare the change date for each change to determine a most recent change date; and
the diagnostics service is further configured to identify the causal stack frame by selecting a stack frame having the most recent change date.
15. The system of claim 11 , further wherein the diagnostics service is further configured to:
determine multiple causal stack frames based on the change properties;
identify an author for each function included in the multiple causal stack frames based on the change properties for each stack frame included in the multiple causal stack frames; and
distribute a notification to the author for each function, the notification assigning a task of developing a patch that resolves the application crash to the author of each function.
16. The system of claim 11 , wherein the diagnostics service is further configured to add the causal stack frame to a crash repository; and
review multiple files included in the application to determine if any other files include the function included in the causal stack frame.
17. The system of claim 11 , wherein the diagnostics service is further configured to:
store the causal stack frame in a crash repository including multiple causal stack frames;
identify a vulnerability in a piece of code by comparing the piece of code to the multiple causal stack frames included in the crash repository; and
determine the piece of code includes a vulnerability based on detecting a function included in at least one of the multiple causal stack frames in the piece of code.
18. The system of claim 11 , wherein the stack trace mapping service is further configured to add a path including a file name and a line number to each stack frame included in the stack trace.
19. The system of claim 11 , wherein the stack frames included in the stack trace are arranged in a hierarchical order so that each function below a first line of the stack trace ultimately leads to a call of a function included in the first line of the stack trace.
20. The system of claim 11 , wherein the stack trace mapping service is further configured to retrieve the code version history data from a version control system that manages multiple code repositories including a code repository that stores each file included in the application.