MediLog

  • en
  • Home
  • Blog
  • Mehr
Fediverse

Crash logs

Starting with version 3.0 MediLog introduced the ability to collect crash logs. Crash logs get created in case of a fatal error which cause the app to crash. I know crash logs are a controversial subject for security minded individuals, so I want to explain how this feature has been implemented, what exactly is happening and why I think the way I implemented it is acceptable.


What technology is used?

The library used to collect crash logs is Acra , it’s FOSS and is used in many other FOSS projects such as the F-Droid client. There are several ways to implement crash logging with Acra, the way MediLog has chosen is without a back-end but rather email only.


When do logs get collected?

Ideally never! Realistically, whenever the app crashes. This should be very rare though. As the developer I have a strong interest in not creating crashes!

However, crashes do occur, and when they do, troubleshooting is extremely difficult without visibility into what happened on a users device.

This is where crash logs come into play. Android by default allows to collect very comprehensive crash logs, covering everything which happened on a device across all applications. And there are means to send it off to the developers. However, because these logs tend to be very verbose it’s likely some personal data gets collected as well, which I don’t need and don’t want.

Arca on the other hand creates very targeted crash logs which only cover the things related to MediLog and to the crash at hand. This is better for you because less data is collected, and much better for me because I don’t need to sift through 100 MB of text.


What does the process look like?

  1. Crash occurs, which will trigger Acra

  2. The dialog below pops up. Here you got the first opportunity to say “no” to sending a crash log, or even better, give me some insight into what you did before the crash occurred:

Crash Log Dialog
  1. After you pressed ok your local email client will open up. Include some friendly words, maybe add yourself as additional recipient and send off the email:
Crash log Email

As can be seen from the attachment size in the email screenshot, the crash log is only a small section of what a regular Android Crash log would cover. A lot less likely to catch any personal data that way. Here’s an example of a crash log:

SampleCrashLog.txt
Show content
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
REPORT_ID=5d91f932-2511-4a8b-803f-5b8713ea0d8b
APP_VERSION_CODE=5452
APP_VERSION_NAME=3.0.0 - debug
PACKAGE_NAME=com.zell_mbc.medilog
FILE_PATH=/data/user/0/com.zell_mbc.medilog/files
PHONE_MODEL=AOSP on IA Emulator
BRAND=google
PRODUCT=sdk_gphone_x86_arm
ANDROID_VERSION=9
BUILD=BOARD=goldfish_x86
  BOOTLOADER=unknown
  BRAND=google
  CPU_ABI=x86
  CPU_ABI2=armeabi-v7a
  DEVICE=generic_x86_arm
  DISPLAY=sdk_gphone_x86_arm-userdebug 9 PSR1.180720.122 6736742 dev-keys
  FINGERPRINT=google/sdk_gphone_x86_arm/generic_x86_arm:9/PSR1.180720.122/6736742:userdebug/dev-keys
  HARDWARE=ranchu
  HOST=abfarm200
  ID=PSR1.180720.122
  IS_DEBUGGABLE=true
  IS_EMULATOR=true
  MANUFACTURER=Google
  MODEL=AOSP on IA Emulator
  PERMISSIONS_REVIEW_REQUIRED=false
  PRODUCT=sdk_gphone_x86_arm
  RADIO=unknown
  SUPPORTED_32_BIT_ABIS=["x86","armeabi-v7a","armeabi"]
  SUPPORTED_64_BIT_ABIS=[]
  SUPPORTED_ABIS=["x86","armeabi-v7a","armeabi"]
  TAGS=dev-keys
  TIME=1596587219000
  TYPE=userdebug
  UNKNOWN=unknown
  USER=android-build
  VERSION.ACTIVE_CODENAMES=[]
  VERSION.BASE_OS=
  VERSION.CODENAME=REL
  VERSION.FIRST_SDK_INT=28
  VERSION.INCREMENTAL=6736742
  VERSION.PREVIEW_SDK_INT=0
  VERSION.RELEASE=9
  VERSION.RESOURCES_SDK_INT=28
  VERSION.SDK=28
  VERSION.SDK_INT=28
  VERSION.SECURITY_PATCH=2019-08-05
TOTAL_MEM_SIZE=812531712
AVAILABLE_MEM_SIZE=255401984
BUILD_CONFIG=BUILD_TYPE=release
  DEBUG=false
  LIBRARY_PACKAGE_NAME=org.acra.dialog
  VERSION_NAME=5.11.3
