local function translator(input, seg, env)
local context = env.engine.context
if input:match('^/ps[0-9]$') then
-- context:clear()
log.info(input)
end
end
return translator
Core was generated by `fcitx5'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f513441c5e9 in rime::TagMatching::TagsMatch(rime::Segment*) () from /usr/lib/librime.so.1
[Current thread is 1 (Thread 0x7f513785bcc0 (LWP 1540222))]
(gdb) bt
#0 0x00007f513441c5e9 in rime::TagMatching::TagsMatch(rime::Segment*) () at /usr/lib/librime.so.1
#1 0x00007f51343289c1 in rime::ConcreteEngine::TranslateSegments(rime::Segmentation*) () at /usr/lib/librime.so.1
#2 0x00007f5134328bdb in rime::ConcreteEngine::Compose(rime::Context*) () at /usr/lib/librime.so.1
#3 0x00007f513431d482 in boost::signals2::detail::signal_impl<void (rime::Context*), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (rime::Context*)>, boost::function<void (boost::signals2::connection const&, rime::Context*)>, boost::signals2::mutex>::operator()(rime::Context*) () at /usr/lib/librime.so.1
#4 0x00007f5134315e5b in rime::Context::PushInput(char) () at /usr/lib/librime.so.1
#5 0x00007f513443dcf4 in rime::Recognizer::ProcessKeyEvent(rime::KeyEvent const&) () at /usr/lib/librime.so.1
#6 0x00007f513432b70e in rime::ConcreteEngine::ProcessKey(rime::KeyEvent const&) () at /usr/lib/librime.so.1
#7 0x00007f51343051c2 in RimeProcessKey () at /usr/lib/librime.so.1
#8 0x00007f51347dc0b3 in () at /usr/lib/fcitx5/rime.so
#9 0x00007f5137a98556 in fcitx::Instance::postEvent(fcitx::Event&) const () at /usr/lib/libFcitx5Core.so.7
#10 0x00007f5137abbd16 in fcitx::InputContext::keyEvent(fcitx::KeyEvent&) () at /usr/lib/libFcitx5Core.so.7
#11 0x00007f51369910af in () at /usr/lib/fcitx5/libdbusfrontend.so
#12 0x00007f5136991d24 in () at /usr/lib/fcitx5/libdbusfrontend.so
#13 0x00007f51379d2449 in () at /usr/lib/libFcitx5Utils.so.2
#14 0x00007f51379d817a in () at /usr/lib/libFcitx5Utils.so.2
#15 0x00007f513736f9bd in () at /usr/lib/libsystemd.so.0
#16 0x00007f5137385c52 in () at /usr/lib/libsystemd.so.0
#17 0x00007f5137387a78 in () at /usr/lib/libsystemd.so.0
#18 0x00007f51373bb884 in () at /usr/lib/libsystemd.so.0
#19 0x00007f51373bba66 in sd_event_dispatch () at /usr/lib/libsystemd.so.0
#20 0x00007f51373bcf99 in sd_event_run () at /usr/lib/libsystemd.so.0
#21 0x00007f51373bd170 in sd_event_loop () at /usr/lib/libsystemd.so.0
#22 0x00007f51379d6d46 in fcitx::EventLoop::exec() () at /usr/lib/libFcitx5Utils.so.2
#23 0x00007f5137a9b277 in fcitx::Instance::exec() () at /usr/lib/libFcitx5Core.so.7
#24 0x000055b06b3d3050 in ()
#25 0x00007f513743c290 in () at /usr/lib/libc.so.6
#26 0x00007f513743c34a in __libc_start_main () at /usr/lib/libc.so.6
Lua代码:
当输入 /ps+一位数字时会进到
if
块中,上面代码是没问题的,但把context:clear()
取消注释后,再尝试就会崩溃。 我不知道这个具体和哪边有关,如果是librime的问题的话,再向上游提吧。但这个只在lua_translator
中出现,lua_processor
中的context就不会。coredump
librime与librime-lua都是手动编译的最新 librime: 1.8.5 librime-lua: master分支