site  contact  subhomenews

Argon2 illegal instruction

July 14, 2023 — BarryK

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:

img1

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