You have a serious engineering problem if you're not able to find the source of a crash after years.
So it’s not that I haven’t worked on large-scale, complex legacy systems - but that I haven’t worked on any large-scale, complex legacy systems written in languages bereft of runtime reflection and verbose error reporting.
—————
It’s also possible that the bug was never found because its impact was so minimal: e.g. 1 crash per year, each causing 3 minutes’ downtime in a noncritical system: that’s something that will never get investigated fully.
A crash is actually the easiest kind of problem to fix since you have a crash. It means stacktrace, core dump, kernel error etc..