0

在 Windows 中运行简单的 OpenGL 应用程序时,有两个未知线程。我想知道应用程序中的这些线程是什么?是否有关于它们的文档?我们的应用程序在第一步中在其中一个线程中崩溃我想知道这些线程是什么?. 在此处输入图像描述

这是nvoglv64的转储: 在此处输入图像描述

4

1 回答 1

4

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

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

  • 一些无效的指针
  • 或指针的无效指标(缓冲区大小、步幅等)
  • 或者您在另一个线程中释放/释放内存,而 OpenGL 仍然从 OpenGL 上下文线程访问它。

在任何一种情况下,程序崩溃都不是线程故障,而是没有为 OpenGL 提供有效数据,或者没有正确锁定/与 OpenGL 同步,这样您就不会在操作过程中使缓冲区无效。

更新

Application Verifier 发生的这种崩溃表明,Application Verifier 的某些内容会破坏 OpenGL 以某种方式使用的内存。这很可能是应用程序验证程序中的一个错误,但我认为最好的做法是将问题通知 NVidia,以便他们可以通过驱动程序中的解决方法解决问题。

于 2013-09-03T14:21:16.257 回答