rime / librime

Rime Input Method Engine, the core library
https://rime.im
BSD 3-Clause "New" or "Revised" License
3.37k stars 551 forks source link

在user_data下启动rime,导致`rime.lua`自动删除 #858

Closed bczhc closed 6 months ago

bczhc commented 6 months ago

Describe the bug

在Rime用户目录下启动librime,导致rime.lua文件自动被删除。

To Reproduce Steps to reproduce the bug:

使用的演示代码:

#include <stdio.h>
#include <rime_api.h>

int main() {
    RIME_STRUCT(RimeTraits, traits);
    traits.shared_data_dir = "/usr/share/rime-data";
    traits.user_data_dir = ".";

    RimeApi *api = rime_get_api();
    RimeSetup(&traits);
    RimeInitialize(&traits);

    if (api->start_maintenance(1)) {
        api->join_maintenance_thread();
    }

    RimeSessionId session = api->create_session();
    if (!session) {
        fprintf(stderr, "Error creating rime session.\n");
        return 1;
    }

    api->select_schema(session, "092wubi");
    api->simulate_key_sequence(session, "v;");

    RIME_STRUCT(RimeCommit, commit);
    api->get_commit(session, &commit);
    printf("Commit: %s\n", commit.text);

    api->finalize();

    return 0;
}

使用的Rime配置:https://github.com/bczhc/rime-config/tree/cebe8b11de7484bed3ec2a846af1834c0115ce0f (直接下载或使用depth=1克隆)

  1. 编译demo C程序。
  2. 在终端cd到Rime配置下,执行C程序。
  3. 等待程序以0状态退出后,再次执行那个C程序。

可发现,

在第二步中,程序末尾的几行如下:

I20240324 20:40:04.045492 140151074991680 types.cc:1424] [bczhc log] Commit(text=好)
I20240324 20:40:04.045498 140151074991680 types.cc:1424] [bczhc debug] Undo stack: [1]
Commit: 好
I20240324 20:40:04.045583 140151074991680 engine.cc:93] engine disposed.

第三步中,程序末尾的几行如下:

E20240324 20:40:32.522327 140661264178752 lua_gears.cc:229] LuaProcessor::ProcessKeyEvent of short_punct_pre_speller_processor error(2): attempt to call a nil value
E20240324 20:40:32.522329 140661264178752 lua_gears.cc:229] LuaProcessor::ProcessKeyEvent of alphabet_mode_post_speller_processor error(2): attempt to call a nil value
E20240324 20:40:32.522333 140661264178752 lua_gears.cc:229] LuaProcessor::ProcessKeyEvent of cancel_input_processor error(2): attempt to call a nil value
Commit: v
I20240324 20:40:32.522383 140661264178752 engine.cc:93] engine disposed.

注意到Commit:这行,第二次执行时就不出字了,而且上面有lua的错误。事实上在第二步执行完程序后,就可发现rime.lua文件消失了。原因不明。

Fcitx5同样能复现:

Fcitx5的Rime用户目录在/home/bczhc/.local/share/fcitx5/rime下,那么我在这个目录下执行fcitx5,第一遍运行是好的,正常输入,但Ctrl-C后再执行一遍fcitx5,就输入不了了。

Fcitx5的演示视频:

lotem commented 6 months ago

I believe it's fixed in https://github.com/rime/librime/commit/a4ed799a8c4828ac98e1a79642ba8340467d6dd3

bczhc commented 6 months ago

I can confirm. Thanks.