-
-
Notifications
You must be signed in to change notification settings - Fork 350
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
f90_demo crashes on macOS (Apple Silicon) #1379
Comments
On Apple Silicon, the combination of gfortran with Apple clang compilers causes hard crashes for F90 examples, see Cantera#1379. Changing the default avoids this issue; users can override by passing 'f90_interface=y' to SCons.
On Apple Silicon, the combination of gfortran with Apple clang compilers causes hard crashes for F90 examples, see Cantera#1379. Changing the default avoids this issue; users can override by passing 'f90_interface=y' to SCons. Short-term, the change also bypasses a recently introduced linking issue on macOS, see Cantera#1387.
On Apple Silicon, the combination of gfortran with Apple clang compilers causes hard crashes for F90 examples, see #1379. Changing the default avoids this issue; users can override by passing 'f90_interface=y' to SCons. Short-term, the change also bypasses a recently introduced linking issue on macOS, see #1387.
On Apple Silicon, the combination of gfortran with Apple clang compilers causes hard crashes for F90 examples, see Cantera#1379. Changing the default avoids this issue; users can override by passing 'f90_interface=y' to SCons. Short-term, the change also bypasses a recently introduced linking issue on macOS, see Cantera#1387.
I dug into this a bit, adding the following debugging outputs to write(*,*) "ctthermo_equilibrate:"
write(*,*) " XY = '", XY, "' len = ", len(XY)
write(*,*) " trim(XY) = '", trim(XY), "', len = ", len(trim(XY))
write(*,*) " solver_ = '", solver_, "' len = ", len(solver_)
write(*,*) " trim(solver_) = '", trim(solver_), "', len = ", len(trim(solver_)) and writelog("th_equil_:\n");
writelog(" XY = '{}' len = {}\n", f2string(XY,lenxy), lenxy);
writelog(" solver = '{}' len = {}\n", f2string(solver,lensolver), lensolver);
writelogendl(); Running the
followed by the same "libc++abi: terminating with uncaught exception of type Cantera::CanteraError" error reported above. But on Linux (Ubuntu 20.04), the output is:
The problem seems to be that the hidden length argument corresponding to the second string argument isn't being correctly set. If I change the declaration of I also don't know how to identify what integer type should be used for this argument for a specific compiler/platform (and this is the first time that I've seen our default assumption of |
Running
or just
is the 'simplest' way to stumble across this issue. |
Problem description
The macOS F90 sample crashes on macOS (arm)
Steps to reproduce
Build cantera from source:
Edit: or simply run
scons test-f90-demo
Behavior
Running the demo crashes:
System information
conda
environment, includinggfortran
Further:
Additional context
The same error occurs for SCons and
make
routes (after applying fix in #1378). The example works on Linux and Intel macOS.On a separate note, F90 CMake throws an error when linking on Intel macOS (which is not an issue on Apple Silicon).
The text was updated successfully, but these errors were encountered: