signalapp / Signal-Android

A private messenger for Android.
https://signal.org
GNU Affero General Public License v3.0
25.58k stars 6.13k forks source link

Crash on startup - sender changed number? #5454

Closed edent closed 8 years ago

edent commented 8 years ago

I have:


Bug description

As soon as I open Signal I get "Unfortunately Signal has stopped."

I think this is due to a Textsecure contact changing her phone number.

Steps to reproduce

I know correlation does not imply causation - but I can't think of anything else which has changed.

I don't want to uninstall / wipe data as a I don't want to lose my messages.

Wiping the cache and restarting the device did not fix the problem.

Actual result: Instant crash. Cannot open, take bug reports, nor back up.

Expected result: Should open - perhaps isolating the errant message.

Screenshots

http://imgur.com/Pcorrb6

Device info

Device: Motorola Nexus 6 Android version: 6.0.1 (CyanogenMod 13) Signal version: 3.15.2

Link to debug log

Can't open the app, here's the CatLog

http://imgur.com/Pcorrb6

cascheberg commented 8 years ago

The debug log seems to contain helpful information, but obviously not much of it can be read. It would be great if you could export the content.


If your contact wants to be found on Signal under her new number, she should un-register her current account and then re-register, see http://support.whispersystems.org/hc/en-us/articles/212535818-What-do-I-do-if-I-get-a-new-number-What-if-I-am-switching-to-a-new-phone-

edent commented 8 years ago

Here's the export from catlog - let me know if you need more.

She's currently porting her number, so the regular one should be back in a few days. Hope that'll stop the crashes! ☺️

04-21 08:58:15.566 W/JobConsumer(3640):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:15.566 W/JobConsumer(3640):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:15.567 E/AndroidRuntime(3640):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:15.567 E/AndroidRuntime(3640):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:15.954 W/OkHttpClientWrapper(3640): Connecting to: wss://textsecure-service.whispersystems.org/v1/websocket/?login=%s&password=%s
04-21 08:58:21.361 W/JobConsumer(3901):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:21.361 W/JobConsumer(3901):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:21.365 E/AndroidRuntime(3901):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:21.365 E/AndroidRuntime(3901):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:36.780 W/JobConsumer(4799):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:36.780 W/JobConsumer(4799):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:36.781 E/AndroidRuntime(4799):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:36.781 E/AndroidRuntime(4799):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:37.879 W/JobConsumer(4857):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:37.879 W/JobConsumer(4857):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:37.880 E/AndroidRuntime(4857):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:37.880 E/AndroidRuntime(4857):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:38.158 W/OkHttpClientWrapper(4857): Connecting to: wss://textsecure-service.whispersystems.org/v1/websocket/?login=%s&password=%s
04-21 08:58:42.434 W/JobConsumer(5006):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:42.434 W/JobConsumer(5006):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:58:42.435 E/AndroidRuntime(5006):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:58:42.435 E/AndroidRuntime(5006):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:59:57.326 W/JobConsumer(5915):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:59:57.326 W/JobConsumer(5915):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:59:57.327 E/AndroidRuntime(5915):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 08:59:57.327 E/AndroidRuntime(5915):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 08:59:57.835 W/OkHttpClientWrapper(5915): Connecting to: wss://textsecure-service.whispersystems.org/v1/websocket/?login=%s&password=%s
04-21 09:00:00.358 W/JobConsumer(5957):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 09:00:00.358 W/JobConsumer(5957):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 09:00:00.360 E/AndroidRuntime(5957):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 09:00:00.360 E/AndroidRuntime(5957):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 09:02:33.045 W/JobConsumer(6104):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 09:02:33.045 W/JobConsumer(6104):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 09:02:33.054 E/AndroidRuntime(6104):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 09:02:33.054 E/AndroidRuntime(6104):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 09:02:33.525 W/OkHttpClientWrapper(6104): Connecting to: wss://textsecure-service.whispersystems.org/v1/websocket/?login=%s&password=%s
04-21 09:02:37.612 W/JobConsumer(6166):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 09:02:37.612 W/JobConsumer(6166):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 09:02:37.614 E/AndroidRuntime(6166):  at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 09:02:37.614 E/AndroidRuntime(6166):  at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
cascheberg commented 8 years ago

