簡體   English   中英

編寫預期存在段錯誤的Rust測試

[英]Writing a Rust test which expects a segfault

我想在Rust中編寫一個測試,其中#[test]函數的預期行為是segfault。 這可能嗎?

首先,我想指出的是,我所知道的唯一的確定段錯誤的方法是將SIGSEGV信號發送到您自己的進程,可能使用“ raise”功能或等效的rust。

取消引用指向未分配內存的指針或空指針實際上並不能保證segfault,盡管在大多數現代平台上都可以。

檢查段錯誤的最簡單方法是派生程序(可能使用nix crate )。 完成后,在父進程等待時執行應該使您對子進程進行段錯誤的功能。

等待足夠的時間后(超過幾百毫秒是多余的),請檢查子線程是否已死。 為此,只需殺死它,如果它已經死了,就應該引發一個錯誤。

我認為,唯一正確的測試方法是繁重的。 在測試中,我將運行一個靜態分析器,它可以檢測到這種可能的未定義行為,並驗證此問題仍然存在。

不過,我不知道Rust板條箱會執行靜態分析,因此我想您將依賴於使用C ABI的extern工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM