打印

关于 gnome-terminal 中运行 vim 导致崩溃

关于 gnome-terminal 中运行 vim 导致崩溃

关于 gnome-terminal 中运行 vim 导致崩溃,以及 gtk 程序的一些奇怪崩溃的原因

许多人都发现在 gnome-terminal 中运行 vim 会崩溃。对这个问题最后我们发现的线索是,只要删掉 vte.mo,崩溃就不再发生了,由此证明此崩溃与中文 locale 有关,并非程序逻辑有错。

另外一些多次被提及的 gtk 程序神秘崩溃,在出错的终端上往往能看见这样的字样:

[code:1](g_string_erase): assertion `pos >= 0' failed[/code:1]

我们最后的跟踪发现是,由于传递了非合法 UTF8 字符串进入 glib 的字符串函数(比如最常见的 g_log())导致,由此结案。

最近我翻查 gnome 的 bugzilla 时发现,此两个问题都已经得到确认。在 bug#139441 中,确认 vte 由于没有呼叫 bind_textdomain_codeset 设定字符集为 utf-8,导致传递了非法字符串进而引发上述第二个问题。

同时在 bug#139030 中对第二个问题的研究结果认为,glib 处理非 utf-8 串时的崩溃行为应该属于 bug。

由此这一系列问题应该说都得到了合理的解释。至于在相关模块的最新版中是否已经得到修复,还需要试验加以确认

TOP

已经成历史. 佩服你的研究精神.

TOP

我这的gnome-terminal崩溃了,似乎问题还存在

TOP