ACRA / acralyzer

Open source backend for ACRA reports.
GNU General Public License v3.0
489 stars 90 forks source link

Report with wrong data crashing the browse reports page #37

Closed Ereza closed 11 years ago

Ereza commented 11 years ago

I am using ACRA+Acralyzer for my projects, and I have received a report which is crashing Acralyzer views (if I try to browse reports, and this report is on the list, I just get the loading image with the bug icon).

Maybe it has something to do with the report being from the BlackBerry runtime for Android, or with the strange dates it has (uptime is also strangely null).

Watching the page response from Acralyzer from the browse reports page, I can see that this report has a "null" key:

{"total_rows":13,"offset":0,"rows":[
// 12 other rows with correct info //
{"id":"956e9ca3-ba3f-4be0-9537-aa7c75a5b1b8","key":null,"value":{"user_crash_date":"2013-05-17T16:16:01.000+561930:14","android_version":"2.3.3","application_version_name":"3.0.4","signature":{"full":"java.lang.NullPointerException at cat.ereza.properbusbcn.fragments.SearchFragment.onCreateView(SearchFragment.java:192)","digest":"java.lang.NullPointerException : SearchFragment.java:192"},"device":"RIM BlackBerry BlackBerry Runtime for Android Apps"}}
]}

I attach the full report (extracted from Futon) here:

{
   "_id": "956e9ca3-ba3f-4be0-9537-aa7c75a5b1b8",
   "_rev": "1-eab84b0edd323478817fad5c1b3d72d9",
   "USER_EMAIL": "N/A",
   "SETTINGS_GLOBAL": {
   },
   "DEVICE_FEATURES": {
       "android.hardware.camera": true,
       "android.hardware.location.network": true,
       "android.hardware.wifi": true,
       "android.hardware.microphone": true,
       "glEsVersion": "2.0",
       "android.hardware.location": true,
       "android.hardware.location.gps": true,
       "android.hardware.sensor.gyroscope": true,
       "android.hardware.touchscreen.multitouch": true,
       "android.hardware.camera.front": true,
       "android.hardware.touchscreen": true,
       "android.hardware.sensor.compass": true,
       "android.hardware.sensor.accelerometer": true
   },
   "PHONE_MODEL": "BlackBerry Runtime for Android Apps",
   "SETTINGS_SECURE": {
       "MOUNT_UMS_NOTIFY_ENABLED": 1,
       "ASSISTED_GPS_ENABLED": 1,
       "CDMA_CELL_BROADCAST_SMS": 1,
       "PREFERRED_CDMA_SUBSCRIPTION": 1,
       "DEFAULT_INPUT_METHOD": "com.rim.inputmethod/.BlackBerryIME",
       "ENABLED_INPUT_METHODS": [
           "com.rim.inputmethod/.BlackBerryIME"
       ],
       "BLUETOOTH_ON": 0,
       "BACKUP_TRANSPORT": "android/com.android.internal.backup.LocalTransport",
       "MOUNT_PLAY_NOTIFICATION_SND": 1,
       "PREFERRED_NETWORK_MODE": 0,
       "MOUNT_UMS_AUTOSTART": 0,
       "INSTALL_NON_MARKET_APPS": 0,
       "ALLOW_MOCK_LOCATION": 0,
       "WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON": 0,
       "USB_MASS_STORAGE_ENABLED": 1,
       "HTTP_PROXY": "",
       "NETWORK_PREFERENCE": 1,
       "LOCATION_PROVIDERS_ALLOWED": "network,gps",
       "BACKUP_ENABLED": 0,
       "ANDROID_ID": "32389f571392509a",
       "WIFI_ON": 1,
       "DATA_ROAMING": 1,
       "MOUNT_UMS_PROMPT": 1,
       "DEVICE_PROVISIONED": 1,
       "ADB_ENABLED": 0
   },
   "INSTALLATION_ID": "686a1ecc-5d54-4f71-a937-f6b019674ca3",
   "SETTINGS_SYSTEM": {
       "UNLOCK_SOUND": "/system/media/audio/ui/Unlock.ogg",
       "VOLUME_RING": 7,
       "TIME_12_24": 24,
       "POWER_SOUNDS_ENABLED": 1,
       "HAPTIC_FEEDBACK_ENABLED": 1,
       "RINGTONE": "content://media/internal/audio/media/8",
       "MODE_RINGER": 2,
       "DOCK_SOUNDS_ENABLED": 0,
       "VIBRATE_IN_SILENT": 1,
       "SCREEN_OFF_TIMEOUT": 60000,
       "CAR_DOCK_SOUND": "/system/media/audio/ui/Dock.ogg",
       "TRANSITION_ANIMATION_SCALE": "1.0",
       "EMERGENCY_TONE": 0,
       "NOTIFICATIONS_USE_RING_VOLUME": 1,
       "LOCK_SOUND": "/system/media/audio/ui/Lock.ogg",
       "SCREEN_BRIGHTNESS_MODE": 0,
       "ALARM_ALERT": "content://media/internal/audio/media/43",
       "AIRPLANE_MODE_TOGGLEABLE_RADIOS": "bluetooth,wifi",
       "VOLUME_BLUETOOTH_SCO": 15,
       "VOLUME_SYSTEM": 7,
       "DESK_UNDOCK_SOUND": "/system/media/audio/ui/Undock.ogg",
       "HEARING_AID": 0,
       "AIRPLANE_MODE_RADIOS": [
           "cell",
           "bluetooth",
           "wifi"
       ],
       "DESK_DOCK_SOUND": "/system/media/audio/ui/Dock.ogg",
       "NOTIFICATION_SOUND": "content://media/internal/audio/media/52",
       "TTY_MODE": 0,
       "DIM_SCREEN": 1,
       "NOTIFICATION_LIGHT_PULSE": 1,
       "CAR_UNDOCK_SOUND": "/system/media/audio/ui/Undock.ogg",
       "MUTE_STREAMS_AFFECTED": 46,
       "ACCELEROMETER_ROTATION": 1,
       "DTMF_TONE_TYPE_WHEN_DIALING": 0,
       "VOLUME_VOICE": 5,
       "LOW_BATTERY_SOUND": "/system/media/audio/ui/LowBattery.ogg",
       "VIBRATE_ON": 4,
       "VOLUME_ALARM": 7,
       "SCREEN_BRIGHTNESS": 102,
       "VOLUME_NOTIFICATION": 7,
       "CALL_AUTO_RETRY": 0,
       "AUTO_TIME": 1,
       "NEXT_ALARM_FORMATTED": "",
       "MODE_RINGER_STREAMS_AFFECTED": 166,
       "STAY_ON_WHILE_PLUGGED_IN": 0,
       "VOLUME_MUSIC": 15,
       "WINDOW_ANIMATION_SCALE": "1.0",
       "LOCKSCREEN_SOUNDS_ENABLED": 0,
       "AIRPLANE_MODE_ON": 0
   },
   "SHARED_PREFERENCES": {
       "": true,
       "default": {
           "acra": {
               "lastVersionNr": 10
           },
           "drt_ts": 0,
           "drt": "",
           "last_tab": "search"
       }
   },
   "ANDROID_VERSION": "2.3.3",
   "PACKAGE_NAME": "cat.ereza.properbusbcn",
   "APP_VERSION_CODE": 10,
   "CRASH_CONFIGURATION": {
       "hardKeyboardHidden": "HARDKEYBOARDHIDDEN_YES",
       "orientation": "ORIENTATION_PORTRAIT",
       "screenLayout": [
           "SCREENLAYOUT_SIZE_XLARGE",
           "SCREENLAYOUT_LONG_YES"
       ],
       "keyboard": "KEYBOARD_QWERTY",
       "mcc": 0,
       "locale": "ca_ES",
       "fontScale": "1.0",
       "navigationHidden": "NAVIGATIONHIDDEN_NO",
       "uiMode": [
           "UI_MODE_TYPE_NORMAL",
           "UI_MODE_NIGHT_NO"
       ],
       "userSetLocale": false,
       "navigation": "NAVIGATION_DPAD",
       "seq": 15,
       "keyboardHidden": "KEYBOARDHIDDEN_NO",
       "mnc": 0,
       "touchscreen": "TOUCHSCREEN_FINGER"
   },
   "USER_CRASH_DATE": "2013-05-17T16:16:01.000+561930:14",
   "DUMPSYS_MEMINFO": [
       "Applications Memory Usage (kB):",
       "Uptime: 16161837 Realtime: 16161837",
       "",
       "** MEMINFO in pid 15929491 [cat.ereza.properbusbcn] **",
       "                    native   dalvik    other    total",
       "            size:      511     6791      N/A     7302",
       "       allocated:     3988     4136      N/A     8124",
       "            free:       36     2655      N/A     2691",
       "           (Pss):        0        0        0        0",
       "  (shared dirty):        0        0        0        0",
       "    (priv dirty):        0        0        0        0",
       " ",
       " Objects",
       "           Views:        0        ViewRoots:        0",
       "     AppContexts:        0       Activities:        0",
       "          Assets:        2    AssetManagers:        2",
       "   Local Binders:        5    Proxy Binders:       13",
       "Death Recipients:        1",
       " OpenSSL Sockets:        0",
       " ",
       " SQL",
       "               heap:      146         MEMORY_USED:      146",
       " PAGECACHE_OVERFLOW:       26         MALLOC_SIZE:       50",
       " ",
       " DATABASES",
       "      pgsz     dbsz   Lookaside(b)  Dbname",
       "         1       14             10  webview.db",
       "         1        6             16  webviewCache.db",
       ""
   ],
   "BUILD": {
       "TIME": 1344489236000,
       "FINGERPRINT": "unknown",
       "HARDWARE": "unknown",
       "UNKNOWN": "unknown",
       "RADIO": "unknown",
       "BOARD": "unknown",
       "PRODUCT": "BlackBerry Runtime for Android Apps",
       "DISPLAY": "2.1.0.131",
       "USER": "ec_agent",
       "HOST": "brx278cnc",
       "DEVICE": "PlayBook",
       "TAGS": "test-keys",
       "MODEL": "BlackBerry Runtime for Android Apps",
       "BOOTLOADER": "unknown",
       "VERSION": {
           "CODENAME": "REL",
           "RELEASE": "2.3.3",
           "INCREMENTAL": "player-2.0.0_dev.eng.SER.20120809.011356",
           "SDK_INT": 10,
           "SDK": 10
       },
       "CPU_ABI": "nto-armle-v7",
       "CPU_ABI2": "unknown",
       "ID": "2.1.0.131",
       "SERIAL": "unknown",
       "MANUFACTURER": "RIM",
       "BRAND": "BlackBerry",
       "TYPE": "user"
   },
   "STACK_TRACE": [
       "java.lang.NullPointerException",
       "\tat cat.ereza.properbusbcn.fragments.SearchFragment.onCreateView(SearchFragment.java:192)",
       "\tat android.support.v4.app._HoloFragment.onCreateView(_HoloFragment.java:179)",
       "\tat android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)",
       "\tat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)",
       "\tat android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)",
       "\tat android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)",
       "\tat android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)",
       "\tat android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)",
       "\tat android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)",
       "\tat android.support.v4.view.ViewPager.populate(ViewPager.java:1011)",
       "\tat android.support.v4.view.ViewPager.populate(ViewPager.java:880)",
       "\tat android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1374)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat org.holoeverywhere.widget.LinearLayout.measureChildWithMargins(LinearLayout.java:214)",
       "\tat android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)",
       "\tat android.widget.LinearLayout.measureHorizontal(LinearLayout.java:701)",
       "\tat android.widget.LinearLayout.onMeasure(LinearLayout.java:311)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat org.holoeverywhere.widget.LinearLayout.measureChildWithMargins(LinearLayout.java:214)",
       "\tat android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)",
       "\tat android.widget.LinearLayout.measureVertical(LinearLayout.java:386)",
       "\tat android.widget.LinearLayout.onMeasure(LinearLayout.java:309)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat org.holoeverywhere.internal.WindowDecorView.onMeasure(WindowDecorView.java:131)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.widget.LinearLayout.measureVertical(LinearLayout.java:531)",
       "\tat android.widget.LinearLayout.onMeasure(LinearLayout.java:309)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)",
       "\tat android.widget.FrameLayout.onMeasure(FrameLayout.java:250)",
       "\tat android.view.View.measure(View.java:8313)",
       "\tat android.view.ViewRoot.performTraversals(ViewRoot.java:839)",
       "\tat android.view.ViewRoot.handleMessage(ViewRoot.java:1859)",
       "\tat android.os.Handler.dispatchMessage(Handler.java:99)",
       "\tat android.os.Looper.loop(Looper.java:123)",
       "\tat android.app.ActivityThread.main(ActivityThread.java:3687)",
       "\tat java.lang.reflect.Method.invokeNative(Native Method)",
       "\tat java.lang.reflect.Method.invoke(Method.java:507)",
       "\tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)",
       "\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)",
       "\tat dalvik.system.NativeStart.main(Native Method)",
       ""
   ],
   "PRODUCT": "BlackBerry Runtime for Android Apps",
   "DISPLAY": {
       "0": {
           "pixelFormat": 5,
           "orientation": 3,
           "height": 1024,
           "rotation": "ROTATION_270",
           "width": 600,
           "refreshRate": "60.0"
       }
   },
   "APP_VERSION_NAME": "3.0.4",
   "AVAILABLE_MEM_SIZE": 58696798208,
   "USER_APP_START_DATE": "2013-05-17T16:15:56.000+00:00",
   "CUSTOM_DATA": {
       "last_view": "Main screen - Search tab"
   },
   "BRAND": "BlackBerry",
   "INITIAL_CONFIGURATION": {
       "hardKeyboardHidden": "HARDKEYBOARDHIDDEN_YES",
       "orientation": "ORIENTATION_PORTRAIT",
       "screenLayout": [
           "SCREENLAYOUT_SIZE_XLARGE",
           "SCREENLAYOUT_LONG_YES"
       ],
       "keyboard": "KEYBOARD_QWERTY",
       "mcc": 0,
       "locale": "ca_ES",
       "fontScale": "1.0",
       "navigationHidden": "NAVIGATIONHIDDEN_NO",
       "uiMode": [
           "UI_MODE_TYPE_NORMAL",
           "UI_MODE_NIGHT_NO"
       ],
       "userSetLocale": false,
       "navigation": "NAVIGATION_DPAD",
       "seq": 15,
       "keyboardHidden": "KEYBOARDHIDDEN_NO",
       "mnc": 0,
       "touchscreen": "TOUCHSCREEN_FINGER"
   },
   "TOTAL_MEM_SIZE": 62562222080,
   "FILE_PATH": "/data/data/cat.ereza.properbusbcn/files",
   "ENVIRONMENT": {
       "getDownloadCacheDirectory": "/data/cache",
       "getSystemSecureDirectory": "/data/system",
       "getSecureDataDirectory": "/data",
       "getExternalStorageState": "mounted",
       "getExternalStorageDirectory": "/sdcard",
       "isExternalStorageRemovable": true,
       "isEncryptedFilesystemEnabled": false,
       "getRootDirectory": "/system",
       "getExternalStorageAndroidDataDir": "/sdcard/Android/data",
       "getDataDirectory": "/data"
   },
   "REPORT_ID": "956e9ca3-ba3f-4be0-9537-aa7c75a5b1b8",
   "timestamp": "2013-05-17T14:16:04.816Z",
   "user_ip": "92.56.168.203",
   "SIGNATURE": {
       "full": "java.lang.NullPointerException at cat.ereza.properbusbcn.fragments.SearchFragment.onCreateView(SearchFragment.java:192)",
       "digest": "java.lang.NullPointerException : SearchFragment.java:192"
   },
   "uptime": null,
   "requestHeaders": {
       "Accept": "text/html,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
       "Authorization": "Basic cmVwb3J0ZXI6YU5kcjBJZHJlUG9ydGVy",
       "Connection": "Keep-Alive",
       "Content-Length": "10387",
       "Content-Type": "application/json",
       "Host": "acra.eduardereza.com",
       "User-Agent": "Android",
       "X-Forwarded-For": "92.56.168.203",
       "X-Forwarded-Host": "acra.eduardereza.com",
       "X-Forwarded-Server": "acra.eduardereza.com"
   }
}
KevinGaudin commented 11 years ago

In the acra-storage database, the recent-items view creates keys with a call to new Date(doc.USER_CRASH_DATE).

The USER_CRASH_DATE you got in this report is invalid: 2013-05-17T16:16:01.000+561930:14 and can't be parsed by Javascript. The timezone +561930:14 is... strange. The USER_APP_START_DATE is correct though.

I won't just patch it to omit the timezone if the crash date is malformed. This would be a too specific workaround for one special case.

One thing I can do however is use the crash reception date (timestamp field) generated by acra-storage if the report crash date parsing fails.

KevinGaudin commented 11 years ago

Here's what I did:

I pushed the fix on the master branch of ACRA/acra-storage. You can update your acra-storage instance(s).

Ereza commented 11 years ago

I confirm it now works correctly. Thanks for the fix and all your hard work on Acralyzer! :)