正如标题说的那样,我经历了一些奇怪的撞车事故,显然是由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)最后一个错误只出现了一次,其余的错误都是常见的。
具有讽刺意味的是,上一次出现时,我的应用程序还活着的记录时间,然后这个错误突然结束,甚至没有“常见的”错误.
知道会发生什么吗?
正如我之前说过的,我的应用程序可以正常工作,直到上面的一个错误结束为止。
更多信息:
发布于 2016-12-06 05:57:04
所有这些都很有用。第一个是指向另一个的链接,第二个是关于同一个主题的问题,第二个是到官方GNOME的devs网站的链接,我找到了关于一个奇怪的Gdk函数的信息:Gdk.threads_add_idle,第三个是指向上述Gdk函数的bug报告的链接,因为在Python中它要求3个args,而在C中只要求2,但在这里它澄清了为什么它要求3。
在我发现Gdk.threads_add_idle之后,修复这个问题并不太困难。
我只需将对Gtk的所有调用转移到函数,在第二个线程中,用Gdk.threads_add_idle(priority, function, data)更改所有这些调用,其中priority应该是GLib.PRIORITY_DEFAULT_IDLE,而function必须是包含对Gtk的所有调用的函数。
data,这是一个可选的参数。它将包含您希望传递给function的所有其他数据。
https://stackoverflow.com/questions/40956299
复制相似问题