记录写Rust测试代码中猜的一个坑(invalid memory reference)

刚刚在重写酷q sdk,在编写测试代码发现,编译不过,但信息只有一句

signal: 11, SIGSEGV: invalid memory reference

令人百思不得其解,谷歌了一番,发现要么是编译器bug,要么就是说你写的代码或者用的库中含有不安全代码。

我于是对项目里的unsafe代码进行排查,找到了问题所在:

extern "Rust" {
        fn main();
}

再经过一番测试,发现代码里不能含有跟ffi有关(应该是这么说的吧?)的叫main的函数,例如使用了

extern,#[no_mangle]...
等等

但是build却可以过而且没有warning,所以浪费了我很多时间排查,哭了。

耗时2个小时左右(去世

tag(s): rust test bug 
show comments · back · home