Я встраиваю guile в небольшую программу, которую пишу, я решаю использовать guile-readline
в качестве расширения.Это расширение прекрасно работает по умолчанию REPL, (use-modules (ice-9 readline)) (activate-readline)
.
Однако, когда я пытаюсь вызвать то же самое в REPL, инстанцированном путем вызова scm_shell();
, программа выдает ошибку по адресу scm_init_readline
.
Я обнаружил, что (ice-9 readline)
, вероятно, вкапюшон, вызывает (load-extension "guile-readline" "scm_init_readline")
.Выполнение этого работает из стандартного реплея REPL guile
, так как выполнение (provided? 'readline)
приведет к #t
после этого вызова.
Тем не менее, из пользовательского REPL, вызываемого через scm_shell(0, NULL);
, это выражение имеет ошибку по умолчанию scm_init_readline
(из /usr/lib/guile/2.2/extensions/guile-readline.so
).Конкретная рассматриваемая инструкция:
repz cmpsb %es:(%rdi),%ds:(%rsi)
После сброса регистров в этот момент становится ясно, что rsi
- это 0
(то есть то, что похоже на сегменты с ошибками адресации памяти).
Я не уверен, что scm_shell()
избегает важных операций начальной загрузки, которые выполняет guile
REPL.
Буду признателен за любую помощь по этому вопросу, я погуглил и нашел людей с похожими проблемами, но без разрешения.