mex debugging, integer division cause crash?
古いコメントを表示
Obviously, I am doing something wrong, and my code is too complex to repeat here. I have tried to distill the parts that seems pertinent. Anyone have any good ideas?
static void myfunc(unsigned char arr[], int n, int m) {
uint64_t nom = 255;
uint64_t den = arr[0];
uint64_t y = nom/den;//cause crashing
//uint64_t y = nom*den;//no problem
//uint64_t y = nom/42;//no problem
}
Windows platform:
Caught MathWorks::System::FatalException
OSX:
"MATLAB has encountered an internal problem and needs to close" (floating point exception detected)
The stack trace suggests my mex file calling libSystem.B.dylib, libmwmcr.dylib, libmwfl.dylib.
I am confused by the fact that I am able to "touch" the variable when doing multiplication, but as soon as I do a division, MATLAB seems to think that there is a floating point exception??
2 件のコメント
Knut
2012 年 9 月 13 日
Jan
2012 年 9 月 13 日
A floating point exception for an integer division sound strange. This is another good excample for the advantages of Matlab compared to C/C++: Matlab behaves equally on different platforms, while the basic calculations depend critically on the compiler.
回答 (1 件)
Jan
2012 年 9 月 12 日
0 投票
This seem magic. And whenever magic things happen in the computer, they are deterministic effects of things, which happen somewhere else.
Please try to run your code from a clean and bug free main function. If and only if this is still crashing, I'm convinved that the bug is inside myfunc().
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!