Building for Android (OPT_ARM) was experiencing crashes just requesting the format of a file. Turns out the problem is that the decwin table is created too small.
The code for OPT_ARM to compute size looks like this:
int decwin\_size = \(512+32\)\*sizeof\(real\);
#if defined(OPT_ALTIVEC) || defined(OPT_ARM)
if(decwin_size < (512+32)*4) decwin_size = (512+32)*4;
decwin_size += 512*4;
The problem is the number 4 in there. Real is 8 bytes on Android, not 4. So they table comes out as 6400 bytes when it really needs to be 8448 bytes and when it gets initialized it overflows the allocated memory creating random crashes.