取消设置glXMakeContextCurrent时进程崩溃

时间:2018-01-14 15:58:35

标签: c++ linux opengl nvidia glx

几年前我没有遇到过这个bug(上次我在Ubuntu上运行了无头的OpenGL上下文)。

我根据this example创建了无情的GL上下文。我使用此上下文创建和运行应用程序时没有任何问题。但是,当我在关机前执行清理时,此行的那一刻

 glXMakeContextCurrent(xdisplay, 0, 0, 0);

被触发,整个应用程序崩溃。我没有得到任何堆栈跟踪,没有段错误或有用的调试器信息。 xdisplay的句柄和上下文一样有效,我在调用它之前通过调用设置当前上下文来验证它:

 glXMakeContextCurrent(xdisplay, pbuff, pbuff, rc);

我的系统是:Ubuntu 16.04 64bit。 GPU:GTX970,驱动程序:384.98,GLX:1.4

很乐意获得指向可能解决方案的指针,或者至少可能导致此类崩溃。

PS:使用“None”代替零或NULL不会改变任何东西(如果有人想知道)

1 个答案:

答案 0 :(得分:0)

我会回答这个问题,因为错误的原因真的很奇怪。我错误地在这个上下文中设置了SwapInterval。但是上下文是无头的,所以设置SwapInterval没有意义。在这种类型的上下文中调用SwapInterval时,API并不知道返回错误是非常糟糕的。因此,一旦我从无头上下文中删除了SwapInterval调用,问题就消失了。