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

Autoupdate fails on some networks #7159

Open
2 tasks done
waiwaing opened this issue Feb 6, 2025 · 5 comments
Open
2 tasks done

Autoupdate fails on some networks #7159

waiwaing opened this issue Feb 6, 2025 · 5 comments

Comments

@waiwaing
Copy link

waiwaing commented Feb 6, 2025

Using a supported version?

  • I have searched searched open and closed issues for duplicates.
  • I am using Signal-Desktop as provided by the Signal team, not a 3rd-party package.

Overall summary

On my home network connection, Signal desktop's autoupdate reliably fails and gives the "Cannot Update" error message in the sidebar. Looking at the debug logs, this is because during the download of the full update from updates2.signal.org, the connection is interrupted.

If I tether to my phone, the autoupdate works correctly. Similarly, if I run curl -k https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.1.zip --output signaltest1.zip, the download completes successfully (even if --limit-rate is set very low). So the issue is not just my network connection, but the combination of the Signal desktop app and my network connection - changing either means the download (and thus the autoupdate) works successfully.

The network connection is unfiltered and I have checked that my DNS providers can correctly resolve updates2.signal.org domain. I am happy to run additional diagnostics to work out what is causing this issue but the above are the obvious tests and I am not sure what else would be helpful.

Steps to reproduce

  1. Wait for an update to become available and the autoupdate to try to update
  2. Observe the "Cannot Update" error
  3. Click the "Retry update" link
  4. Note that after ~30 seconds, the "Cannot Update" error reoccurs.

Expected result

Signal correctly autoupdates.

Actual result

See above. The error message is:

Cannot Update
Signal couldn't update. Retry update or visit https://signal.org/download/ to install it manually. Then, contact support about this problem

Screenshots

Image

Signal version

7.40.1

Operating system

macOS 15.1.1 (Sequoia)

Version of Signal on your phone

No response

Link to debug log

https://debuglogs.org/desktop/7.40.1/ff9bfc4b9fc7238743dab59968a6a7ec429890ea18209be7d95065254d24e99d.gz

@scottnonnenberg-signal
Copy link
Contributor

What can you say about your network? Is it some sort of organization that has controls on how the connection is used? Is it an unstable connection that has frequent dropped packets or packet delays?

It's possible that curl is more forgiving than Signal Desktop when doing the download. Have you tried getting more information from curl with -v?

You have a lot of these in your log:

ERROR 2025-02-05T20:12:04.037Z downloadUpdate: Failed to apply differential update ReadError: The server aborted pending request
INFO  2025-02-01T21:46:37.815Z downloadUpdate: Downloading signature https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.0.zip.sig
INFO  2025-02-01T21:46:37.924Z downloadUpdate: Downloading blockmap https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.0.zip.blockmap
INFO  2025-02-01T21:46:38.107Z downloadUpdate: Downloading full update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.0.zip
ERROR 2025-02-01T21:47:22.929Z downloadAndInstall: fatal error ReadError: The server aborted pending request

One of these (a success!):

INFO  2025-02-04T01:06:42.730Z downloadUpdate: Downloading signature https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.1.zip.sig
INFO  2025-02-04T01:06:43.212Z downloadUpdate: Downloading blockmap https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.1.zip.blockmap
INFO  2025-02-04T01:06:43.909Z downloadUpdate: Downloading full update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.1.zip
INFO  2025-02-04T01:06:57.628Z downloadUpdate: Downloaded update, moving into cache dir
INFO  2025-02-04T01:06:57.816Z downloadAndInstall: handing download to electron...
INFO  2025-02-04T01:06:58.934Z downloadAndInstall: showing update dialog...
INFO  2025-02-04T01:07:06.641Z downloadAndInstall: restarting...

And one of these as well, a different error, this time a timeout:

INFO  2025-02-05T20:11:58.847Z downloadUpdate: Downloading signature https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.41.0.zip.sig
INFO  2025-02-05T20:11:58.968Z downloadUpdate: Saving blockmap https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.41.0.zip.blockmap
INFO  2025-02-05T20:11:58.971Z downloadUpdate: Downloading differential update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.41.0.zip
INFO  2025-02-05T20:12:04.037Z downloadUpdate: Downloading full update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.41.0.zip
INFO  2025-02-05T20:13:59.321Z downloadAndInstall: transient error RequestError: Timeout awaiting 'socket' for 60000ms

@waiwaing
Copy link
Author

waiwaing commented Feb 7, 2025

What can you say about your network? Is it some sort of organization that has controls on how the connection is used? Is it an unstable connection that has frequent dropped packets or packet delays?

It's a home network connection that runs off of a 5G uplink. The connection is very stable; typical network performance is

Metric Down Up Unloaded
Speed (Mbps) 100 10 n/a
Latency (ms) 30 600 25

Various network speed tests consistently show 0% packet loss. I've not observed any network filtering or other unusual behaviour from the ISP. The things that make suspect it's not (just) the ISP are: (1) the download is fine using curl and HTTPS mean that the ISP can't be doing any detailed sniffing and blocking the Signal desktop client, and (2) if it were the ISP, I'd expect the error to happen a lot earlier in the process, rather than ~30 seconds into the download.

It's possible that curl is more forgiving than Signal Desktop when doing the download. Have you tried getting more information from curl with -v?

I've dumped the stderr stream from curl -v on a Gist - as far as I can see, the initial connection is established without any issues, and then the progress bar just keeps going at it until it hits 100%. I suppose it's possible that there are silent TCP errors that are being corrected at the network layer, but I would equally expect Signal's network connection to also have those handled.

One of these (a success!):

I'm afraid this is misleading! That successful update was actually on a separate network connection (phone tethering) when trying to establish what the issue was.

@scottnonnenberg-signal
Copy link
Contributor

It certainly is interesting, the difference between your home network and tethering to your phone. You might try one of these more refined tests; they might be able to tell you if it's something related to router or even ISP hardware:

@waiwaing
Copy link
Author

waiwaing commented Feb 7, 2025

The results from the Cloudflare test are as follows - I'm not seeing anything that suggests a network issue, and yet have just retried the autoupdate and still see the same issue.

Image

the difference between your home network and tethering to your phone.

Just for the avoidance of doubt, the two use different 5G networks so it does not completely rule out an ISP issue but certainly I don't see any obvious evidence of one.

@scottnonnenberg-signal
Copy link
Contributor

One big difference between the success and the failure is how long it takes to do the download:

For the successful case, it took 14 seconds:

INFO  2025-02-04T01:06:43.909Z downloadUpdate: Downloading full update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.1.zip
INFO  2025-02-04T01:06:57.628Z downloadUpdate: Downloaded update, moving into cache dir

In the 'server aborted' failure case above, it took ~45 seconds:

INFO  2025-02-01T21:46:38.107Z downloadUpdate: Downloading full update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.40.0.zip
ERROR 2025-02-01T21:47:22.929Z downloadAndInstall: fatal error ReadError: The server aborted pending request

And in the timeout case, it took almost two minutes for our 60s timeout to hit:

INFO  2025-02-05T20:12:04.037Z downloadUpdate: Downloading full update https://updates2.signal.org/desktop/signal-desktop-mac-arm64-7.41.0.zip
INFO  2025-02-05T20:13:59.321Z downloadAndInstall: transient error RequestError: Timeout awaiting 'socket' for 60000ms

Lastly, I see that your successful curl test took 28 seconds. There's definitely something different about how the connection is made by Desktop - I don't think it's http/2 like curl does.

You might try a lower-level network inspection tool (WireShark or similar) to watch what happens when Desktop interacts with the auto-update, since it reliably reproduces for you, but doesn't for any of us!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants