Of course every programming language is not perfect, including its library and related implementations.
In all of them is possible to introduce logical bugs.
The problem with C and its derived languages is that not only one has the logical bugs common to all programming languages, there are the memory corruption and UB introduced bugs to worry about as well.
While one can think as being super competent, make use of all tools to reduce such error cases, there are always situations where such errors get introduced due to fatigue, project pressure, continuous interrupts.
Additionally since most of us don't work alone, the actual code quality is an average of everyone that has ever worked on the code, and not everyone shares the same goals regarding quality of their work.
I share the feeling with the author, always tried to follow C and C++ best practices, when coding in C I adopted or evangelized tooling, safety standards or known books that lead to safer code.
Yet, like everyone else I had my share of memory corruption issues back on my C and C++ days.
One anecdote was trying to find out a memory leak that was bringing down a server in production, with the customer calling technical support every single day.
It took one week to track it down, and it wasn't something I would advise anyone to experiment.