簡體   English   中英

無法使用升壓測試分配 memory

[英]Cannot allocate memory using boost test

我有一個這樣的測試用例:

BOOST_AUTO_TEST_CASE(Test) {
    std::thread([](){
        BOOST_CHECK(system("script.sh") >= 0);
    }).detach();
    //other checks here
}

當我只運行這個測試套件時,一切都很好。 當我運行 80 次測試時,斷言失敗, system返回的值是“無法分配內存”。 有什么解決方法嗎?

如果您單獨運行測試並且它可以工作,而在非隔離(與其他測試)中運行此測試並且它失敗了,那么您的測試程序的 state 發生了“某些事情”並且需要修復。

例如,

  • memory 泄漏在影響這個的其他測試中,
  • 您在沒有等待它們完成的情況下啟動了太多線程的事實(就像我在您的代碼段中看到的那樣),
  • 等等

這不完全是 Boost.Test 問題,Boost.Test 只是向您顯示程序中某處存在(相當大的)問題。 確定的方法是單獨運行,可能多次運行,例如,您可以真正觀察到對 memory 的需求增加甚至崩潰。 Boost.Test 努力減輕這些崩潰(攔截操作系統的信號),並根據操作系統顯示 memory 泄漏,但這並不神奇。

隔離問題的其他方法是使用其他程序,例如valgindasan / tsan

最后一種可能性是"script.sh"正在耗盡您操作系統的所有 memory。

暫無
暫無

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

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