CUSTOM_DATA=
IS_SILENT=false
STACK_TRACE=android.database.sqlite.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
	at net.sqlcipher.database.SQLiteCompiledSql.native_compile(Native Method)
	at net.sqlcipher.database.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:89)
	at net.sqlcipher.database.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
	at net.sqlcipher.database.SQLiteProgram.<init>(SQLiteProgram.java:91)
	at net.sqlcipher.database.SQLiteQuery.<init>(SQLiteQuery.java:50)
	at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:60)
	at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:2019)
	at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1905)
	at net.sqlcipher.database.SQLiteDatabase.keyDatabase(SQLiteDatabase.java:2672)
	at net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal(SQLiteDatabase.java:2602)
	at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1250)
	at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1325)
	at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:167)
	at net.sqlcipher.database.SupportHelper.getWritableDatabase(SupportHelper.java:83)
	at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:632)
	at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:451)
	at com.zell_mbc.medilog.settings.SettingsDao_Impl.getValue(SettingsDao_Impl.java:350)
	at com.zell_mbc.medilog.settings.SettingsViewModel$getValue$1$j$1.invokeSuspend(SettingsViewModel.kt:60)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
	at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@530fd2f, Dispatchers.IO]

INITIAL_CONFIGURATION=colorMode=5
  densityDpi=160
  fontScale=1.3
  hardKeyboardHidden=HARDKEYBOARDHIDDEN_NO
  keyboard=KEYBOARD_QWERTY
  keyboardHidden=KEYBOARDHIDDEN_NO
  locale=en_DE
  mcc=310
  mnc=260
  navigation=NAVIGATION_NONAV
  navigationHidden=NAVIGATIONHIDDEN_YES
  orientation=ORIENTATION_PORTRAIT
  screenHeightDp=952
  screenLayout=SCREENLAYOUT_SIZE_LARGE+SCREENLAYOUT_LONG_NO+SCREENLAYOUT_LAYOUTDIR_LTR+SCREENLAYOUT_ROUND_NO
  screenWidthDp=600
  seq=10
  smallestScreenWidthDp=600
  touchscreen=TOUCHSCREEN_FINGER
  uiMode=UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO
  userSetLocale=false
  windowConfiguration={ mBounds=Rect(0, 0 - 0, 0) mAppBounds=Rect(0, 0 - 600, 976) mWindowingMode=fullscreen mActivityType=undefined}
CRASH_CONFIGURATION=colorMode=5
  densityDpi=160
  fontScale=1.3
  hardKeyboardHidden=HARDKEYBOARDHIDDEN_NO
  keyboard=KEYBOARD_QWERTY
  keyboardHidden=KEYBOARDHIDDEN_NO
  locale=en_DE
  mcc=310
  mnc=260
  navigation=NAVIGATION_NONAV
  navigationHidden=NAVIGATIONHIDDEN_YES
  orientation=ORIENTATION_PORTRAIT
  screenHeightDp=952
  screenLayout=SCREENLAYOUT_SIZE_LARGE+SCREENLAYOUT_LONG_NO+SCREENLAYOUT_LAYOUTDIR_LTR+SCREENLAYOUT_ROUND_NO
  screenWidthDp=600
  seq=10
  smallestScreenWidthDp=600
  touchscreen=TOUCHSCREEN_FINGER
  uiMode=UI_MODE_TYPE_NORMAL+UI_MODE_NIGHT_NO
  userSetLocale=false
  windowConfiguration={ mBounds=Rect(0, 0 - 0, 0) mAppBounds=Rect(0, 0 - 600, 976) mWindowingMode=fullscreen mActivityType=undefined}
DISPLAY=0.currentSizeRange.smallest=[600,528]
  0.currentSizeRange.largest=[1024,952]
  0.flags=FLAG_SUPPORTS_PROTECTED_BUFFERS+FLAG_SECURE
  0.metrics.density=1
  0.metrics.densityDpi=160
  0.metrics.scaledDensity=x1.0
  0.metrics.widthPixels=600
  0.metrics.heightPixels=976
  0.metrics.xdpi=160
  0.metrics.ydpi=160
  0.realMetrics.density=1
  0.realMetrics.densityDpi=160
  0.realMetrics.scaledDensity=x1.0
  0.realMetrics.widthPixels=600
  0.realMetrics.heightPixels=1024
  0.realMetrics.xdpi=160
  0.realMetrics.ydpi=160
  0.name=Built-in Screen
  0.realSize=[600,1024]
  0.rectSize=[0,0,600,976]
  0.size=[600,976]
  0.rotation=ROTATION_0
  0.isValid=true
  0.orientation=0
  0.refreshRate=60.000003814697266
  0.height=976
  0.width=600
  0.pixelFormat=1
