C++ Mex File Crashing Intermittently

I am compiling and using a C++ mex function in Matlab 2011b.
The mex file is acting very strangely. About half of the time it crashes while the other half it does not crash and runs all of the way through.
Does anyone have any ideas what would cause a Mex file to work intermittently that is called from the same place and the same way?
Thanks,
Kevin

 채택된 답변

Geoff
Geoff 2012년 3월 16일

1 개 추천

Sounds to me like you're doing something dodgey inside the C++ code. Specifically, a buffer overrun or invalid pointer access. These have a habit of causing intermittent problems. If your code is not too lengthy or commercially sensitive, feel free to post it.

댓글 수: 4

Kevin
Kevin 2012년 3월 16일
Can you explain a bit how a coding problem would be intermittent? It seems odd since most codes either work or they don't.
Geoff
Geoff 2012년 3월 16일
Yes, if you are accessing memory that does not belong to your program, you never know what it might contain.
It might be unused and not cause problems (unless you expect it to contain a valid pointer, perhaps).
But the next time you call, you might just happen to stray into memory that is owned by another process. That is not allowed.
I am just conjecturing here, assuming the most probable cause.
Uninitialised values are another biggie here. Your code might run fine because usually an important (but uninitialised) variable happens to be zero. But next time you run, your program is loaded into another part of memory, and your variable happens to assume a value like 1187126605. If this was an index into an array or string, you'd almost certainly crash.
Kevin
Kevin 2012년 3월 16일
This is exactly what happened. Thanks Geoff.
Geoff
Geoff 2012년 3월 19일
Hehe, I thought so =) No worries, and glad you got it sorted.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jan
Jan 2012년 3월 16일

0 개 추천

It is impossible to guess the reason without seeing the code.
You can use a debugger to find the problem. Even some print commands allow to find the line, which causes the crash.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2012년 3월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by