Don't filter the log, it removes relevant information (but you may then want to check if it contains phone numbers before posting).

edent commented 8 years ago
04-21 10:20:25.955 D/NetlinkSocketObserver(889): NeighborEvent{elapsedMs=3228168, 10.128.208.1, [00000C07AC00], RTM_NEWNEIGH, NUD_STALE}
04-21 10:20:28.018 I/ActivityManager(889): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.cyanogenmod.trebuchet/com.android.launcher3.Launcher (has extras)} from uid 1000 on display 0
04-21 10:20:28.648 E/bt_btif (2831): bta_gattc_cmpl_cback unknown conn_id =  4, ignore data
04-21 10:20:28.678 W/OpenGLRenderer(2008): Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
04-21 10:20:28.678 W/OpenGLRenderer(2008): Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
04-21 10:20:29.010 I/ActivityManager(889): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=org.thoughtcrime.securesms/.RoutingActivity bnds=[872,2117][1143,2409] (has extras)} from uid 10025 on display 0
04-21 10:20:29.023 W/BroadcastQueue(889): Permission Denial: broadcasting Intent { act=com.android.launcher3.action.LAUNCH flg=0x10 (has extras) } from com.cyanogenmod.trebuchet (pid=2008, uid=10025) requires com.google.android.launcher.permission.RECEIVE_LAUNCH_BROADCASTS due to receiver com.google.android.gms/.icing.proxy.ApplicationLauncherReceiver
04-21 10:20:29.056 I/ActivityManager(889): Start proc 10469:org.thoughtcrime.securesms/u0a109 for activity org.thoughtcrime.securesms/.RoutingActivity
04-21 10:20:29.143 W/PartProvider(10469): onCreate()
04-21 10:20:29.202 W/PassphraseRequiredActionBarActivity(10469): onCreate(null)
04-21 10:20:29.338 W/ExperienceUpgradeActivity(10469): getExperienceUpgrade(179)
04-21 10:20:29.342 W/PassphraseRequiredActionBarActivity(10469): routeApplicationState(), state: 0
04-21 10:20:29.359 W/PassphraseRequiredActionBarActivity(10469): initializeClearKeyReceiver()
04-21 10:20:29.403 W/DirectoryRefreshListener(10469): Scheduling for: 1461263769783
04-21 10:20:29.463 W/PassphraseRequiredActionBarActivity(10469): onResume()
04-21 10:20:29.473 W/JobConsumer(10469): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getIndividualRecipientDetails(RecipientProvider.java:142)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipientDetailsSync(RecipientProvider.java:129)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipient(RecipientProvider.java:82)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipients(RecipientProvider.java:96)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsForIds(RecipientFactory.java:106)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsFromString(RecipientFactory.java:81)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.isBlocked(SmsReceiveJob.java:79)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.onRun(SmsReceiveJob.java:59)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 10:20:29.473 W/JobConsumer(10469):    at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 10:20:29.475 E/AndroidRuntime(10469): FATAL EXCEPTION: JobConsumer-1
04-21 10:20:29.475 E/AndroidRuntime(10469): Process: org.thoughtcrime.securesms, PID: 10469
04-21 10:20:29.475 E/AndroidRuntime(10469): Theme: themes:{default=overlay:system, iconPack:system, fontPkg:de.marcelkapfer.cyngn.theme.comfortaa, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system}
04-21 10:20:29.475 E/AndroidRuntime(10469): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getIndividualRecipientDetails(RecipientProvider.java:142)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipientDetailsSync(RecipientProvider.java:129)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipient(RecipientProvider.java:82)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipients(RecipientProvider.java:96)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsForIds(RecipientFactory.java:106)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsFromString(RecipientFactory.java:81)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.jobs.SmsReceiveJob.isBlocked(SmsReceiveJob.java:79)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.thoughtcrime.securesms.jobs.SmsReceiveJob.onRun(SmsReceiveJob.java:59)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 10:20:29.475 E/AndroidRuntime(10469):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 10:20:29.476 D/OpenGLRenderer(10469): Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-21 10:20:29.476 W/ActivityManager(889):   Force finishing activity org.thoughtcrime.securesms/.RoutingActivity
04-21 10:20:29.787 I/WindowManager(889): Screenshot max retries 4 of Token{729ca1e ActivityRecord{2bee59 u0 org.thoughtcrime.securesms/.RoutingActivity t13168 f}} appWin=Window{e76fef6 u0 Starting org.thoughtcrime.securesms} drawState=4
04-21 10:20:29.805 W/art     (889): Long monitor contention event with owner method=void com.android.server.am.ActivityManagerService.crashApplication(com.android.server.am.ProcessRecord, android.app.ApplicationErrorReport$CrashInfo) from ActivityManagerService.java:12909 waiters=1 for 309ms
04-21 10:20:29.805 W/art     (889): Long monitor contention event with owner method=void com.android.server.am.ActivityManagerService.crashApplication(com.android.server.am.ProcessRecord, android.app.ApplicationErrorReport$CrashInfo) from ActivityManagerService.java:12909 waiters=2 for 261ms
04-21 10:20:29.808 W/KeyCachingService(10469): onCreate()
04-21 10:20:29.824 W/JobConsumer(10469): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getIndividualRecipientDetails(RecipientProvider.java:142)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipientDetailsSync(RecipientProvider.java:129)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipient(RecipientProvider.java:82)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipients(RecipientProvider.java:96)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsForIds(RecipientFactory.java:106)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsFromString(RecipientFactory.java:81)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.isBlocked(SmsReceiveJob.java:79)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.onRun(SmsReceiveJob.java:59)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 10:20:29.824 W/JobConsumer(10469):    at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 10:20:29.824 I/Process (10469): Sending signal. PID: 10469 SIG: 9
04-21 10:20:29.842 I/OpenGLRenderer(889): Initialized EGL, version 1.4
04-21 10:20:29.944 I/WindowState(889): WIN DEATH: Window{41a7b83 u0 org.thoughtcrime.securesms/org.thoughtcrime.securesms.RoutingActivity}
04-21 10:20:29.944 D/GraphicsStats(889): Buffer count: 12
04-21 10:20:29.950 I/ActivityManager(889): Process org.thoughtcrime.securesms (pid 10469) has died
04-21 10:20:29.950 W/ActivityManager(889): Scheduling restart of crashed service org.thoughtcrime.securesms/.service.KeyCachingService in 1228ms
04-21 10:20:29.951 W/ActivityManager(889): Scheduling restart of crashed service org.thoughtcrime.securesms/.service.MessageRetrievalService in 11228ms
04-21 10:20:30.014 W/InputMethodManagerService(889): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@67eeb1d attribute=null, token = android.os.BinderProxy@93f0e17
04-21 10:20:30.144 W/AppOps  (889): Finishing op nesting under-run: uid 1000 pkg android code 24 time=0 duration=0 nesting=0
04-21 10:20:30.547 W/OpenGLRenderer(2008): Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
04-21 10:20:30.547 W/OpenGLRenderer(2008): Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
04-21 10:20:31.203 I/ActivityManager(889): Start proc 10498:org.thoughtcrime.securesms/u0a109 for service org.thoughtcrime.securesms/.service.KeyCachingService
04-21 10:20:31.244 D/CommunitySearch(3937): stopSearch true
04-21 10:20:31.395 W/PartProvider(10498): onCreate()
04-21 10:20:31.429 W/KeyCachingService(10498): onCreate()
04-21 10:20:31.431 I/ActivityManager(889): START u0 {act=com.android.systemui.recents.SHOW_RECENTS flg=0x10804000 cmp=com.android.systemui/.recents.RecentsActivity} from uid 10022 on display 0
04-21 10:20:31.762 W/JobConsumer(10498): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getIndividualRecipientDetails(RecipientProvider.java:142)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipientDetailsSync(RecipientProvider.java:129)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipient(RecipientProvider.java:82)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipients(RecipientProvider.java:96)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsForIds(RecipientFactory.java:106)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsFromString(RecipientFactory.java:81)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.isBlocked(SmsReceiveJob.java:79)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.onRun(SmsReceiveJob.java:59)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 10:20:31.762 W/JobConsumer(10498):    at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 10:20:31.763 E/AndroidRuntime(10498): FATAL EXCEPTION: JobConsumer-2
04-21 10:20:31.763 E/AndroidRuntime(10498): Process: org.thoughtcrime.securesms, PID: 10498
04-21 10:20:31.763 E/AndroidRuntime(10498): Theme: themes:{default=overlay:system, iconPack:system, fontPkg:de.marcelkapfer.cyngn.theme.comfortaa, com.android.systemui=overlay:system, com.android.systemui.navbar=overlay:system}
04-21 10:20:31.763 E/AndroidRuntime(10498): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getIndividualRecipientDetails(RecipientProvider.java:142)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipientDetailsSync(RecipientProvider.java:129)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipient(RecipientProvider.java:82)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipients(RecipientProvider.java:96)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsForIds(RecipientFactory.java:106)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsFromString(RecipientFactory.java:81)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.jobs.SmsReceiveJob.isBlocked(SmsReceiveJob.java:79)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.thoughtcrime.securesms.jobs.SmsReceiveJob.onRun(SmsReceiveJob.java:59)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 10:20:31.763 E/AndroidRuntime(10498):     at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 10:20:31.798 I/OpenGLRenderer(889): Initialized EGL, version 1.4
04-21 10:20:31.876 W/service (10498): Broadcasting new secret...
04-21 10:20:31.877 W/BroadcastQueue(889): Skipping deliver [background] BroadcastRecord{a178c4a u0 org.thoughtcrime.securesms.service.action.NEW_KEY_EVENT} to ReceiverList{9b3f763 10498 org.thoughtcrime.securesms/10109/u0 remote:51b2192}: process crashing
04-21 10:20:31.879 W/KeyCachingService(10498): onStartCommand, null
04-21 10:20:31.879 W/KeyCachingService(10498): onStartCommand, null
04-21 10:20:31.879 W/KeyCachingService(10498): onStartCommand, org.thoughtcrime.securesms.service.action.ACTIVITY_START_EVENT
04-21 10:20:31.879 W/KeyCachingService(10498): Incrementing activity count...
04-21 10:20:31.880 W/KeyCachingService(10498): onStartCommand, null
04-21 10:20:31.896 W/JobConsumer(10498): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getIndividualRecipientDetails(RecipientProvider.java:142)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipientDetailsSync(RecipientProvider.java:129)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipient(RecipientProvider.java:82)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientProvider.getRecipients(RecipientProvider.java:96)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsForIds(RecipientFactory.java:106)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.recipients.RecipientFactory.getRecipientsFromString(RecipientFactory.java:81)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.isBlocked(SmsReceiveJob.java:79)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.thoughtcrime.securesms.jobs.SmsReceiveJob.onRun(SmsReceiveJob.java:59)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
04-21 10:20:31.896 W/JobConsumer(10498):    at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)
04-21 10:20:31.896 I/Process (10498): Sending signal. PID: 10498 SIG: 9
04-21 10:20:31.971 I/ActivityManager(889): Process org.thoughtcrime.securesms (pid 10498) has died
04-21 10:20:31.972 W/ActivityManager(889): Service crashed 2 times, stopping: ServiceRecord{943b1da u0 org.thoughtcrime.securesms/.service.KeyCachingService}
04-21 10:20:31.972 W/ActivityManager(889): Service crashed 2 times, stopping: ServiceRecord{4eb47e7 u0 org.thoughtcrime.securesms/.service.MessageRetrievalService}
04-21 10:20:31.988 W/InputMethodManagerService(889): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@cbd24d8 attribute=null, token = android.os.BinderProxy@74516b6
04-21 10:20:32.165 W/AppOps  (889): Finishing op nesting under-run: uid 1000 pkg android code 24 time=0 duration=0 nesting=0
04-21 10:20:34.080 V/PhoneStatusBar(1432): setLightsOn(true)
04-21 10:20:34.232 V/PhoneStatusBar(1432): setLightsOn(true)
04-21 10:20:37.994 D/TADO-LocationPostService(5864): Measured traffic:
04-21 10:20:37.994 D/TADO-LocationPostService(5864): Total Tx = 0
04-21 10:20:37.994 D/TADO-LocationPostService(5864): TCP Tx   = -1
04-21 10:20:37.995 D/TADO-LocationPostService(5864): debugString is : attempt-3-unsentFixes-22-(coordinate=51.518507,-0.629151,ts=Do. Apr. 21 10:10:01,mode=FUSED_BALANCED_POWER)(coordinate=51.518535,-0.629118,ts=Do. Apr. 21 10:15:01,mode=FUSED_BALANCED_POWER)
04-21 10:20:37.997 D/TADO-LocationPostService(5864): Battery level at 86
04-21 10:20:37.998 W/Settings(5864): Setting wifi_on has moved from android.provider.Settings.System to android.provider.Settings.Secure, returning read-only value.
04-21 10:20:37.998 W/Settings(5864): Setting wifi_on has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
04-21 10:20:38.001 I/TADO-LocationPostService(5864): Not posting location because the app has no internet
04-21 10:20:38.002 E/TADO-LocationPostService(5864):   HTTP post FAILED
04-21 10:20:38.003 D/TADO-LocationPostService(5864): WakeLock released.
04-21 10:20:38.004 W/Settings(5864): Setting wifi_on has moved from android.provider.Settings.System to android.provider.Settings.Secure, returning read-only value.
04-21 10:20:38.004 W/Settings(5864): Setting wifi_on has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
04-21 10:20:38.007 W/TADO-LocationPostService(5864): GIVING UP
04-21 10:20:45.969 W/InputMethodManagerService(889): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@d0e3469 attribute=null, token = android.os.BinderProxy@bb1f60d
04-21 10:20:48.185 I/ClearcutLoggerApiImpl(2844): disconnect managed GoogleApiClient
edent commented 8 years ago

