parfor results core dump

3 次查看(过去 30 天)
Zoltán Csáti
Zoltán Csáti 2017-11-7
MATLAB R2015b crashes on 64 bit Linux. I managed to track the cause of failure to this chunk of code
values = cell(1, nElement);
parfor i = 1:nElement
values{i} = element(i).stiffnessMatrix;
end
where element is an object array and I call the stiffnessMatrix method on all of the objects. In practice nElement is very big. The segfault comes from libtbbmalloc.so.2 (now I know that parfor wraps TBB).
Reading on forums, I preloaded the problematic libraries:
export LD_PRELOAD=/usr/local/MATLAB/R2015b/bin/glnxa64/libtbb.so.2:/usr/local/MATLAB/R2015b/bin/glnxa64/libtbbmalloc.so.2
In vain. The same error persists. It seem that TBB cannot allocate memory (for smaller problem, parfor works). Why does it work for the simple for loop and not for the parfor loop? Just before the program crashed, I saw that I have 11 GB of free memory (more than 4 times more than used by the whole operating system).
I tested it on Windows, and it still fails with the same error. Then I tried with a simple for loop, not a parfor loop on both Linux and Windows. On Linux, the error persists but on Windows the for loop version works.
Thanks in advance.
  10 个评论
OCDER
OCDER 2017-11-17
This does sound like one of the worst case scenario for debugging codes. You might have to contact the authors of the 3rd party MEX codes to find the memory allocation bug. Without looking at all the codes, it'll be hard to pinpoint the issue. This might help with debugging strategies:
Zoltán Csáti
Zoltán Csáti 2017-11-18
Thank you. I may use valgrind/callgrid to profile the mex file. If you write an answer I will accept it. Although my problem persists (it's too vague to be solved immediately), you gave me good advices.

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by