Skip to content

preCICE suspectedly fails to recover from EINTR #1443

@gertjanvanzwieten

Description

@gertjanvanzwieten

Describe your setup

Operating system (e.g. Linux distribution and version): Debian bullseye
preCICE Version: 2.5.0

Add the versions/commit hashes of further adapter and/or bindings.

Describe the problem
When a preCICE application receives a signal while it is waiting on a socket, both sides of the application die with the message Receiving data from another participant (using sockets) failed with a system error: read: Interrupted system call. This often means that the other participant exited with an error (look there). This is presumably caused by preCICE handling EINTR as an unrecoverable error.

Step To Reproduce

  1. Install the latest development version of Nutils (which uses bottombar 2)
  2. Run the partitioned-heat-condition tutorial

Expected behaviour
The tutorial code is expected to run without problems.

Additional context
The reason that bottombar 2 is causing the code to fail is that it uses setitimer to update itself, which triggers SIGALRM at a set frequency. The previous version used signals only for window resizes via SIGWINCH, which is not triggered as often and therefore caused fewer issues (though we have long received reports of tmux reattach mysteriously killing applications). We are in the process of making point releases for bottombar that set the siginterrupt flag to false, which fixes the issue. Nonetheless, we thought it good to point out that this issue exists and that it could potentially be fixed on your side as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugpreCICE does not behave the way we want and we should look into it (and fix it if possible)low priorityNot planned and waiting for user-requests.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions