Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebRTC Audio/Video calls arrive as missed calls #6244

Closed
2 tasks done
peter-sc opened this issue Feb 17, 2017 · 17 comments
Closed
2 tasks done

WebRTC Audio/Video calls arrive as missed calls #6244

peter-sc opened this issue Feb 17, 2017 · 17 comments

Comments

@peter-sc
Copy link

peter-sc commented Feb 17, 2017

I have:


Bug description

Both devices have Voice calling beta enabled. Device 1 is in idle state, screen is off. Device 2 initiates call, and this does not reach device 1. Then call is canceled and 10-30s later a missed call notification arrives on device 1.
If the beta calling is disabled, then the call is sucesfull (device 1 again in idle state)

Steps to reproduce

  • open Signal
  • enable Beta calling
  • call a person with Beta calling enabled

Actual result:

  • call is not established

Expected result:

  • call should be established. It is established, with Beta calling disabled.

Device info

Device: LG G4
Android version: 6.0.0, Security patch: 2016-11-01
Signal version: 3.29.6

Link to debug log

https://gist.github.com/e71029ad6a5f8011d1cd7aaeaccc246d

@ghost
Copy link

ghost commented Feb 17, 2017

What's the other device? You should always give both device's info when reporting calling bugs.

@2-4601 2-4601 added the bug label Feb 17, 2017
@moxie0
Copy link
Contributor

moxie0 commented Feb 17, 2017

Thanks @peter-sc it doesn't look like there's much activity in this log, did you capture it immediately after the call failed to establish?

@peter-sc
Copy link
Author

The device2 were 2x iPhone7 with latest iOS 10.x. I had the same results of calls not establishing with Xperia SP with CM 14.1 (7.1.1).

Here is another test, call made from Xperia SP with CM 14.1 (7.1.1). The screen on device1 (LG) did not show incoming call nor did it ring, it made just short "click" notification for missed call. Logcat from begging of call till the end is here: https://gist.github.com/peter-sc/0acf85934295bad4b4ca2a00374c223d

I can include more logs if needed, just let me know which parts of the logcat are relevant.

@malkhamis
Copy link

I confirm that I am experiencing the same issue as well.. This especially happens when both parties are attempting to call each other at the same time, neither phone would receive anything other than a late missed call notification.

@MatejKovacic
Copy link

I have experienced similar bug. When I am calling the other party or when the other party is calling me (not at the same time!), Signal does not ring. However, on a screen you can see incoming call.

I have Nexus 5 with CyanogenMod 13. The other person has Nexus 4 with up to date non-rooted Android.

@MatejKovacic
Copy link

It seems there is ringing, but in earphones. I have reports from several users about this issue.

@ShahabJafri
Copy link

I have the same issue between Galaxy S5 SMG900F Marshmallow (Phone 1) with another Galaxy S5 SMG900F Marshmallow (Phone 2). Also between Phone 1 and One Plus One LiOS 14.1 (Phone 3). So far I'v been able to call / receive only twice between Phone 1 and 3 and none between Phone 1 and 2. Phone 1 has systemless root.

@2-4601 2-4601 added the webrtc label Mar 2, 2017
@riyapenn
Copy link

riyapenn commented Sep 9, 2017

User 1
Alice calls Bob. Bob only sees missed call alerts.
Alice (iOS v2.15.3): https://gist.github.com/f9b2493c0093aef5c768c3ee0e29a55a
Bob (Android): https://gist.github.com/riyapenn/4e9719626edd005a16c9bca7d9110649
Device: Samsung Galaxy S7 Edge
Android version: 7.0
Signal version: 4.9.9

User 2
Alice on iOS calls Bob. Bob on Android only sees missed call alerts.
Alice (iPod Touch iOS 2.16.0.20): https://gist.github.com/3c9e1a1e1e28627e6fc8b727b2ed30c9
Bob (Android): https://gist.github.com/7be0b836725a8172578192c1ef80c1c6
Device: Samsung Galaxy S5
Android version: Android 6.0.0
Signal version: 4.9.9

@igor2x
Copy link

igor2x commented Sep 29, 2017

Hi,
I also have a problem with missing calls. I did several tests involving several phones. I hope I can submitted the problem in this the same ticket.

I have tested this problem with four phones all using the same WiFi being inch away from one another.

Looks like problem is related to phone A.

Phone A: Samsung Galaxy J1; Android 4.4.4; Signal 4.10.12
Phone B: LG Nexus 5x; Android 8.0.0; Signal 4.10.12
Phone C: Samsung Galaxy J1; Android 4.4.4; Signal 4.10.12
Phone D: HTC Desire 820; Android 6.0.1; Signal 4.10.12

Note: Phone A and C are exactly the same type of phones. Interesting phone C without a problem, phone A getting "Missing calls" errors.

Signal text is working without a problem between all of above four phones.
All phones are using official vendor Android, are updated to the latest system and applications (= Google Play) software and all are using the latest official Signal version from Google Play.

Problem is only related to Signal voice calling (Signal text works fine on all phones) and it looks like problem is related to phone A.

I have performed several tests.

TESTS:

  1. Phone B, C and D can call/receive Signal voice call between each other without a problem.
  2. Phone A can Signal voice call phones B, C and D without a problem.
  3. Phone B and D can never Signal voice call to phone A ("Missing call" error on phone A is displayed).
  4. Phone C can sometimes! Signal voice call to phone A and sometimes it result into problem ("Missing call" error on phone A is displayed). This last one is interesting calling three times without a problem, then missed call problem and calling again and Signal call works fine etc.

When problem appears it is every time like this:
On phones B, C and D Signal voice calling, it appears Dialing and beeping is heard. On phone A it almost immediately (one or two beeps on B/C/D phone at the same time) and it receives notification "Missed call". But interesting phones B, C and D are still in Dialing state, beeping and waiting for receiver to answer the call. Phones B, C and D do not know at all that phone A already got "Missed call" error, they are just in Dialing mode and waiting to receiver to answer the call.

Phone A is now unfortunately lets call it "in state not able to receive a Signal call". But luckily notification of "Missing call" is received and she can establish Signal voice call to B, C and D after it gets "Missing call" error. It is quite an annoyance, because B/C/D has to first cancel orphan call (they do not know the error already appeared on phone A), so there is always some waiting involved.

Above problem was already present in Signal 4.9.9, but I saw new version was coming soon, so waited patiently to get Signal 4.10.12 update on all of the four phones (took some days).

Interesting calling between all of this four phones was previously (like a month ago) working without a problem and then something happened (don't know what) that triggered the problem.

In order to solve the problem by myself I did additional actions on Phone A and B.
I have:
a) unregistered Signal on both phones
b) uninstalled Signal and install Signal back on both phones
c) after install accepting all of the privileges on both phones
d) register phone number
e) enter profile info in both phones
f) send Signal text message on both without a problem
g) Signal voice calling from phone A to phone B working without a problem.
h) Signal voice calling from phone B to phone A resulting on getting "Missing call" error on phone A. So the same problem.

Final test I did at 18:37 time on phone A was displayed and 18:35 time was displayed on phone B (today is date: 2017-09-29). I did a phone call from phone B to phone A and on phone A immediately got "Missed call" error. Immediately after the error was displayed on phone A I pressed red button to cancel call on phone B and submitted the log: https://gist.github.com/c7f97340e9c72a7232e1268efd561291

Few seconds after I submitted the log on phone A: https://gist.github.com/9897e1f05cbef14e9f9e6461a94f1464

Hope this detailed info and logs helps to ping pong the problem. If any additional info is required I am more then glad to help solve this problem.
Regards

@moxie0
Copy link
Contributor

moxie0 commented Oct 2, 2017

@igor2x Are the clocks on phone A and B synchronized? Like do they display the exact same date and time?

@igor2x
Copy link

igor2x commented Oct 2, 2017

@moxie0, thats it. Problem solved. Phone B and D were time-synced (in Android Settings), but both phone A and C have had time sync disabled in Android | Settings | Date & Time. Phone C was less out of time comparing to phone A, that is probably the reason phone C was previously able to establish phone call with A (and also with B and D).

I turned on time-sync on both A and C phones - so all phones now have time-sync enabled - and did several Signal call tests between all the phones. Signal calls now work flawlessly. Thanks a lot for your help. Really appreciate it.

@moxie0
Copy link
Contributor

moxie0 commented Oct 2, 2017

@igor2x That's the problem then. I think 1min of skew is probably the limit, otherwise the client assumes it is receiving an old call invite (missed call). We'll have to implement some other form of liveness detection in order to support devices with inaccurate clocks.

@michaelschefczyk
Copy link

The issue does persist even among fully time synced sets of devices, I think. This does happen at least among devices running LineageOS 14.1 without Google apps.

@maedoredyti
Copy link

I can confirm missing calls.
Clocks in all phones of my family are synchronized because we have another app which requires clock difference not higher than +/- 15 seconds.

I discovered there is a problem with the signal's background task. When I kill Signal and the Signal is killed in memory, after running it again all messages I have not received come to me immediately and I can receive calls. Everything is back to normal.

Signal is excluded from the battery optimization, I am android developer, clocks are synchronized +/- 1 second in all phones. There is a problem with the background task itself.
It happens on phones with or without play services. I have many users of Signal and it happens to them.
I used to kill Signal every time I wake up my phone, maybe 5 sometimes, 10 times a day and I can receive calls. This behavior is not time dependent of how long the phone was unused with black screen in a deep sleep. Sometimes after reboot I can't receive calls and can't receive messages and I need to kill the app and run it again.

This hang of the process is somehow related to switching between WiFi/LTE/H+/3G when I walk/drive and my phone needs to change from H+ to LTE, LTE+ and when I come in range of my WiFi.
After I leave my WiFi and I drive nobody can call me on Signal 50% of the time. I get missing calls so on the next traffic lights I kill the Signal, start it again and all is back to normal.
This is not poor RF signal issue because I have 5 bars on LTE, LTE+. It happens when I come back and I have very strong WiFi signal.

It looks like Signal can't negotiate new IP address with the server and it's background process is stuck in any state machine. This is definitely the flaw in the Signal's background behavior.

@maedoredyti
Copy link

maedoredyti commented Jan 9, 2018

For example after the reboot / cold start a phone catches one network and changes to another. I have roaming permanently enabled because I am in EU and in my country we have also domestic roaming for better cover of the network. I don't pay extra so I have it always enabled because it helps a lot and in my plan I have unlimited internet something like 100GB, impossible to be consumed.
During the WhatsApp call I sometimes hear reconnecting beeps but when it is fast the call is uninterrupted.

During the Signal call the voice call is mostly interrupted forever and half of the time I need to kill the Signal to make it operational again.
It is noticeable when I drive through a forest. I drive through a forest twice a day and the coverage of the the internet is spread among some locally roaming operators. When I drive through the forest I may be sure in 50% that the Signal will never receive an incoming call until I kill it.

@maedoredyti
Copy link

Some words to the story...
I live in a rural area in a single family house constructed of concrete and insulated ceramics. Such material attenuates RF signals especially when they are weak and sources are far away. I have 3 cell towers in my area but far away, let's say 5km. Suppose I sit in one room and I walk to the room on the opposite side of the house with WiFi disabled. My phone hesitates which network to chose and after this there is a big chance I will never receive incoming calls, I will get only call missing messages and no signal to signal text messages. All other apps work properly only Signal is stuck.
The same situation but with WiFi enabled. I walk to the basement, I don't have WiFi there or is very weak and of course almost no cellular networks. Phone starts to search like crazy. When I came back the same. The only cure is to kill the Signal app and start it again.
It happens on many phone models. From 2017 Android unrooted Samsung to other rooted with original firmware or Lineage OS always updated. Some of them are more susceptible some not.
Signal app should better analyze the actual default interface, it's actual IP and react better on frequent changes, maybe reload itself or by a secondary watchdog process.
Remember when you kill the Signal process and run it back without rebooting all is back to normal for some time.

@automated-signal
Copy link

GitHub Issue Cleanup:
See #7598 for more information.

@signalapp signalapp locked and limited conversation to collaborators Apr 3, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests