Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 使用get_wch()时出现ncurses segfults_Rust_Readline_Ncurses - Fatal编程技术网

Rust 使用get_wch()时出现ncurses segfults

Rust 使用get_wch()时出现ncurses segfults,rust,readline,ncurses,Rust,Readline,Ncurses,我正在编写一个使用板条箱的shell history应用程序,我遇到了一个从历史记录中删除条目的问题——简单地说,没有本机readline绑定,它是可以撤消的。我的程序从一个管道(比如:histry | hstr rs)读取数据,这使得手工操作历史文件变得不可能。因此,我引入了另一个名为[unmaintained]的板条箱,对它做了一个小改动(将一条语句包装在一个不安全的块中),因为它不会编译。这一改变使应用程序得以编译,然而,这也导致我的程序在启动时出错。我接触了gdb,查看发生了什么,这就是

我正在编写一个使用板条箱的shell history应用程序,我遇到了一个从历史记录中删除条目的问题——简单地说,没有本机
readline
绑定,它是可以撤消的。我的程序从一个管道(比如:
histry | hstr rs
)读取数据,这使得手工操作历史文件变得不可能。因此,我引入了另一个名为[unmaintained]的板条箱,对它做了一个小改动(将一条语句包装在一个不安全的块中),因为它不会编译。这一改变使应用程序得以编译,然而,这也导致我的程序在启动时出错。我接触了
gdb
,查看发生了什么,这就是我能够找到的:

Program received signal SIGSEGV, Segmentation fault.
                                                    0x00007ffff7f47821 in doupdate_sp () from /lib/x86_64-linux-gnu/libncursesw.so.6
(gdb) bt
#0  0x00007ffff7f47821 in doupdate_sp () from /lib/x86_64-linux-gnu/libncursesw.so.6
#1  0x00007ffff7f37db8 in wrefresh () from /lib/x86_64-linux-gnu/libncursesw.so.6
#2  0x00007ffff7f307da in ?? () from /lib/x86_64-linux-gnu/libncursesw.so.6
#3  0x00007ffff7f49c64 in wget_wch () from /lib/x86_64-linux-gnu/libncursesw.so.6
#4  0x000055555561a604 in ncurses::get_wch ()
#5  0x00005555555935f6 in hstr_rs::main ()
#6  0x0000555555586c73 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#7  0x0000555555586c8c in std::rt::lang_start::{{closure}} ()
#8  0x0000555555631ae7 in core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once () at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/core/src/ops/function.rs:259
#9  std::panicking::try::do_call () at library/std/src/panicking.rs:381
#10 std::panicking::try () at library/std/src/panicking.rs:345
#11 std::panic::catch_unwind () at library/std/src/panic.rs:382
#12 std::rt::lang_start_internal () at library/std/src/rt.rs:51
#13 0x0000555555595cf2 in main ()
(gdb) 
程序接收信号SIGSEGV,分段故障。
0x00007FF7F47821,在/lib/x86\u 64-linux-gnu/libncursesw.so.6的doupdate_sp()中
(gdb)英国电信
#0 0x00007FF7F47821,在/lib/x86\u 64-linux-gnu/libncursesw.so.6的doupdate_sp()中
#来自/lib/x86_64-linux-gnu/libncursesw.so.6的wrefresh()中的1 0x00007ffff7f37db8
#2 0x00007ffff7f307da英寸??()来自/lib/x86_64-linux-gnu/libncursesw.so.6
#来自/lib/x86\u 64-linux-gnu/libncursesw.so.6的wget_wch()中的3 0x00007ff7f49c64
#ncurses::get_wch()中的4 0x000055561A604
#hstr_rs::main()中的5 0x0000555555935F6
#std::sys_common::backtrace::uu rust_begin_short_backtrace()中的6 0x000055555586C73
#std::rt::lang_start:{{closure}}()

#core::ops::function::impls::中的8 0x000055555631AE7需要一个参数。这是怎么一回事?(它指向何处?从何处获得该指针?)根据绑定,它没有标记调用
不安全(并提供参数)。使用。没有提供,因此没有人可以提供合适的答案。需要一个论点。这是怎么一回事?(它指向何处?从何处获得该指针?)根据绑定,它没有标记调用
不安全(并提供参数)。使用。没有提供,因此没有人可以提供合适的答案。