Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mobile crash data model spec #362

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
3a9f9c6
add initial crash yaml file
tonzhan2 Oct 3, 2023
1a469a4
updated data model to be more in line with mobile-events PR
tonzhan2 Oct 4, 2023
0580004
update platform definition
tonzhan2 Oct 9, 2023
77c08f6
update domain to be device
tonzhan2 Oct 11, 2023
093eab2
Merge branch 'main' into develop/add-data-model-for-mobile-crashes
breedx-splk Oct 11, 2023
09cfd23
updated to match regex
tonzhan2 Oct 12, 2023
ff95d35
Merge branch 'develop/add-data-model-for-mobile-crashes' of https://g…
tonzhan2 Oct 12, 2023
217589d
Update model/logs/mobile-crashes.yaml
tonzhan2 Oct 13, 2023
53f2f1d
Update model/logs/mobile-crashes.yaml
tonzhan2 Oct 13, 2023
5768c0c
Update model/logs/mobile-crashes.yaml
tonzhan2 Oct 13, 2023
a54a36c
Update model/logs/mobile-crashes.yaml
tonzhan2 Oct 13, 2023
96684b0
rename isappinforeground to foreground
tonzhan2 Oct 13, 2023
a3e635f
Merge branch 'main' into develop/add-data-model-for-mobile-crashes
breedx-splk Oct 13, 2023
a30d4d9
replacing attribute_group nested val with attributes
tonzhan2 Oct 16, 2023
6bce6bd
Merge branch 'develop/add-data-model-for-mobile-crashes' of https://g…
tonzhan2 Oct 16, 2023
b6dd029
took contents from event.data and put them as top level attributes
tonzhan2 Oct 25, 2023
aeaabee
denoted which attributes were specific to android crashes vs ios crashes
tonzhan2 Oct 25, 2023
62225df
updated attributes to reference existing attributes
tonzhan2 Oct 31, 2023
c775eee
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 7, 2023
90d9e1a
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 7, 2023
317f6d8
renamed id to ref for existing attributes
tonzhan2 Nov 9, 2023
ead554f
resolve merge conflicts
tonzhan2 Nov 9, 2023
1a37960
added details to ios crash report description
tonzhan2 Nov 30, 2023
62a7b50
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
d62654f
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
5b2ba92
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
4dbe3d6
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
e6f30e9
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
b8645fd
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
a71b327
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
4604c4a
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
9b43c9a
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
d5b5dda
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
9d9710b
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
565a746
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
02be063
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
bf1be5a
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
1adf71f
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
0e997d1
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
bf5ca3e
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
7211652
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
03bb13b
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
de47a52
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
50b52b2
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
6ed33eb
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
d2e0035
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
e93cce9
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
bdbe2ad
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
4e91c6a
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
7a3a03b
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
32ceee0
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
b836574
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
c9cce9b
Update model/logs/mobile-crashes.yaml
tonzhan2 Nov 30, 2023
acf05b1
Merge remote-tracking branch 'upstream/main' into develop/add-data-mo…
tonzhan2 Nov 30, 2023
b50d4cd
Merge branch 'main' into develop/add-data-model-for-mobile-crashes
tonzhan2 Feb 13, 2024
0ee715a
removed trailing space
tonzhan2 Mar 20, 2024
70ae48a
update doc
tonzhan2 Mar 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added docs/mobile/mobile-crashes.md
Empty file.
46 changes: 46 additions & 0 deletions model/logs/mobile-crashes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
groups:
- id: mobile-crash-event
prefix: hello
type: event
brief: >
This document defines attributes for crashes represented using Log Record Events.
`event.domain` is 'device' and `event.name` is 'crash'.
Copy link
Member

@marandaneto marandaneto Mar 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

event.name should allow something different than crash - or make it more generic.
crash means the application exited, but this format should allow swallowed errors - but captured as well which is technically not a crash but rather an error/exception.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current thinking is that we will model a separate event type for non-fatal errors/exceptions. There is already an event type called exception in the spec but that's more for span events, that is, errors occuring in the context of a span, but we will need to model a similar event for a more generic usecase.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any reason to make that a different event type? the only difference between a crash and an error is its severity, the metadata is 100% the same.

attributes:
- ref: ios.state
requirement_level:
recommended: If the crash occurred on an iOS device.
Comment on lines +9 to +11
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ios is specifically for iPhone, macOS is for MacBook and friends.
Maybe we call it apple instead? since the crash reports share the same format on all Apple platforms.

- ref: android.state
requirement_level:
recommended: If the crash occurred on an Android device.
Comment on lines +9 to +14
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should just call it state and allow the OS name to be set such as ios or android, at least is flexible enough in case a new OS appears rather than introducing attributes for every OS.

- ref: exception.stacktrace
requirement_level:
recommended: If the crash occurred on an Android device.
brief: >
The contents of printStackTrace() being called on the throwable
- ref: thread.id
requirement_level:
recommended: If the crash occurred on an Android device.
brief: >
The id of the thread as output by Thread.currentThread().getId()
- ref: thread.name
requirement_level:
recommended: If the crash occurred on an Android device.
brief: >
The name of the thread as output by Thread.currentThread().getName()
- ref: exception.message
requirement_level:
recommended: If the crash occurred on an Android device.
- id: ios.crash_report
requirement_level:
recommended: If the crash occurred on an iOS device.
brief: >
The contents from PLCrashReporter
AlexanderWert marked this conversation as resolved.
Show resolved Hide resolved
Comment on lines +36 to +37
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be possible to make the reporter agnostic?
In case I use KSCrash, I'd like to use the very same data model.
Maybe introducing a new property that tells what's the reporter format, such as KSCrash, PLCrashReporter or anything else.

Contains three primary elements. "images", "threads" and "signal". These could be broken out as individual elements
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is meant here by "These could be broken out as individual elements"?

Do you mean put them into separate attributes?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Images and Threads are arrays containing details of objects linked and stack traces respectively.
The signal elements are broken out separately. I will add a sample to the previous comment

Given that crash reports are only sent on the subsequent execution of the app, both the customer app or the phone os may have been upgraded.
As such both the original app version and os version should be sent.
"appMinorVersionAtCrash" - minor version of customer app at crash
"appMajorVersionAtCrash" - major version of customer app at crash
"osVersionAtCrash" - version of iOS at crash
For ios crashes
type: string
examples: ['*Contents of PL CrashReporter crash report*']