USER_COMMENT=kjhkhkh
USER_EMAIL=Email body?
USER_APP_START_DATE=2024-08-28T11:49:34.418+02:00
USER_CRASH_DATE=2024-08-28T11:49:35.298+02:00
DUMPSYS_MEMINFO=
LOGCAT=08-28 11:48:54.247 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->setTranslationX(F)Z (dark greylist, linking)
08-28 11:48:54.247 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->setTranslationY(F)Z (dark greylist, linking)
08-28 11:48:54.248 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->getScaleX()F (dark greylist, linking)
08-28 11:48:54.447 W/ell_mbc.medilo( 7467): Class androidx.compose.runtime.snapshots.SnapshotStateList failed lock verification and will run slower.
08-28 11:48:54.447 W/ell_mbc.medilo( 7467): Common causes for lock verification issues are non-optimized dex code
08-28 11:48:54.447 W/ell_mbc.medilo( 7467): and incorrect proguard optimizations.
08-28 11:48:54.737 D/HostConnection( 7467): HostConnection::get() New Host Connection established 0xe94b4190, tid 7517
08-28 11:48:54.737 D/HostConnection( 7467): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_sync_buffer_data GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_1
08-28 11:48:54.741 I/ConfigStore( 7467): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
08-28 11:48:54.741 I/ConfigStore( 7467): android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
08-28 11:48:54.741 I/OpenGLRenderer( 7467): Initialized EGL, version 1.4
08-28 11:48:54.741 D/OpenGLRenderer( 7467): Swap behavior 1
08-28 11:48:54.741 W/OpenGLRenderer( 7467): Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
08-28 11:48:54.741 D/OpenGLRenderer( 7467): Swap behavior 0
08-28 11:48:54.742 D/eglCodecCommon( 7467): setVertexArrayObject: set vao to 0 (0) 0 0
08-28 11:48:54.742 D/EGL_emulation( 7467): eglCreateContext: 0xe9485600: maj 3 min 1 rcv 4
08-28 11:48:54.744 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:48:54.746 E/eglCodecCommon( 7467): glUtilsParamSize: unknow param 0x000082da
08-28 11:48:54.746 E/eglCodecCommon( 7467): glUtilsParamSize: unknow param 0x000082da
08-28 11:48:54.767 D/HostConnection( 7467): createUnique: call
08-28 11:48:54.767 D/HostConnection( 7467): HostConnection::get() New Host Connection established 0xe94b4d20, tid 7517
08-28 11:48:54.771 D/HostConnection( 7467): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_sync_buffer_data GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_1
08-28 11:48:54.771 E/eglCodecCommon( 7467): GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1
08-28 11:48:54.827 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{d3bb441 V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:48:54.978 I/Choreographer( 7467): Skipped 72 frames!  The application may be doing too much work on its main thread.
08-28 11:48:55.032 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->getScaleX()F (dark greylist, linking)
08-28 11:48:55.233 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{515290d V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:48:55.235 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (light greylist, reflection)
08-28 11:48:55.235 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (light greylist, reflection)
08-28 11:48:55.235 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V (light greylist, reflection)
08-28 11:48:55.389 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:48:55.391 D/eglCodecCommon( 7467): setVertexArrayObject: set vao to 0 (0) 1 2
08-28 11:48:56.573 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{515290d V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:48:57.480 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{515290d V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:48:57.573 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->getScaleX()F (dark greylist, linking)
08-28 11:48:57.584 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{7024341 V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:48:57.712 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:48:57.752 I/chatty  ( 7467): uid=10094(com.zell_mbc.medilog) identical 2 lines
08-28 11:48:57.755 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:48:57.760 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.window.PopupLayout{883e36 V.E...... ........ 0,0-210,256 #1020002 android:id/content} during second layout pass: posting in next frame
08-28 11:48:57.768 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:48:57.779 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:48:59.337 D/ProfileInstaller( 7467): Installing profile for com.zell_mbc.medilog
08-28 11:49:02.983 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:03.023 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:03.024 D/OpenGLRenderer( 7467): endAllActiveAnimators on 0xe6ad4f00 (UnprojectedRipple) with handle 0xcdb5a580
08-28 11:49:03.033 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:03.105 W/ActivityThread( 7467): handleWindowVisibility: no activity for token android.os.BinderProxy@80c0fcb
08-28 11:49:03.246 I/ell_mbc.medilo( 7467): JIT allocated 61KB for stack maps of void com.zell_mbc.medilog.AboutActivity$ShowContent$1.invoke(androidx.compose.runtime.Composer, int)
08-28 11:49:03.294 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->getScaleX()F (dark greylist, linking)
08-28 11:49:03.306 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{f423093 V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:49:03.339 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:11.405 W/ActivityThread( 7467): handleWindowVisibility: no activity for token android.os.BinderProxy@1397518
08-28 11:49:11.513 W/ell_mbc.medilo( 7467): Accessing hidden method Landroid/view/RenderNode;->getScaleX()F (dark greylist, linking)
08-28 11:49:11.688 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{3ca357d V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:49:11.739 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:11.743 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:11.757 D/EGL_emulation( 7467): eglMakeCurrent: 0xe9485600: ver 3 1 (tinfo 0xe94837a0)
08-28 11:49:12.723 W/View    ( 7467): requestLayout() improperly called by androidx.compose.ui.platform.ViewLayerContainer{3ca357d V.E...... ......ID 0,0-0,0} during layout: running second layout pass
08-28 11:49:31.932 I/ell_mbc.medilo( 7619): Late-enabling -Xcheck:jni
08-28 11:49:31.968 W/ell_mbc.medilo( 7619): Unexpected CPU variant for X86 using defaults: x86
08-28 11:49:34.390 I/ACRA    ( 7619): ACRA is enabled for com.zell_mbc.medilog, initializing...
08-28 11:49:34.433 W/ell_mbc.medilo( 7619): Accessing hidden field Landroid/os/Trace;->TRACE_TAG_APP:J (light greylist, reflection)
08-28 11:49:34.433 W/ell_mbc.medilo( 7619): Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (light greylist, reflection)
08-28 11:49:34.526 D/AppCompatDelegate( 7619): Checking for metadata for AppLocalesMetadataHolderService : Service not found
08-28 11:49:34.556 W/ell_mbc.medilo( 7619): Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
08-28 11:49:34.557 W/ell_mbc.medilo( 7619): Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
08-28 11:49:34.557 W/ell_mbc.medilo( 7619): Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
08-28 11:49:34.557 W/ell_mbc.medilo( 7619): Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
08-28 11:49:34.624 W/ell_mbc.medilo( 7619): Accessing hidden field Ljava/nio/Buffer;->address:J (light greylist, reflection)
08-28 11:49:35.281 E/ACRA    ( 7619): ACRA caught a SQLiteException for com.zell_mbc.medilog
08-28 11:49:35.281 E/ACRA    ( 7619): android.database.sqlite.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteCompiledSql.native_compile(Native Method)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:89)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteProgram.<init>(SQLiteProgram.java:91)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteQuery.<init>(SQLiteQuery.java:50)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:60)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:2019)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1905)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDatabase.keyDatabase(SQLiteDatabase.java:2672)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal(SQLiteDatabase.java:2602)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1250)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1325)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:167)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at net.sqlcipher.database.SupportHelper.getWritableDatabase(SupportHelper.java:83)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at androidx.room.RoomDatabase.inTransaction(RoomDatabase.kt:632)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.kt:451)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at com.zell_mbc.medilog.settings.SettingsDao_Impl.getValue(SettingsDao_Impl.java:350)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at com.zell_mbc.medilog.settings.SettingsViewModel$getValue$1$j$1.invokeSuspend(SettingsViewModel.kt:60)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
08-28 11:49:35.281 E/ACRA    ( 7619): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
08-28 11:49:35.281 E/ACRA    ( 7619): 	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@530fd2f, Dispatchers.IO]

