簡體   English   中英

TBB 分配發出終止信號

[英]TBB allocation issuing a kill signal

我的 C++ 程序(在 Mac OS 上運行)被殺死了。 使用調試器運行后,我獲得以下信息:

Process 90937 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGKILL
frame #0: 0x000000010001fc50 captureISO`tbb::interface9::internal::start_for<WDutils::Parallel::details::blocked_range_terminating<unsigned long>, (anonymous namespace)::simulations::sampleSome(bool)::$_2, tbb::auto_partitioner const>::run_body(WDutils::Parallel::details::blocked_range_terminating<unsigned long>&) [inlined] tbb::concurrent_vector<(anonymous namespace)::simulations::initialCondition, tbb::cache_aligned_allocator<(anonymous namespace)::simulations::initialCondition> >::push_back(this=0x00007fff5fbfebd0)::simulations::initialCondition const&) at concurrent_vector.h:846 [opt]
   843         iterator push_back( const_reference item )
   844         {
   845             push_back_helper prolog(*this);
-> 846             new(prolog.internal_push_back_result()) T(item);
   847             return prolog.return_iterator_and_dismiss();
   848         }
   849

因此, tbb::concurrent_vector<>信號似乎是由tbb::concurrent_vector<>內的分配發出的。 但是, tbb::concurrent_vector::push_back()operator new的文檔都沒有建議這種操作。

這是TBB未記錄的行為嗎(寧願終止正在運行的進程,因為 TBB 無法適當處理異常)? 我如何才能找出以及如何避免這種情況?

您可能需要優化算法以使用更少的內存。

我不知道 macOS 是如何處理內存分配的,但在 Linux 上,如果您使用太多內存,“ OOM Killer ”會發送 SIGKILL 信號。

暫無
暫無

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

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