Closed Bug 1673277 Opened 11 months ago Closed 7 months ago

Thunderbird updater keeps failing for Arm CPU

Categories

(Thunderbird :: Installer, defect)

defect

Tracking

(thunderbird_esr78+ fixed)

RESOLVED FIXED
87 Branch
Tracking Status
thunderbird_esr78 + fixed

People

(Reporter: joshcritto, Assigned: rjl)

Details

Attachments

(2 files)

User Agent: Mozilla/5.0 (Windows NT 10.0; rv:82.0) Gecko/20100101 Firefox/82.0

Steps to reproduce:

About my PC - Samsung galaxy book S (Arm CPU)
32bit ver of thunderbird.

Click thunderbird menu ->
Help ->
About Thunderbird.

Actual results:

Thunderbird proceeds to download update ->
Update failed.

Expected results:

Updated.

This has happened for quite a while now even on various versions and i need to manually download from website and install from there.
Problem i believe is likely due to incompatibility due to arm cpu as firefox updater works fine.
Separately -- Also as a feature request can we get an ARM version of thunderbird please (This is potentially also another way of solving the problem)

Where did you get the arm version of Thunderbird initially? As we don't support ARM officially it would be from somewhere else and you'd need to get updates from there. They should disable/change the normal updater as appropriate.

Summary: Thunderbird updater keeps failing → Thunderbird updater keeps failing for Arm CPU

Sorry i didnt put enough info but this not arm version of thunderbird that i am using, as stated previously this is 32bit thunderbird and its from thunderbird main site.
when using 32bit apps on windows 10(ARM) it runs them in a sort of compatibility mode

I'd need to see the URL that it's using to query the update service to be sure. But, if it's anything like x86 on x64 os, it will have a path component like 'WINNT_x86_64-msvc-x64' where the x86_64/x64 will vary depending on host arch and build arch.

The update server won't know what to do with an arm host even if it is just the regular x86 32bit build.

I don't see anything other than the regular aarch64 build in the update server for Firefox. I don't know if Thunderbird even builds for aarch64 on WIndows. I do know that on Linux it does work with patches to the Firefox portion of the code; I've yet to see any aarch specific patches to Thunderbird code.

Im not sure if this is the correct url/option that you wanted to see but ill post it anyway just in case, only found out how to do this by seeing the firefox way of doing it and figured that since theres a lot of similarities between firefox and thunderbird i might as well give it a try.

i went to the config editor -->
typed in: app.update.url -->
value of string is:
https://aus.thunderbird.net/update/6/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%SYSTEM_CAPABILITIES%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml

This is just a guess on my part from the look of what the value is, but could it be that even though ive got 32bit thunderbird its still trying to detect what system i have so it can download the optimal version, since there is no aarch64 build of tb then it tries its next best guess for the x86_x64 version, downloads that which ends up as an obvious fail because x64 just wont work on arm cpus.

That url has values that will be replaced before using.
You can open the Thunderbird Developer Tools and then in the Networking tab check what urls get sent.

i didnt make much sense of what it showed me so i took a screenshot, the google one is likely because as soon as i opened dev tools the client then kept on spamming me to retype in my password for my email, everything else should be from when i clicked download in help -> about thunderbird

Please copy paste the address for that GET into this bug.

Based on the screenshot I can see that this is not an issue with the update server.
The URL is requesting an update to Thunderbird 78.3.3, 32-bit (x86) build on a 32-bit (x86) Windows, in the en-GB locale. Then based on the response, Thunderbird first tries a partial update (which is in the internal browser cache) and then downloads the complete update as the partial apparently fails for some reason.

The automated update checks for 78.4.0 would have checked for a bad update file, so it's unlikely that the update files are bad since those tests all passed. Unfortunately, without an arm-based Windows device to reproduce this on I can't go any further.

For thoroughness' sake, I verified this update does work on non-arm Windows using the partial mar file.

Do you have to apply the compatibility translation per executable? I'm thinking that updater.exe needs to have that set perhaps?

The 32bit compatibility mode is automatic and works with most apps, thats what microsoft says at least if memory serves and as for my own experience, thunderbird has been the only app that ive seen that has had issues, which is this one.
Most people wouldnt even notice when you use the computer that it uses a compatibility mode as its part of the OS, its only from my very limited knowledge that aarch64 works a bit differently from x86_x64 cpus and that ive done a little bit of research before buying the laptop to make sure the apps i want to use would work on it that i know that it does use one.

This problem has persisted for quite a few updates (i got this computer somewhere around 6-7 months ago), its only just recently that i thought i should report it as it does often annoy me.

As for the partial update you see on screenshot, i have exited thunderbird, as well as restarting my pc and its all the same result each time so its not a one off thing if that helps any.

I got a Win10 arm system running over the weekend (go raspberry pi!) I have not yet had a chance to replicate this yet, but I plan to in the next few days.

joshcritto:
Try this -- (updates worked for me after I made this change)
In Options -> General -> Updates
uncheck "Use a background service to install updates"

(For anyone who wants to fix this) -- I think what's happening is the Maintenance Service is relying on IsWow64Process somehow (or the installer for the maintenance service perhaps) and it needs to use IsWowProcess2 going forward. https://docs.microsoft.com/en-us/windows/uwp/porting/apps-on-arm-troubleshooting-x86 Firefox probably already addressed this somewhere and it just needs porting.

Yes it worked!!!

Thankyou for the workaround

This is to get the maintenance service to recognize that it is running on an
ARM system with x86 Thunderbird and fix background updates.

Assignee: nobody → rob

I ran a try build for the patch in comment 15. https://treeherder.mozilla.org/jobs?repo=try-comm-central&revision=999f1a3f05a16a1319c64b5c6659ef5f8148dea1

This should get the maintenance service working for background updates on Win10 ARM using the win32 (x86) installer.

I don't see any errors resulting from the changes. I also ran the installer on an x64 Windows 10 system with no issues. Finally, I verified that the maintenance service that is installed from this build functions on that system by updating the Firefox install using it. I am working on testing the win32 installer on a Win10 ARM system.

Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true

Pushed by thunderbird@calypsoblue.org:
https://hg.mozilla.org/comm-central/rev/5e798522b082
Add ARM64 support to Windows installer and derivatives. r=Paenglab

Status: ASSIGNED → RESOLVED
Closed: 7 months ago
Resolution: --- → FIXED
Target Milestone: --- → 87 Branch

Comment on attachment 9194463 [details]
Bug 1673277 - Add ARM64 support to Windows installer and derivatives. r=Paenglab

[Approval Request Comment]
Add support for it. Probably not a huge number of people affected...

Attachment #9194463 - Flags: approval-comm-esr78?

Comment on attachment 9194463 [details]
Bug 1673277 - Add ARM64 support to Windows installer and derivatives. r=Paenglab

[Triage Comment]
Approved for esr78

Attachment #9194463 - Flags: approval-comm-esr78? → approval-comm-esr78+
You need to log in before you can comment on or make changes to this bug.