* data races in a multi-threaded program
* type-casting to the wrong type (e.g. via unions) with compiler optimizations that rely on proper types
* assuming values are absolutely never aliased (shared xor mutable) when there's actually a way to create aliased values (e.g. unsafe {} and raw pointers)
* creating objects out of a sequence of bytes that is not valid for their type
...and likely many others I can't remember.