正如标题所说,我已经遇到了一些奇怪的崩溃,显然是由Pango或相关人员引起的。
我的程序正常运行,按时完成所有操作,没有任何奇怪的视觉故障或任何其他类型的错误,但这种错误通常导致崩溃。有时它会抛出一个异常并继续,但大约有10%的异常在崩溃中结束,但没有提到我不知道是什么导致它。
以下是一些不同尝试的日志:
最常见的一个:
(App:23224): Pango-CRITICAL **: pango_layout_set_width: assertion 'layout != NULL' failed
(App:23224): Pango-CRITICAL **: pango_layout_get_width: assertion 'layout != NULL' failed
(App:23224): Pango-CRITICAL **: pango_layout_get_extents: assertion 'layout != NULL' failed
(App:23224): Pango-CRITICAL **: pango_layout_is_wrapped: assertion 'layout != NULL' failed
(App:23224): Pango-CRITICAL **: pango_layout_is_ellipsized: assertion 'layout != NULL' failed
./Def:822: Warning: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
Gtk.main()
(App:23224): Pango-CRITICAL **: pango_layout_get_extents: assertion 'layout != NULL' failed
或多或少的常见...
(App:22385): Pango-CRITICAL **: pango_layout_is_wrapped: assertion 'layout != NULL' failed
(App:22385): Pango-CRITICAL **: pango_layout_is_ellipsized: assertion 'layout != NULL' failed
./Def:820: Warning: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
Gtk.main()
(App:22385): Pango-CRITICAL **: pango_layout_get_extents: assertion 'layout != NULL' failed
最奇怪的是:
Pango:ERROR:/build/buildd/pango1.0-1.36.3/./pango/pango-layout.c:3916:pango_layout_check_lines: assertion failed: (!layout->log_attrs)
最后一次只见过一次,其余的错误都很常见。
具有讽刺意味的是,最后一个出现在我的应用程序仍处于活动状态达到创纪录时间之后,然后这个错误突然结束了,甚至没有#34;常见的"错误...
任何想法可能会发生什么?
正如我之前所说,我的应用程序应该正常工作,直到上述错误之一结束。
更多信息:
答案 0 :(得分:1)
嗯,经过长时间的研究,我确实找到了This,This和This。
所有' em都很有用。第一个是关于同一个主题的另一个SO问题的链接,第二个链接到官方GNOME的开发者网站,我找到了一个关于好奇的信息{ {1}}函数:Gdk
,第三个函数链接到前面提到的Gdk函数的错误报告,因为在Python中它要求3个args,当在C中只询问2时,但是它澄清了为什么要求3。
在我发现Gdk.threads_add_idle
之后解决这个问题并不困难。
我只需将我的所有调用Gtk移动到函数中,在第二个线程中,使用Gdk.threads_add_idle
更改所有调用,其中Gdk.threads_add_idle(priority, function, data)
应为priority
并{{1必须是包含对Gtk的所有调用的函数。
GLib.PRIORITY_DEFAULT_IDLE
它是一个可选参数。它应包含您要传递给function