Argon2 illegal instruction
I posted yesterday about KeePassXC crashing with "illegal instruction" when had v4 encrypted database. From a bit of reading of KeePassXC documentation, it seems that the v3.1 database does not use argon2, v4 does, which is a big clue.
The keepassxc binary is linked with libargon2.so.1, so it looks like the argon2 library is the culprit. I booted up on my Compaq Presario, with Intel Core2 CPU, and yes, the 'argon2' binary crashes:
However, the 'argon2' binary in the initrd, used for folder encryption, does work. I opened up the initrd and got 'argon2' out of it and tested it as shown above, and it works.
Interesting. 'argon2' in the initrd was compiled statically-linked with musl, whereas 'argon2' in the running EasyOS was shared-linked with glibc. The argon2 package in the running Easy also has 'libargon2.so.1', which is linked with the 'keepassxc' binary.
I am just reporting this for now, as have other things to do today. Will track down the cause this evening. I think the next step this evening will be to compile argon2 in Easy running on the Compaq -- that will determine if glibc is the culprit. A quick search for "argon2 illegal instruction" -- a few hits.
EDIT:
Compiled 'argon2' in running EasyOS on the Compaq Presario, and
now it works. I looked at the 'Makefile'; hmmm, yes, it does
have some oddities that might cause trouble in the OE
cross-compile environment. For a quick fix, have created a PET
package from the files compiled in the Compaq, and will use that
in the next release of EasyOS.
Note, 'argon2' is a dependency of
'keepassxc' and 'cryptsetup' packages.
Tags: easy