Perhaps using safer languages (and languages with better error reporting) would be a solution to these kinds of problems.
Um, no. C is a perfectly valid language and some of the best, most robust systems in the world are written in it (Linux, Git, etc.) Some languages are even built to run atop C (Cython.) Even the JVM deals with pointers, memory allocation issues, and such so you don't have to but it's still there! So using a higher level or "safer" language isn't going to stop these kinds of problems.
The point isn't about abstracting away the machine, but about reducing the amount of code that has no safety guarantees.