Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-100568

Crash in Renderer::cleanupShader

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P1: Critical
    • 6.3
    • 6.2.3
    • Qt3D
    • None
    • Windows

    Description

      In qt3d/src/plugins/renderers/opengl/renderer/renderer.cpp, line 1427, Renderer::cleanupShader the input Shader *shader is sometimes null. This causes a crash as it is dereferenced (shader->peerId()) without checking for null.

       

      void Renderer::cleanupShader(const Shader *shader)
      {
          GLShaderManager *glShaderManager = m_glResourceManagers->glShaderManager();
          GLShader *glShader = glShaderManager->lookupResource(shader->peerId());
      
          if (glShader != nullptr)
              glShaderManager->abandon(glShader, shader);
      }
      
      

      Adding a simple check for null fixes the crash.

      void Renderer::cleanupShader(const Shader *shader)
      {
          if (!shader)
              return;
      
          GLShaderManager *glShaderManager = m_glResourceManagers->glShaderManager();
          GLShader *glShader = glShaderManager->lookupResource(shader->peerId());
      
          if (glShader != nullptr)
              glShaderManager->abandon(glShader, shader);
      }
      
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            seanharmer Sean Harmer
            harald Harald Vistnes
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes