GNU Guile segfaults при загрузке guile-readline - PullRequest
0 голосов
/ 16 ноября 2018

Я встраиваю 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.

Буду признателен за любую помощь по этому вопросу, я погуглил и нашел людей с похожими проблемами, но без разрешения.

...