I've faced crashes in the past multiple times when some
check::EndAnalysis callback caused some crash.
It's really anoying that it doesn't tell which function triggered this
callback.
This patch adds the well-known trace for that situation as well.
Example:
1. <eof> parser at end of file 2. While analyzing stack: #0 Calling test11
Note that this does not have tests.
I've considered unittests for this purpose, by using the
ASSERT_DEATH() similarly how we check double eval called functions in
ConflictingEvalCallsTest.cpp, however, that the testsuite won't invoke
the custom handlers. Only the message of the llvm_unreachable() will
be printed. Consequently, it's not applicable for us testing this
feature.
I've also considered using an end-to-end LIT test for this.
For that, we would need to somehow overload the clang_analyzer_crash()
ExprInspection handler, to get triggered by other events than the
EvalCall. I'm not saying that we could not come up with a generic way
of causing crash in a specific checker callback, but I'm not sure if
that would worth the effort.
Okay, so, at least we will get the name of the top-level function, right? Some comments might be useful here.