来自gdk_window_get_frame_clock的SIGABRT信号

时间:2014-10-06 01:04:07

标签: c multithreading gtk gdk

我是GDK / GTK的新手,但我试图让一些C代码线程安全。 (它非常大,否则我会在这里发布。) 我正在做一些压力测试,GDB因错误而停止:程序接收信号SIGABRT,中止。该程序在名为gdk_window_get_frame_clock的函数中暂停,根据GDK文档,该函数是用于同步屏幕重绘的低级函数。堆栈跟踪只显示我" 0x0 in ??"对于来电者。 有谁知道这里发生了什么,或者我可以从哪里开始搜索?我完全不知所措。

1 个答案:

答案 0 :(得分:0)

永远不要从包含glib或gtk主循环的线程之外的其他线程中绘制任何内容。使用g_idle_addg_timeout_add或基于GSource的自定义挂钩将辅助线程中的UI更改排入队列(这些是线程安全的!)