feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: android mark sessions as crashed - #347

Merged
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run
Sep 29, 2021
Merged

feat: android mark sessions as crashed#347
bruno-garcia merged 5 commits into
mainfrom
feat/android-crashed-last-run

Conversation

@bruno-garcia

@bruno-garciabruno-garcia commented Sep 28, 2021

Copy link
Copy Markdown
Member

After sample "Crash in C":

image

This PR depends on the following changes:

  1. sentry-dotnet
  2. sentry-java

Description before commit: fbbd75e (#347) which now Pauses instead of Closes session on OnQuitting:

With ThrowKotlinOnBackground, sometimes it actually ends up with a graceful shutdown from the .NET point of view:

 Sentry: (Info) Ended session (SID: 671e7991231a42f6a319f75530816cf0; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.

And on restart there's no session open on disk to check if it crashed on the last run.

It is also possible that the .NET layer doesn't shutdown and on restart closes the old session while consulting the Android callback. In that case it works as expected:

Sentry: (Debug) Native Android SDK reported: 'crashedLastRun': 'True'

Logs for the case where it doesn't work as expected:

09-28 18:16:17.056 13009 13641 I Sentry : Uncaught exception received.
09-28 18:16:17.058 13009 13641 D Sentry : Capturing event: 6fc97bc74e1a4539aa836ed7122f6536
09-28 18:16:17.066 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.075 13009 13641 I Sentry : Not possible to read external files directory
09-28 18:16:17.075 13009 13641 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.077 13009 13641 I Sentry : Session is null on scope.withSession
09-28 18:16:17.081 13009 13642 W Sentry : Current envelope doesn't exist.
09-28 18:16:17.081 13009 13642 D Sentry : Adding Envelope to offline storage: /data/user/0/io.sentry.samples.unityofbugs/cache/sentry/6fc97bc74e1a4539aa836ed7122f6536.envelope
09-28 18:16:17.162 13009 13642 D Sentry : Serializing object: {"exception":{"values":[{"module":"java.lang","stacktrace":{"frames":[{"native":false,"filename":"Thread.kt","function":"run","in_app":false,"lineno":30,"module":"kotlin.concurrent.ThreadsKt$thread$thread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":6,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"},{"native":false,"filename":"KotlinPlugin.kt","function":"invoke","in_app":false,"lineno":18,"module":"unity.of.bugs.KotlinPlugin$throwOnBackgroundThread$1"}]},"thread_id":2436,"type":"Exception","value":"Kotlin 🐛 from a background thread."},{"mechanism":{"handled":false,"type":"UncaughtExceptionHandler"},"module":"java.lang","thread_id":2436,"type":"Error","value":"FATAL EXCEPTION [Thread-6]\nUnity version : 2019.4.21f1\nDevice model : motorola moto g(7) plus\nDevice fingerprint: motorola/lake_n/lake_n:10/QPWS30.61-21-18-7/fac4a:user/release-keys\n"}]},"level":"fatal","timestamp":"2021-09-28T22:16:17.058Z","breadcrumbs":[{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"created"},"level":"info","timestamp":"2021-09-28T22:05:37.413Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:05:37.501Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:05:37.507Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Registering integration: 'UnityBeforeSceneLoadIntegration'. ","timestamp":"2021-09-28T22:05:40.984Z"},{"category":"scene.beforeload","level":"info","message":"BeforeSceneLoad","timestamp":"2021-09-28T22:05:40.990Z"},{"category":"scene.changed","level":"info","message":"Changed active scene to '1_BugfarmScene'","timestamp":"2021-09-28T22:05:41.006Z"},{"category":"scene.loaded","level":"info","message":"Scene '1_BugfarmScene' was loaded","timestamp":"2021-09-28T22:05:41.008Z"},{"category":"unity.logger","level":"warning","message":"Here come the bugs 🐞🦋🐛🐜🕷!","timestamp":"2021-09-28T22:05:41.044Z"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:06:41.601Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22:06:41.898Z"},{"category":"device.event","data":{"action":"DREAMING_STARTED"},"level":"info","timestamp":"2021-09-28T22:06:41.973Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"stopped"},"level":"info","timestamp":"2021-09-28T22:06:42.014Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"saveInstanceState"},"level":"info","timestamp":"2021-09-28T22:06:42.018Z","type":"navigation"},{"category":"device.event","data":{"action":"SCREEN_OFF"},"level":"info","timestamp":"2021-09-28T22:06:42.276Z","type":"system"},{"category":"device.event","data":{"action":"DREAMING_STOPPED"},"level":"info","timestamp":"2021-09-28T22:10:04.519Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"started"},"level":"info","timestamp":"2021-09-28T22:10:04.657Z","type":"navigation"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"resumed"},"level":"info","timestamp":"2021-09-28T22:10:04.676Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Resuming session. ","timestamp":"2021-09-28T22:10:04.774Z"},{"category":"device.event","data":{"action":"SCREEN_ON"},"level":"info","timestamp":"2021-09-28T22:10:04.869Z","type":"system"},{"category":"ui.lifecycle","data":{"screen":"UnityPlayerActivity","state":"paused"},"level":"info","timestamp":"2021-09-28T22:12:04.731Z","type":"navigation"},{"category":"unity.logger","level":"info","message":"Sentry: (Debug) Pausing session. ","timestamp":"2021-09-28T22
09-28 18:16:17.191 13009 13642 D Sentry : Disk flush envelope fired
09-28 18:16:17.192 13009 13641 I Sentry : Invoking inner uncaught exception handler.
09-28 18:16:17.192 13009 13642 I Sentry : No permission (ACCESS_NETWORK_STATE) to check network status.
09-28 18:16:17.210 13009 13009 I Unity : onPause
09-28 18:16:17.232 13009 13146 I Unity : Sentry: (Info) Ended session (SID: c39ddda06c7f47a693d34d6b8f5bc016; DID: 474bc867-1fe0-492f-8ee7-0eaaec51dafd) with status 'Exited'.
09-28 18:16:17.235 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file.
09-28 18:16:17.241 13009 13146 I Unity : Sentry: (Debug) Deleting persisted session file with contents: {"update":{"sid":"c39ddda06c7f47a693d34d6b8f5bc016","did":"474bc867-1fe0-492f-8ee7-0eaaec51dafd","init":true,"started":"2021-09-28T18:16:04.171537-04:00","timestamp":"2021-09-28T22:16:04.171951+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"unity-of-bugs@0.1","environment":"production"}}}

The times where the .NET session exits are those where OnQuitting gets called:

@github-actions

github-actionsBot commented Sep 28, 2021

Copy link
Copy Markdown
Contributor
Messages
📖Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 549c8de

@marandaneto

Copy link
Copy Markdown
Contributor

what should we do about:

Logs for the case where it doesn't work as expected:

@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

what should we do about:

Logs for the case where it doesn't work as expected:

Nothing. Thst was happening before I changed the onQuitting.

@bruno-garcia
bruno-garcia merged commit 719392c into mainSep 29, 2021
@bruno-garcia
bruno-garcia deleted the feat/android-crashed-last-run branch September 29, 2021 15:24
@bruno-garcia

Copy link
Copy Markdown
MemberAuthor

We'll take other changes in and do a final submodule update before we release (to take the tags)

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@bruno-garcia@marandaneto@bitsandfoxes