I call a mex function and do some operations with its results and then matlab crashes
1 view (last 30 days)
Show older comments
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 Comments
Answers (1)
James Tursa
on 13 Jan 2012
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.
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!