INSTALLATION_ID=a8d43370-16fe-4d32-99c8-5068f04322ce
DEVICE_FEATURES=android.hardware.sensor.proximity=true
  android.software.adoptable_storage=true
  android.hardware.sensor.accelerometer=true
  android.hardware.faketouch=true
  android.software.backup=true
  android.hardware.touchscreen=true
  android.hardware.touchscreen.multitouch=true
  android.software.print=true
  android.software.voice_recognizers=true
  android.software.picture_in_picture=true
  android.hardware.fingerprint=true
  android.hardware.sensor.gyroscope=true
  android.software.cant_save_state=true
  android.hardware.sensor.relative_humidity=true
  android.hardware.camera.autofocus=true
  com.google.android.feature.GOOGLE_BUILD=true
  android.hardware.telephony.gsm=true
  android.hardware.audio.output=true
  android.software.verified_boot=true
  android.hardware.camera.front=true
  android.hardware.screen.portrait=true
  android.hardware.sensor.ambient_temperature=true
  android.software.home_screen=true
  android.hardware.microphone=true
  android.software.autofill=true
  android.hardware.sensor.compass=true
  android.hardware.touchscreen.multitouch.jazzhand=true
  android.hardware.sensor.barometer=true
  android.software.app_widgets=true
  android.software.input_methods=true
  android.hardware.sensor.light=true
  android.software.device_admin=true
  android.hardware.camera=true
  android.hardware.screen.landscape=true
  android.hardware.ram.normal=true
  android.software.managed_users=true
  android.software.webview=true
  android.hardware.camera.capability.manual_post_processing=true
  android.hardware.camera.any=true
  android.software.connectionservice=true
  android.hardware.touchscreen.multitouch.distinct=true
  android.hardware.location.network=true
  android.hardware.camera.ar=true
  android.software.cts=true
  android.hardware.camera.capability.manual_sensor=true
  com.google.android.apps.dialer.SUPPORTED=true
  android.hardware.camera.level.full=true
  android.hardware.wifi.direct=true
  android.software.live_wallpaper=true
  com.google.android.feature.GOOGLE_EXPERIENCE=true
  com.google.android.feature.EXCHANGE_6_2=true
  android.hardware.location.gps=true
  android.software.midi=true
  android.hardware.wifi=true
  android.hardware.location=true
  android.hardware.telephony=true
  glEsVersion=3.1
ENVIRONMENT=getDataDirectory=/data
  getDataSystemDirectory=/data/system
  getDownloadCacheDirectory=/data/cache
  getExternalStorageDirectory=/storage/emulated/0
  getExternalStorageState=mounted
  getLegacyExternalStorageDirectory=/sdcard
  getLegacyExternalStorageObbDirectory=/sdcard/Android/obb
  getOemDirectory=/oem
  getRootDirectory=/system
  getStorageDirectory=/storage
  getVendorDirectory=/vendor
  isExternalStorageEmulated=true
  isExternalStorageRemovable=false
SHARED_PREFERENCES=default.etFatMinMax=14-25
  default.swBloodPressurePdfDaySeparatorLines=true
  default.cbWeightShowValues=true
  default.cbOximetryHighlightValues=true
  default.grade3=180/110
  default.grade2=100/80
  default.lpAppTheme=MODE_NIGHT_YES
  default.grade1=140/90
  default.etGlucoseThresholds=70-175
  default.swOximetryBlendInDiary=false
  default.colourStyle=Blue
  default.cbWeightMovingAverageTrendline=false
  default.cbBloodPressureHighlightValues=true
  default.BLOODPRESSUREFILTEREND=0
  default.etBad=Schlecht
  default.etPdfTextSize=10
  default.delimiter=,
  default.cbShowGlucoseGrid=true
  default.WEIGHT_ROLLING_FILTER_VALUE=1
  default.cbGlucoseLandscape=false
  default.WEIGHT_ROLLING_FILTER_TIMEFRAME=3
  default.spEnableBiometric=false
  default.etTemperatureThresholds=36.5-37.5
  default.cbLogBodyFat=true
  default.cbBloodPressureLandscape=false
  default.quickEntry=true
  default.cbShowBloodPressureLegend=false
  default.showTabText=false
  default.etTextTemplates=
  default.spTurnOnCrashLogs=true
  default.cbShowOximetryGrid=true
  default.cbShowWeightGrid=false
  default.etTimezones=0-12-18
  default.swGlucoseBlendInDiary=false
  default.WEIGHTFILTEREND=0
  default.swDiaryBlendInItems=false
  default.swOximetryPdfDaySeparatorLines=true
  default.active_tabs=1,2,3,4,5,6,7
  default.etBloodPressureUnit=mmHg
  default.swShowBadEmoji=true
  default.cbShowPulse=false
  default.cbShowGlucoseThresholds=true
  default.last_app_version=5452
  default.encryptedDB=true
  default.listTextSize=16
  default.etTare=0
  default.cbShowBloodPressureGrid=false
  default.encryptedAttachments=true
  default.swBloodPressureBlendInDiary=false
  default.PROFILE_NAME=Hidden Name
  default.evWaterThreshold=2000
  default.swWeightPdfDaySeparatorLines=true
  default.etRowPadding=0
  default.liPdfDataOrder=ASC
  default.tvBackupUri=content://com.android.providers.downloads.documents/tree/downloads
  default.swWeightShowtime=true
  default.acra.user.email=Email body?
  default.liActiveTabs=["1","2","3","4","5","6","7"]
  default.cbShowGlucoseLegend=false
  default.STOPWATCH=1724838543812
  default.etOximetryThresholds=95
  default.liDiaryPageSize=A4
  default.activeTabs=1,2,3,4,5,6,7
  default.etHeight=0
  default.showTabIcon=true
  default.ACTIVE_PROFILE=1
  default.cbShowOximetryLegend=false
  default.cbLogKetone=true
  default.DIARY_ROLLING_FILTER_TIMEFRAME=3
  default.spBlockScreenshots=false
  default.cbEnableAttachments=false
  default.cbWeightLandscape=false
  default.swGlucosePdfDaySeparatorLines=true
  default.liBloodPressurePageSize=A4
  default.liOximetryPaperSize=A4
  default.cbGlucoseHighlightValues=true
  default.cbWeightHighlightValues=true
  default.etBloodPressureMovingAverageSize=6
  default.cbBloodPressureShowValues=true
  default.swDiaryShowtime=true
  default.DIARY_FILTER_MODE=2
  default.swDynamicColor=true
  default.etNotGood=Nicht so gut
  default.activeTab=0
  default.swGlucoseShowtime=true
  default.BLOODPRESSURE_ROLLING_FILTER_TIMEFRAME=3
  default.databasePin=a00a8d1b-7af5-44a5-be4e-b3a7605d20c1
  default.cbShowWeightLegend=false
  default.cbOximetryLandscape=false
  default.swShowNotGoodEmoji=true
  default.swShowGoodEmoji=false
  default.DIARYFILTEREND=0
  default.cbBloodPressureMovingAverageTrendline=true
  default.liGlucosePaperSize=A4
  default.etMultiMeasurementsWindow=0
  default.etAuthenticationTimeout=5
  default.etWeightThreshold=80
  default.liWeightUnit=kg
  default.swBloodPressureShowtime=true
  default.cbShowBloodPressureThreshold=true
  default.etGood=Alles gut
  default.cbDiaryLandscape=false
  default.swWeightBlendInDiary=true
  default.BLOODPRESSURE_ROLLING_FILTER_VALUE=1
  default.DIARYCATEGORYFILTER=
  default.WEIGHT_FILTER_MODE=0
  default.lpGlucoseUnit=mg/dL
  default.etWeightMovingAverageSize=6
  default.swScrollableTabs=false
  default.ACTIVETAB=diary_route
  default.swOximetryShowtime=true
  default.cbShowWeightThreshold=true
  default.LAST_BACKUP=1724160666635
  default.cbLogHeartRhythm=false
  default.BLOODPRESSUREFILTERSTART=1711222441598
  default.etHypotension=90/60
  default.liWeightPaperSize=A4
  default.BLOODPRESSURE_FILTER_MODE=2
  default.WEIGHTFILTERSTART=1678298514714
  default.DIARY_ROLLING_FILTER_VALUE=1
  default.DIARYFILTERSTART=1680701335133
  default.LAST_BACKUP_CHECK=1724789165863
  default.cbShowOximetryThresholds=true

Can you disable Crash logs?

If you don’t like this feature at all, you are able to “turn off” crash logs and you will never be bothered with the dialog above. But please consider that in case a crash happens during the startup of the app there won’t be a chance to turn this back on. And if I can’t figure out what’s wrong some other way this may mean there is no way to get access to your data again. In short, if you decide to switch crash logs off, make sure your backups are working.

Crash Log Setting
© MediLog 2026
Fediverse
Impressum Datenschutz