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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions