-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Corrupted binaries built from Ubuntu 22.04 #9371
Comments
I think it's sufficient to say that only 18.04 and 20.04 are supported. 22.04 is definitely broken; that was what prompted me to write the dockrun script since I could no longer get workable builds on my native 22.04 dev environment. |
@hyc it seems to be a more general issue, not necessarily gitian / depends related. Some changes between the compiler in ARM64 Ubuntu 20.04 and 22.04 causes serialization incompatabilies if I understand it right. |
I am looking into this and trying to reproduce it. In the mean time, any specific tests that I can run to reproduce the error? or the executable fails to run at all? |
You should be able to save a wallet file from one binary and open in the other binary to observe an error and confirm they're not compatible. |
Thanks. I will try it in my VM. |
Ran the tests on ubuntu 22.04 x86, and no issues were detected. Trying arm64. |
Thanks to @woodser running the tests under ARM64 we know these tests fail:
|
Just to be clear - you create a wallet using a binary built on Ubuntu 18.04, and try to open it using a wallet binary built on Ubuntu 22.04, correct? (And vice versa.) |
My point is that the only way to get a usable binary is to use Ubuntu 18 or 20, so I wrote dockrun to make it easy to have it built in the correct Ubuntu environment. It's not a problem with gitian or depends, it's merely that they're a known working system and Ubuntu 22 is known not to work. |
@hyc Are you sure? because I tried with ubuntu 22.04 (x86_64) and was able to build |
Passing the tests is irrelevant since they don't test by writing a wallet file from one binary and reading it from a differently built binary. |
After a private discussion with @hyc and @woodser ( and help from @nahuhh ), I am able to reproduce this issue. Cross-compiled binaries built from ubuntu 20.04 and ubuntu 22.04 are acting differently. The Only aarch64 and x86 tested. The x86 wallets work without issue. |
Here is the latest information about the bug:
If anybody has any suggestions, I appreciate it. |
( Thanks to @tobtoht for finding the actual function bug happens ) If you add |
Here is a list of updates that we know about this bug. Only happens with I generated both I have gcc's |
This is fixed in gcc 12.2+ (perhaps earlier - untested) |
Building the Monero binaries on Ubuntu 22.04 completes successfully but produces corrupted binaries, wherein at least the wallet files are incompatible and also multisig wallets are broken.
For example, by building on Ubuntu 22.04 ARM64 with the command
make depends target=aarch64-linux-gnu
, the build completes successfully, but multisig wallets will fail to import multisig info from the corrupted peer, with the errorMultisig info is for a different account
.This led to an issue in which users were unable to recover their funds except by restoring from seed with good binaries.
The instructions indicate that only Ubuntu 18.04 and 20.04 are tested. To avoid loss of funds, I think the build should produce an error or at least a warning when building from Ubuntu >20.04, until later versions are officially tested.
The text was updated successfully, but these errors were encountered: