-
-
Notifications
You must be signed in to change notification settings - Fork 278
preCICE suspectedly fails to recover from EINTR #1443
Description
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
- Install the latest development version of Nutils (which uses bottombar 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.