Hi there, I’m a newbie to this list and tried my dearest to search the archives (with the scrollbar) to find an answer.
I’m having a problem running a well known ham radio application called WSJT-X for the Apple M1 running Monterey with gfortran 11.2.0. Tthe code compiles fine. The issue is at runtime with one of the submodules which is written in fortran (specifically ft8 using jt9 executable). I’ve tried to distill the problem down to a very small sample by removing all the code and just getting it down to two files, but alas, it doesn’t reproduce the bug. The code works fine in this case. The bug that I’m running into is that the address of a subroutine that is used as a callback is not correct. The exact same code works on Intel but not on Apple M1 using the same compiler version. The subroutine is part of a derived class. The only thing I’ve noticed from looking at the parse tree is that the vtable _size parameter is 8 bytes vs 4. I doubt this matters but figured I’d mention it. What I’ve seen from the disassembly is that the M1 version of gfortran correctly stores the address of the callback into a data structure. The bug is that it uses the address of a data structure (that contains the function pointer address) instead of the actual function pointer address. This causes a bus error. What I’ve also noticed is that the data structure address is wrong by 8 bytes (aside from the fact that the address isn’t being dereferenced- but maybe that’s hidden data)… Is it possible that it’s not deferencing a pointer? I’ve tried replacing the address of the data structure with the function address and the code successfully makes it into the callback but then crashes later inside fortran formatting routines. Is it likely that the stack is corrupt? I’m looking for any help solving this issue. If anyone can give me some advice or clues on how to submit a bug for this or further debug it, I will do what it takes to provide the needed details. Thanks for your help! alex