Signal-android: Messages not send in latest release

Created on 7 Dec 2018  路  17Comments  路  Source: signalapp/Signal-Android


Bug description

Messages are not sent to some contacts without apparently reason.

Steps to reproduce

  • I'm not sure how to reproduce it, to be honest but for me happened just sending a message.

Actual result: Messages are not sent.
Expected result: Messages are sent.

Screenshots


Not needed.

Device info


Device: Samsung SM-G610M
Android version: 8.1.0
Signal version: 4.31.5

Link to debug log


https://debuglogs.org/a49c76f5d09ef5a27a875b5f27b08f30ceeb926ea7cc4360b7a65118dca84f40

Most helpful comment

I feel like this is very likely related to your specific VPN. I'm in talks with the WorkManager team (Google's work scheduling library we use) for different optimizations, so I'll mention this. But you basically put your phone in a state where the app thinks you have network but you still fail to send, so increasing backoff like it's doing kinda makes sense. But I agree I'd like more aggressive retries while the app is open.

All 17 comments

Your logs are filled with errors like this:

2018-12-07 17:27:33.932 GMT-05:00 I Job: [85aac8a5-4458-41c5-bba8-67d65fdcbeeb] PushNotificationReceiveJob :: Retrying after a retryable exception. (Time since submission: 3105481 ms, Run attempt: 20, isStopped: false)
2018-12-07 17:27:33.932 GMT-05:00 I Job: org.whispersystems.signalservice.api.push.exceptions.PushNetworkException: java.net.UnknownHostException: Unable to resolve host "textsecure-service.whispersystems.org": No address associated with hostname
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.whispersystems.signalservice.internal.push.PushServiceSocket.getServiceConnection(PushServiceSocket.java:897)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeServiceRequest(PushServiceSocket.java:762)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeServiceRequest(PushServiceSocket.java:756)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.whispersystems.signalservice.internal.push.PushServiceSocket.getMessages(PushServiceSocket.java:222)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.whispersystems.signalservice.api.SignalServiceMessageReceiver.retrieveMessages(SignalServiceMessageReceiver.java:172)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob.pullAndProcessMessages(PushNotificationReceiveJob.java:60)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob.onRun(PushNotificationReceiveJob.java:55)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.thoughtcrime.securesms.jobmanager.Job.doWorkInternal(Job.java:99)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at org.thoughtcrime.securesms.jobmanager.Job.doWork(Job.java:65)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at androidx.work.Worker$1.run(Worker.java:57)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
2018-12-07 17:27:33.932 GMT-05:00 I Job:    at java.lang.Thread.run(Thread.java:764)

These caused upwards of 20 retries. Then, most recently, you were hitting generic socket timeouts.

Has your network been stable with other apps?

Yes, others apps were working fine. Anyways, supposing that in one point my connection was poor, why signal not send the messages automatically when the network quality is restored? I only see it type of behaviors with signal.

Signal will attempt to send your message for 24 hrs before marking it as failed. It has been trying -- as I mentioned, it went through 20 retries, and that was over a ~50min period. It's still retrying. The time between retries will increase each time it fails. The weird thing is that it was unable to resolve our hostname.

@greyson-signal additionally to it, I had another problem, messages were "sent" from my app but my other contact doesn't receive the messages, another log https://debuglogs.org/62d3510815ca50f2dce286dafe129979a1b2cfada19dbe1c05ad323112eacfea

I had another problem, messages were "sent" from my app but my other contact doesn't receive the messages, another log

I would need a log from the receiver.

Well, but what's about the issue when Signal don't sent the messages still when the network is fine (and without using passphrase as you recommended weeks ago).

but what's about the issue when Signal don't sent the messages still when the network is fine

That is, indeed, the question. I'm trying to say that for whatever reason, Signal was encountering UnknownHostExceptions (very strange) and then generic socket timeouts (which usually happen in poor network). That's why I was asking about your network connectivity.

You're saying your network was fine though, so I'll look into other possible causes.

Thank you :)

Is it possible you were on:

  • A VPN
  • A public Wi-Fi network that may have required a login, or otherwise had some sort of firewall
  • Some other Wi-Fi network that may have had an interesting network configuration

I'm trying to figure out why you wouldn't be able to resolve our hostname.

@greyson-signal in effect I'm using a VPN, ProtonVPN Plus exactly but others apps are working well. Also I tried disconnecting the VPN and using the network directly with the same result. You can discard the WiFi study-cases because I'm using movil network (4G).

@Edu4rdSHL When messages are retried they accrue "back-off", meaning more and more time is placed in-between retries. That means that turning off the VPN might not solve the problem immediately.

The easiest way to test this would be to turn off the VPN, and then send a message in a brand-new conversation. Also, please always include debug logs after performing new tests. Thanks!

@greyson-signal I will exclude the signal app from the VPN app and see what happen in the future. Also, can you considered a more accurate option to re-send messages? I have not much idea how others apps work but they have not problems to send messages when the connection is re-established, can Signal work in the same way?

@Edu4rdSHL You're hitting a very strange and exceptional case. If you have no network, and then suddenly gain network, then yes: Signal will try to send your message right then.

However, the problem is that you've had network this whole time, but for whatever reason you haven't been able to resolve our host name. That's something that shouldn't happen, and my prime suspect is your VPN.

Traditionally, these "I have network, but can't send" situations only occur when you have _bad_ network, and therefore every attempt will increase the time between attempts. That makes sense in poor network conditions. However, your situation is such that you always have good network, but always fail to send a message due to some network configuration, meaning that the app is tricked into this back-off scenario. This isn't something we optimize for.

I excluded my app from the VPN for now, you can work in some optimizations for the scenario that you're describing?

I feel like this is very likely related to your specific VPN. I'm in talks with the WorkManager team (Google's work scheduling library we use) for different optimizations, so I'll mention this. But you basically put your phone in a state where the app thinks you have network but you still fail to send, so increasing backoff like it's doing kinda makes sense. But I agree I'd like more aggressive retries while the app is open.

Thanks, @greyson-signal

@greyson-signal to mention. Configuring your android in Settings -> Connections -> More connections settings -> VPN -> Always On VPN and Block Connections without VPN, the issue is solved.

Was this page helpful?
0 / 5 - 0 ratings