Skip to content

Fortran wrapper API declarations don't match C++ function signatures in barrier and forget calls #115

@kellih

Description

@kellih

The C++ wrapper functions (mui_barrier_, mui_forget_upper_) expect pointers to pass-by-reference mui_barrier_3d_f cpp file L11241

The Fortran interface declarations use value attribute, which passes by value mui_barrier_3d_f f90 file L14439

This causes segfaults when these functions are called. This should reproduce the error with current wrappers:

call mui_barrier_3d_f(uniface_3d, 1.0_c_double)
call mui_forget_upper_3d_f(uniface_3d, 2.0_c_double, 1_c_int)

github codepilot (Claude) identified this discrepancy with all flavors of the barrier and forget functions. It seems correct for other functions but I did not do a thorough review.

Removing the value declaration on non-interface related variables for the barrier and forget functions alleviated the segfaults I was experiencing.

I am currently using 2024 source (hash 7b0e83b). However, I don't believe the wrappers have changed in 3 years so I believe this bug persists for the current version.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions