I call a mex function and do some operations with its results and then matlab crashes
조회 수: 1 (최근 30일)
이전 댓글 표시
I create a mex function to use a subroutine I code in C++. I compiled without errors. Then run an example have a correct answer, then modify the answer, create a figure with the answer seconds after it Matlab crashes. Here is the code:
row=145;col=145;
nn=row*col
i = 1; b1=b((i-1)*nn+1:i*nn);
[sol,iter,relres1]= BiCGStabNineDiag(Diag,DiagLU,b1,row,tol,maxit); %mexFunction
sol=reshape(sol,row,col);
figure,imshow(sol,[])
There is a message from windows saying that there is an error and it has to close matlab. After it I found a log file. describing problems with Java y netdll.dll
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000077aeec75, pid=3636, tid=2068
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (11.2-b01 mixed mode windows-amd64)
# Problematic frame:
# C [ntdll.dll+0x4ec75]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
After that there is a lenghty description of the thread and registers, etc. I am checking my mexFunction but the answers are correct and since it changes the vector sol to a matrix and then shows its image I thought it does not have to do with my mex function. But before this mablab never crashed then I suspect it has something to do with destroying the output. I used this at the end of my mexFunction
mxDestroyArray(plhs[0]);
mxDestroyArray(plhs[1]);
mxDestroyArray(plhs[2]);
but I got the same results. I would appreciate any help.
댓글 수: 0
답변 (1개)
James Tursa
2012년 1월 13일
You should never use mxDestroyArray on any of the plhs[*] values ... that will guarantee a MATLAB crash since MATLAB will attempt to use invalid memory downstream. I would hazard a guess that you may have other problems in your mex code as well, so I would suggest posting it.
참고 항목
카테고리
Help Center 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!