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 Kommentare

Problem solved.
My MATLAB code relied on this behaviour:
>>uint8(1)/uint8(0)
>>ans =
>>
>>255
When the code was directly ported to C, an integer division of zero cause an exception to be raised. Different C compilers and MATLAB versions (?) seems to handle this differently, and (dare I say) somewhat confusingly.
Jan
Jan am 13 Sep. 2012
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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Jan
Jan am 12 Sep. 2012

0 Stimmen

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().

Kategorien

Mehr zu Programming finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 12 Sep. 2012

Community Treasure Hunt

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

Start Hunting!

Translated by