取消设置 glXMakeContextCurrent 时进程崩溃

Process crashes when unsetting glXMakeContextCurrent

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

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

 glXMakeContextCurrent(xdisplay, 0, 0, 0);

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

 glXMakeContextCurrent(xdisplay, pbuff, pbuff, rc);

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

很乐意获得可能的解决方案或至少可能导致此类崩溃的原因。

PS:使用 "None" 而不是零或 NULL 没有任何改变(如果有人想知道的话)

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