View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006632 | unreal | ircd | public | 2026-06-26 07:52 | 2026-08-30 12:31 |
| Reporter | syzop | Assigned To | syzop | ||
| Priority | normal | Severity | tweak | Reproducibility | have not tried |
| Status | resolved | Resolution | fixed | ||
| Target Version | 6.2.7 | ||||
| Summary | 0006632: Some self-check of argon2 on boot | ||||
| Description | The past few years we had a dozen reports of an UnrealIRCd crash in the Argon2 library, SIGILL. That's because someone transfers the binaries (and the library) from machine A to machine B, and then machine B is a different CPU.... so the argon2 library contains CPU instructions machine B does not understand and crashes with SIGILL. An idea would be some sort of check on-boot. Not sure if we can catch SIGILL, but even if not, then at least crash on boot and not when the first oper tries to oper up, which is more confusing. | ||||
| 3rd party modules | |||||
|
|
AI suggested we should just fork() to test, then we don't have to catch the SIGILL at all but can just read exit status / exit signal. Good idea. So done now: https://github.com/unrealircd/unrealircd/commit/a855f1a937d6453fe7bc4372c6d7a6710b514b79 commit a855f1a937d6453fe7bc4372c6d7a6710b514b79 (HEAD -> unreal60_dev, origin/unreal60_dev, origin/HEAD) Author: Bram Matthys <[email protected]> Date: Sun Aug 30 12:22:01 2026 +0200 Add minimal self-check for Argon2 (fail early instead of crashing) Sometimes people copy ~/unrealircd from one machine to another, which is not something we encourage. We think you should just rebuild UnrealIRCd. In any case, they probably don't think of it that they might also be on a different CPU (generation). We ship and compile a version of the Argon 2 library optimized for the CPU, because otherwise Argon2 hashing is too slow (typically this is a 2x speedup, compared to system libs). However, this means if you do such simple copying of ~/unrealircd between machines and the CPU differs we will crash on like the first /OPER attempt or whatever triggers Argon2. We now test argon2 early and if it causes a crash such as "Illegal instruction" we print a clear error telling the user what to do. That's before we booted. So early, and a clear advice to the user. Much more helpful. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-06-26 07:52 | syzop | New Issue | |
| 2026-08-30 12:30 | syzop | View Status | private => public |
| 2026-08-30 12:31 | syzop | Assigned To | => syzop |
| 2026-08-30 12:31 | syzop | Status | new => resolved |
| 2026-08-30 12:31 | syzop | Resolution | open => fixed |
| 2026-08-30 12:31 | syzop | Note Added: 0023703 | |
| 2026-08-30 12:31 | syzop | Target Version | => 6.2.7 |