GL: Protect against infinite loops with CONTEXT_LOST in CheckError
If the GL context generates a CONTEXT_LOST error, stop checking for errors.
This error will be generated continuously and result in an infinite loop.
BUG=angleproject:3020
Change-Id: Ib78d1ff3f84103e658307f2f892538700916449d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2142312
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/gl/renderergl_utils.cpp b/src/libANGLE/renderer/gl/renderergl_utils.cpp
index e19a953..bf99968 100644
--- a/src/libANGLE/renderer/gl/renderergl_utils.cpp
+++ b/src/libANGLE/renderer/gl/renderergl_utils.cpp
@@ -1965,9 +1965,11 @@
ERR() << "GL call " << call << " generated error " << gl::FmtHex(error) << " in " << file
<< ", " << function << ":" << line << ". ";
- // Check that only one GL error was generated, ClearErrors should have been called first
+ // Check that only one GL error was generated, ClearErrors should have been called first.
+ // Skip GL_CONTEXT_LOST errors, they will be generated continuously and result in an
+ // infinite loop.
GLenum nextError = functions->getError();
- while (nextError != GL_NO_ERROR)
+ while (nextError != GL_NO_ERROR && nextError != GL_CONTEXT_LOST)
{
ERR() << "Additional GL error " << gl::FmtHex(nextError) << " generated.";
nextError = functions->getError();