Skip to content
Snippets Groups Projects
Commit 9b2df75c authored by David Parks's avatar David Parks
Browse files

SL-17077 Ensure profiling is disabled if gpu_benchmark fails. Log the source...

SL-17077 Ensure profiling is disabled if gpu_benchmark fails.  Log the source of the real crash for when the viewer inevitably crashes later.
parent 96178e68
No related branches found
No related tags found
1 merge request!83Merge Linden 6.6.7
...@@ -97,6 +97,11 @@ static const U32 STATUS_MSC_EXCEPTION = 0xE06D7363; // compiler specific ...@@ -97,6 +97,11 @@ static const U32 STATUS_MSC_EXCEPTION = 0xE06D7363; // compiler specific
U32 msc_exception_filter(U32 code, struct _EXCEPTION_POINTERS *exception_infop) U32 msc_exception_filter(U32 code, struct _EXCEPTION_POINTERS *exception_infop)
{ {
const auto stack = to_string(boost::stacktrace::stacktrace());
LL_WARNS() << "SEH Exception handled (that probably shouldn't be): Code " << code
<< "\n Stack trace: \n"
<< stack << LL_ENDL;
if (code == STATUS_MSC_EXCEPTION) if (code == STATUS_MSC_EXCEPTION)
{ {
// C++ exception, go on // C++ exception, go on
......
...@@ -381,7 +381,10 @@ F32 gpu_benchmark(); ...@@ -381,7 +381,10 @@ F32 gpu_benchmark();
F32 logExceptionBenchmark() F32 logExceptionBenchmark()
{ {
// Todo: make a wrapper/class for SEH exceptions // FIXME: gpu_benchmark uses many C++ classes on the stack to control state.
// SEH exceptions with our current exception handling options do not call
// destructors for these classes, resulting in an undefined state should
// this handler be invoked.
F32 gbps = -1; F32 gbps = -1;
__try __try
{ {
...@@ -389,6 +392,9 @@ F32 logExceptionBenchmark() ...@@ -389,6 +392,9 @@ F32 logExceptionBenchmark()
} }
__except (msc_exception_filter(GetExceptionCode(), GetExceptionInformation())) __except (msc_exception_filter(GetExceptionCode(), GetExceptionInformation()))
{ {
// HACK - ensure that profiling is disabled
LLGLSLShader::finishProfile(false);
// convert to C++ styled exception // convert to C++ styled exception
char integer_string[32]; char integer_string[32];
sprintf(integer_string, "SEH, code: %lu\n", GetExceptionCode()); sprintf(integer_string, "SEH, code: %lu\n", GetExceptionCode());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment