OpenGL应用程序中的线程

OpenGL应用程序中的线程,opengl,Opengl,在windows中运行简单的OpenGL应用程序时,有两个未知线程。我想知道应用程序中的这些线程是什么?有关于它们的文档吗?我们的应用程序在其中一个线程中崩溃。在第一步中,我想知道这些线程是什么。 这是nvoglv64的转储: 这些线程不是OpenGL特有的;OpenGL对线程一无所知,因为从技术上讲,它只是一段文本,即规范 但是,在您的情况下,这些线程很可能是由OpenGL实现(也称为图形驱动程序)创建的。正如您所看到的,这些线程似乎负责复制一些数据。这表明它们崩溃了,因为你要么给OpenG

在windows中运行简单的OpenGL应用程序时,有两个未知线程。我想知道应用程序中的这些线程是什么?有关于它们的文档吗?我们的应用程序在其中一个线程中崩溃。在第一步中,我想知道这些线程是什么。

这是nvoglv64的转储:
这些线程不是OpenGL特有的;OpenGL对线程一无所知,因为从技术上讲,它只是一段文本,即规范

但是,在您的情况下,这些线程很可能是由OpenGL实现(也称为图形驱动程序)创建的。正如您所看到的,这些线程似乎负责复制一些数据。这表明它们崩溃了,因为你要么给OpenGL

  • 一些无效的指针
  • 或指针的无效指标(缓冲区大小、步幅等)
  • 或者,当OpenGL仍然从OpenGL上下文线程访问内存时,您正在另一个线程中释放/释放内存
在任何一种情况下,程序崩溃的原因都不是线程故障,而是您没有向OpenGL提供有效数据,或者没有正确地锁定/同步OpenGL,从而不会在运行过程中使缓冲区失效

更新
应用程序验证器发生的崩溃表明,应用程序验证器的某些方面弄乱了OpenGL以某种方式使用的内存。这很可能是应用程序验证程序中的一个错误,但我认为最好的做法是通知NVidia这个问题,这样他们就可以通过驱动程序中的解决方法来解决这个问题。

这些线程不是OpenGL特有的;OpenGL对线程一无所知,因为从技术上讲,它只是一段文本,即规范

但是,在您的情况下,这些线程很可能是由OpenGL实现(也称为图形驱动程序)创建的。正如您所看到的,这些线程似乎负责复制一些数据。这表明它们崩溃了,因为你要么给OpenGL

  • 一些无效的指针
  • 或指针的无效指标(缓冲区大小、步幅等)
  • 或者,当OpenGL仍然从OpenGL上下文线程访问内存时,您正在另一个线程中释放/释放内存
在任何一种情况下,程序崩溃的原因都不是线程故障,而是您没有向OpenGL提供有效数据,或者没有正确地锁定/同步OpenGL,从而不会在运行过程中使缓冲区失效

更新

应用程序验证器发生的崩溃表明,应用程序验证器的某些方面弄乱了OpenGL以某种方式使用的内存。这很可能是应用程序验证程序中的一个错误,但我认为最好的做法是通知NVidia该问题,这样他们就可以通过驱动程序中的解决方法来解决该问题。

您觉得如何显示一些代码?@filmor:这些不是OP创建的线程。@datenwolf我知道,但他还想知道发生车祸的情况。导致崩溃的那一行是在他的代码中,而不是在运行时,这种假设并不牵强。@filmor:确实如此。看到我的答案了。我已经更新了调用堆栈。注意调用堆栈中的nvoglc64.dll。你觉得如何显示一些代码?@filmor:这些不是OP创建的线程。@datenwolf我知道,但他也想要关于崩溃发生的信息。导致崩溃的那一行是在他的代码中,而不是在运行时,这种假设并不牵强。@filmor:确实如此。请参阅我的答案。我已更新了调用堆栈。请注意,当我运行应用程序时,调用堆栈中的nvoglc64.dll在此堆栈处崩溃。但是,当使用应用程序验证器运行简单的opengl应用程序时(应用程序验证器是非托管代码的运行时验证工具(),它会在主线程外的同一堆栈上崩溃。这些线程似乎与opengl的Windows扩展相关(装箱上下文…)JalalaSdGHI:推测这些线程是什么样的,因为它们不关心你。这是由驱动程序创建的(NVGOL64 V.DLL是英伟达驱动程序的OpenGL实现部分)。,但只有NVidia知道这些线程的确切功能。这完全取决于NVidia如何实现其OpenGL驱动程序。现在,如果OpenGL应用程序在应用程序验证程序下运行时崩溃,这可能是OpenGL驱动程序的错误(然后报告给NVidia)或应用程序验证程序的错误(然后报告给Microsoft)@jalalsadeghi:坦白地说,我会向NVidia报告这一点,这样他们就可以在他们的驱动程序中实现一个解决方案。这不是他们第一次以这种方式解决此类错误,而且肯定不是最后一次。我认为这更像是一个驱动程序错误。因为它随机发生在我们的应用程序中(带有体渲染的Medical应用程序)一次大约2或3个小时。但是应用程序验证程序帮助使用简单的opengl应用程序的事件更早地创建它。当我运行我们的应用程序时,它会在此堆栈中崩溃。但是当使用应用程序验证程序运行简单的opengl应用程序时(应用程序验证程序是非托管代码的运行时验证工具()它在主线程外部的同一个堆栈中崩溃。这些线程似乎与OpenGL(CRATING上下文,…)@ JalalAsDGHI的Windows扩展相关:推测这些线程所做的是毫无意义的,因为它们不关心您。是的,它们是由驱动程序创建的(NVGOL64 V.DLL是英伟达驱动程序的OpenGL实现部分)。,但只有NVidia知道这些线程的确切功能。这完全取决于NVidia如何实现其OpenGL驱动程序。现在,如果OpenGL应用程序在应用程序验证程序下运行时崩溃,这可能是OpenGL驱动程序的错误(然后报告给NVidia)或应用程序验证程序的错误(然后报告给Microsoft)@jalalsadeghi:坦白地说,我会向NVidia报告这一点,这样他们就可以在他们的驱动程序中实施一种变通方法。这不是