Is there any way to backup my messages if I can't access the app?

2-4601 commented 8 years ago

@edent Does it still crash if you put your phone in the airplane mode?

edent commented 8 years ago

Still crashes. Restarted device in airplane mode - no change, instant crash.

Reckon there's any way of recovering without losing all the messages?

cascheberg commented 8 years ago

Set a different app as default SMS app in Android settings and see if that helps. Update: It probably does not, but maybe if you delete the SMS from that contact...

edent commented 8 years ago

I can use the stock messaging app and set it as default. But that doesn't have my old messages. And I can't receive Signal messages.

2-4601 commented 8 years ago

Do you know if your friend intended to send you a Signal message or an SMS?

Not sure if this will help but you could try this: Go to Android Settings > Accounts > Signal > Menu > Remove Account (at this point Android might say: "Removing this account will delete all of its messages, contacts, and other data from the phone", but that is not accurate, all your Signal messages will remain untouched). And then resync the account.

Also changing your friends contact info or removing her account from the system's contact app might have some effect. Or the data that causes this crash is already in Signal's database and none of the suggestions above will have any effect on it. I'm not familiar with how it works in this case. @cascheberg?

edent commented 8 years ago

She uses Signal and replied to my last Signal message.

I've added the new number to her contact, deleted her number, tried creating separate contacts. Nothing works - the app just instantly crashes.

I really appreciate all your help with this. Hope we can find a solution.

cascheberg commented 8 years ago

Apparently the incoming message type was SMS, so now there is a crashing persistent SmsReceiveJob to handle it. This is what I figured out: when the crash happens, Signal searches the system contacts by phone number to get details about the sender. A result is returned, but the contained number is null. That does not make a whole lot of sense to me, and I don't know how that could be Signals fault at all. But it seems simple to at least make it not crash.

edent commented 8 years ago

How strange. I've added a dummy contact with that number but it still crashes. Will eagerly await your patch ☺️

moxie0 commented 8 years ago

oh, cyanogen.

edent commented 8 years ago

Heh! I've been running TextSecure on Cyanogenmod for a few years - so has my partner. Happy to chalk it up to one of those things, but would like to know if there's a way to recover my message before nuking it from orbit.

johanw666 commented 8 years ago

On Cyanogen, easy: activate root and use a backup tool like Titranium.

glems2 commented 8 years ago

Hi there. I'm also affected by this bug on CM13 (Android 6). This is a bad experience having used and relied upon Signal for a long while now.

Without being aware of the full context of the line in question (RecipientProvider.java:142), if we treat the null value as leading to 'not equal', it should be fixable by something like:

String name = cursor.getString(3) == null || !cursor.getString(3).equals(cursor.getString(0)) ? cursor.getString(0) : null;

Can anyone confirm or deny this?

If I had the possibility of finding out quickly I would, but I'm not currently a mobile developer.

glems2 commented 8 years ago

@edent What I was able to do now is at least read the best part of the latest message that might have caused the null-pointer exception. To do this I opened the sender's contact and expanded the list of contact details by tapping on Show all. There was an item for the message (having the Signal icon) that I could tap on. Hope that helps.

glems2 commented 8 years ago

In my case the error may have been caused by an SMS from DHL, a logistics company that sends notifications without specifying the sender phone number. I should have received one from them but haven't seen any.

(So the steps outlined in the previous post did not reveal that message in fact but another one that is probably unrelated to the problem [coming from a contact with a real number that hasn't changed].)

samueltardieu commented 8 years ago

I got the same error with a message from [Autolib] without number (also CM13). I don't see anything in the documentation that would indicate that NUMBER cannot be null if absent. This is even the most logical value to represent the absence of the number.

glems2 commented 8 years ago

I have tried receiving the SMS in question with the default app. Doesn't show up there nor make any difference for Signal. The message is obviously already 'in' Signal.

I do appreciate all of the hard work that has made Signal the great open-source software that it is, and I would really like to continue using it.

So is there anyone caring about unfortunate cases like this? This is really a single SMS rendering Signal useless. It may seem like an edge case but for many German users it is likely to indeed happen if they use a popular offering of the biggest parcel-delivery service in the country.

samueltardieu commented 8 years ago

In France, most notifications SMS do not use a number (we have complex rules mandating that numberless messages are used for personal notifications and messages with numbers are used for commercial sollicitations and person-to-person messages).

For examples, most banks in France will use numberless SMS confirmations to validate online payments.

glems2 commented 8 years ago

@samueltardieu I see. So in France I reckon you will be even more likely affected by this (at least on CM13 - I don't know how the DB handles numberless messages on Android <6, but probably different).

samueltardieu commented 8 years ago

Note that it worked just fine until a few days ago (I've been using CM13 nightlies for months). They recently pulled in a new minor release from AOSP, so I don't know if CM changed the behaviour by themselves or if they dragged it in.

What triggered it for me was sender "Autolib", the city car sharing service in Paris, where the final confirmation message when you drop the car is the acknowledgment that you can walk away. If you don't get the message, you're supposed to stay with the car. That's how I noticed, I had to call them to confirm that I could go :)

glems2 commented 8 years ago

What a blessing that we can still make calls with our phones... :grin:

nmsalgueiro commented 8 years ago

Same problem here. As of today I can't even open Signal, the "Unfortunately, Signal has stopped" message immediately pops up. This is the second time such happens to me; the last time I had to reinstall the app to "fix" it, losing my messages (my fault, I didn't back up) and the pictures linked to those (which there is no way to back up).

edent commented 8 years ago

Latest CyangenMod nightly fixes this! (20160512-Nightly-shamu).

glems2 commented 8 years ago

Thanks for notifying!