Invalid opcodes sounds like the processor is either jumping to a random location and trying to execute garbage, or the compiler generated opcodes which aren't valid for the processor.
You mention you use
target=native when compiling, so it may even be a bug in
rustc or LLVM. For example, it may try to use platform-specific instructions (SIMD, etc.) that aren't actually available.
If possible, you may want to run the program under GDB (or any other debugger). If the program hits an illegal instruction GDB should halt things and let you look at the assembly or backtrace. You mention this being a long-running process, so it may be a case of leaving it to run overnight or periodically checking it while doing other things.
rust-lang/rust#38218 may also be relevant here. In particular, this comment is promising:
@EFanZh The issue is that Rust will generate code for your CPU family, which is the Haswell family.
In theory, AVX is architecturally guaranteed on Haswell, but some CPUs like your Pentium lack it.