Open SamLukeYes opened 5 months ago
貌似与 Society 词库有关,禁用该词库并重启 ibus 后就没出现这个问题了。
在干净的 nixos 虚拟机中似乎无法复现,不知道我还漏了什么复现条件(
有可能是用户数据损坏造成的。
有可能是用户数据损坏造成的。
已经尝试过点击这里的“清除所有数据”,并启用 Society 词库,然后重启 ibus,问题仍会出现
请在 Console 下,删除 ~/.cache/ibus/libpinyin/user.conf
文件,再登陆图形界面。
请在 Console 下,删除
~/.cache/ibus/libpinyin/user.conf
文件,再登陆图形界面。
这样操作之后问题确实消失了。该文件内容如下:
binary format version:7
model data version:14
database format:BerkeleyDB
看来是用户数据损坏造成的。
我被这个问题困扰好久了,以前以为是和wayland环境不兼容,后来发现把$HOME下所有ibus相关的配置文件全部删掉就好了
但是每次删除后用不了多久,这个问题还是会出现,严重影响在Linux环境下的工作,实在忍无可忍来这里提issue.
附件是我抓到的stack backtrace
可能也是用户数据文件损坏造成的。
请在 Console 下,删除 ~/.cache/ibus/libpinyin/user.conf 文件,再登陆图形界面。
可以肯定是这个原因造成的。还是希望能够找到数据损坏的原因并修复,或者起码做一些防护,在数据文件损坏时输入法不崩溃,能够正常使用输入法并重建数据文件。
这可能是因为,第4个候选词之后不能选择。
这可能是因为,第4个候选词之后不能选择。
请问您使用的 ibus-libpinyin 和 libpinyin 版本是?
我这里又一次出现了问题。目前看不是user.conf损坏造成的,因为问题好坏user.conf文件都是一样的,看不出损害的痕迹。删除user.conf可以修复问题是因为删除这个文件引起了其他文件的重建。 目前看可能出现了问题的文件有: gb_char.dbin opengram.dbin user_bigram.db user.bin user_phrase_index.bin user_pinyin_index.bin 出现问题时,上述文件的大小均小于删除user.conf后重建的文件大小
这个问题应该在 ibus-libpinyin 1.15.5 或者之后的版本有所改善,应该会减少出现问题的频率。
现在我用的版本是 libpinyin-data-2.8.1-7.fc40.x86_64 libpinyin-2.8.1-7.fc40.x86_64 ibus-libpinyin-1.15.7-1.fc40.x86_64 继续观察中……
短短一天时间,问题又出现了,这是用gdb跟踪的结果。看上去是libpinyin/src/pinyin.cpp 534行这句assert没通过
assert(phrase_length == item.get_phrase_length());
我是不是应该把issue提在那个仓库,还是你们是同一拨开发者?
libpinyin 的开发者也是我,回来我看一下这个问题。
请问您输入的拼音和中文是?
这个每次清空数据后到下次发生故障,输入的词语都不同。 本次发生故障,输入的词语包括“联锁” (铁路专业术语,不是“连锁”),”数据“等,但输入”新联锁“不会出现故障。 怀疑和本地存储的用户词语或者动态词频有关。 我本地存储的输入法数据一并打包放在附件里,供参考。 ime_data.tar.gz
我目前遇到的问题是,经常性地不能选择第5个候选词。
来了就看到这个问题,我的问题是,无法输入“无法”和“可以”…… 版本1.15.7
ibus-engine-libpinyin killed by SIGABRT
#1 [libc.so.6] _nl_load_domain.cold
#2 [libc.so.6] 341d2be28035b1c2546e062799b0e8598dd1d726+231799
#3 [libpinyin.so.15] _add_phrase(_pinyin_context_t*, unsigned char, _GArray*, unsigned int*, long, int) [clone .lto_priv.0]
#4 [libpinyin.so.15] _remember_phrase_recur(_pinyin_instance_t*, _GArray*, _GArray*, unsigned long, unsigned int*, int)
#5 [libpinyin.so.15] pinyin_remember_user_input
Process 6211 (ibus-engine-lib) of user 1000 dumped core.
Module libgvfscommon.so from rpm gvfs-1.54.0-2.fc40.x86_64
Module libgvfsdbus.so from rpm gvfs-1.54.0-2.fc40.x86_64
Module libdconfsettings.so from rpm dconf-0.40.0-12.fc40.x86_64
Module libblkid.so.1 from rpm util-linux-2.40-0.9.rc1.fc40.x86_64
Module liblzma.so.5 from rpm xz-5.4.6-3.fc40.x86_64
Module libffi.so.8 from rpm libffi-3.4.4-7.fc40.x86_64
Module libpcre2-8.so.0 from rpm pcre2-10.42-2.fc40.2.x86_64
Module libselinux.so.1 from rpm libselinux-3.6-4.fc40.x86_64
Module libmount.so.1 from rpm util-linux-2.40-0.9.rc1.fc40.x86_64
Module libgmodule-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libkyotocabinet.so.16 from rpm kyotocabinet-1.2.80-5.fc40.x86_64
Module libz.so.1 from rpm zlib-ng-2.1.6-2.fc40.x86_64
Module liblua-5.4.so from rpm lua-5.4.6-5.fc40.x86_64
Module libgobject-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libglib-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libgio-2.0.so.0 from rpm glib2-2.80.0-1.fc40.x86_64
Module libibus-1.0.so.5 from rpm ibus-1.5.30~rc1-1.fc40.x86_64
Module libpinyin.so.15 from rpm libpinyin-2.8.1-7.fc40.x86_64
Module ibus-engine-libpinyin from rpm ibus-libpinyin-1.15.7-1.fc40.x86_64
Stack trace of thread 6211:
#0 0x00007f193e0ab144 __pthread_kill_implementation (libc.so.6 + 0x98144)
#1 0x00007f193e05365e raise (libc.so.6 + 0x4065e)
#2 0x00007f193e03b902 abort (libc.so.6 + 0x28902)
#3 0x00007f193e03b81e __assert_fail_base.cold (libc.so.6 + 0x2881e)
#4 0x00007f193e04b977 __assert_fail (libc.so.6 + 0x38977)
#5 0x00007f193e95cdc8 _ZL11_add_phraseP17_pinyin_context_thP7_GArrayPjli.lto_priv.0 (libpinyin.so.15 + 0x76dc8)
#6 0x00007f193e9718ae _ZL22_remember_phrase_recurP18_pinyin_instance_tP7_GArrayS2_mPji (libpinyin.so.15 + 0x8b8ae)
#7 0x00007f193e9718ae _ZL22_remember_phrase_recurP18_pinyin_instance_tP7_GArrayS2_mPji (libpinyin.so.15 + 0x8b8ae)
#8 0x00007f193e971b99 pinyin_remember_user_input (libpinyin.so.15 + 0x8bb99)
#9 0x0000560d8620e778 _ZN2PY14PhoneticEditor23selectCandidateInternalERNS_17EnhancedCandidateE (ibus-engine-libpinyin + 0x19778)
#10 0x0000560d8620d2f4 _ZN2PY14PhoneticEditor15selectCandidateEj (ibus-engine-libpinyin + 0x182f4)
#11 0x0000560d8620f808 _ZN2PY12PinyinEditor15processKeyEventEjjj.part.0 (ibus-engine-libpinyin + 0x1a808)
#12 0x0000560d86213088 _ZN2PY12PinyinEngine15processKeyEventEjjj (ibus-engine-libpinyin + 0x1e088)
#13 0x00007f193e8752c8 _ibus_marshal_BOOLEAN__UINT_UINT_UINT (libibus-1.0.so.5 + 0x152c8)
#14 0x00007f193e4fa5da g_closure_invoke (libgobject-2.0.so.0 + 0x115da)
#15 0x00007f193e52a5f0 signal_emit_unlocked_R.isra.0 (libgobject-2.0.so.0 + 0x415f0)
#16 0x00007f193e51a519 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x31519)
#17 0x00007f193e51af11 g_signal_emit_valist (libgobject-2.0.so.0 + 0x31f11)
#18 0x00007f193e51afd3 g_signal_emit (libgobject-2.0.so.0 + 0x31fd3)
#19 0x00007f193e88ce8c ibus_engine_service_method_call (libibus-1.0.so.5 + 0x2ce8c)
#20 0x00007f193e799c66 call_in_idle_cb.lto_priv.2 (libgio-2.0.so.0 + 0x105c66)
#21 0x00007f193e5a9dad g_idle_dispatch (libglib-2.0.so.0 + 0x62dad)
#22 0x00007f193e5a368c g_main_context_dispatch_unlocked.lto_priv.0 (libglib-2.0.so.0 + 0x5c68c)
#23 0x00007f193e604788 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xbd788)
#24 0x00007f193e5a9647 g_main_loop_run (libglib-2.0.so.0 + 0x62647)
#25 0x00007f193e8a5f00 ibus_main (libibus-1.0.so.5 + 0x45f00)
#26 0x0000560d86202227 main (ibus-engine-libpinyin + 0xd227)
#27 0x00007f193e03d088 __libc_start_call_main (libc.so.6 + 0x2a088)
#28 0x00007f193e03d14b __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x2a14b)
#29 0x0000560d86202bc5 _start (ibus-engine-libpinyin + 0xdbc5)
Stack trace of thread 6212:
#0 0x00007f193e12918d syscall (libc.so.6 + 0x11618d)
#1 0x00007f193e60183d g_cond_wait (libglib-2.0.so.0 + 0xba83d)
#2 0x00007f193e56e58b g_async_queue_pop_intern_unlocked (libglib-2.0.so.0 + 0x2758b)
#3 0x00007f193e5d4a93 g_thread_pool_spawn_thread (libglib-2.0.so.0 + 0x8da93)
#4 0x00007f193e5d38a3 g_thread_proxy (libglib-2.0.so.0 + 0x8c8a3)
#5 0x00007f193e0a91b7 start_thread (libc.so.6 + 0x961b7)
#6 0x00007f193e12b39c __clone3 (libc.so.6 + 0x11839c)
Stack trace of thread 6214:
#0 0x00007f193e11d72d __poll (libc.so.6 + 0x10a72d)
#1 0x00007f193e604724 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xbd724)
#2 0x00007f193e5a9647 g_main_loop_run (libglib-2.0.so.0 + 0x62647)
#3 0x00007f193e7a7e42 gdbus_shared_thread_func.lto_priv.0 (libgio-2.0.so.0 + 0x113e42)
#4 0x00007f193e5d38a3 g_thread_proxy (libglib-2.0.so.0 + 0x8c8a3)
#5 0x00007f193e0a91b7 start_thread (libc.so.6 + 0x961b7)
#6 0x00007f193e12b39c __clone3 (libc.so.6 + 0x11839c)
Stack trace of thread 6216:
#0 0x00007f193e11d72d __poll (libc.so.6 + 0x10a72d)
#1 0x00007f193e604724 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xbd724)
#2 0x00007f193e5a4b03 g_main_context_iteration (libglib-2.0.so.0 + 0x5db03)
#3 0x00007f193dc6d705 dconf_gdbus_worker_thread (libdconfsettings.so + 0x7705)
#4 0x00007f193e5d38a3 g_thread_proxy (libglib-2.0.so.0 + 0x8c8a3)
#5 0x00007f193e0a91b7 start_thread (libc.so.6 + 0x961b7)
#6 0x00007f193e12b39c __clone3 (libc.so.6 + 0x11839c)
Stack trace of thread 6213:
#0 0x00007f193e11d72d __poll (libc.so.6 + 0x10a72d)
#1 0x00007f193e604724 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xbd724)
#2 0x00007f193e5a4b03 g_main_context_iteration (libglib-2.0.so.0 + 0x5db03)
#3 0x00007f193e5a4b59 glib_worker_main (libglib-2.0.so.0 + 0x5db59)
#4 0x00007f193e5d38a3 g_thread_proxy (libglib-2.0.so.0 + 0x8c8a3)
#5 0x00007f193e0a91b7 start_thread (libc.so.6 + 0x961b7)
#6 0x00007f193e12b39c __clone3 (libc.so.6 + 0x11839c)
ELF object binary architecture: AMD x86-64
可以尝试在 Console 下,删除 ~/.cache/ibus/libpinyin/user.conf 文件试试,再重新登录。
可以尝试在 Console 下,删除 ~/.cache/ibus/libpinyin/user.conf 文件试试,再重新登录。
我看到上面的讨论了,也尝试了,确实有用。但是一直这样也不是解决办法。
可以考虑关闭 将每个输入记录为新的词汇
的选项。
可以考虑关闭
将每个输入记录为新的词汇
的选项。
关掉这个选项后是不是就不会记录新词汇了啊?
还是会记录相邻两个词的关联关系的,但是无法导出用户的新词汇...
请问是否启用了云输入功能呢?
可以考虑关闭
将每个输入记录为新的词汇
的选项。
倒是还没这么频繁,或者说其实也并不频繁。ibus相关的组件有更新的时候似乎容易发生,没有更新的话似乎也不会发生。
录屏 2024-02-26 19-46-18.webm
一旦尝试输入该词,ibus-engine-libpinyin 就会崩溃,需要重启 ibus 才能继续输入中文。分别输入这两个字则不受影响。
触发该问题后,在日志中找到以下 core dump:
暂未发现其他词能稳定触发类似问题。发行版是 NixOS unstable,桌面环境是 GNOME。