首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极随机Pango碰撞

极随机Pango碰撞
EN

Stack Overflow用户
提问于 2016-12-04 07:07:24
回答 1查看 2.1K关注 0票数 1

正如标题说的那样,我经历了一些奇怪的撞车事故,显然是由Pango或其他原因引起的。

我的程序工作正常,每件事都准时进行,没有任何奇怪的视觉故障或任何其他类型的错误,但这种错误通常会导致崩溃。有时,它只是抛出一个异常并继续,但是大约10%的异常以崩溃告终,而没有提到我不知道是什么导致了它。

下面是一些不同尝试的日志:

最常见的一种:

代码语言:javascript
复制
(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

,多多少少常见的.

代码语言:javascript
复制
(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

和最奇怪的:

代码语言:javascript
复制
Pango:ERROR:/build/buildd/pango1.0-1.36.3/./pango/pango-layout.c:3916:pango_layout_check_lines: assertion failed: (!layout->log_attrs)

最后一个错误只出现了一次,其余的错误都是常见的。

具有讽刺意味的是,上一次出现时,我的应用程序还活着的记录时间,然后这个错误突然结束,甚至没有“常见的”错误.

知道会发生什么吗?

正如我之前说过的,我的应用程序可以正常工作,直到上面的一个错误结束为止。

更多信息:

  1. 我的应用程序是多线程的,但这个错误似乎与threads...otherwise无关
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的所有其他数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40956299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档