commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd, commited] hurd: Make _hurd_intr_rpc_mach_msg avoid returning MACH


From: Samuel Thibault
Subject: [hurd, commited] hurd: Make _hurd_intr_rpc_mach_msg avoid returning MACH_SEND_INTERRUPTED
Date: Tue, 14 Nov 2023 02:06:23 +0100

When the given options do not include MACH_SEND_INTERRUPT,
_hurd_intr_rpc_mach_msg (aka mach_msg) is not supposed to return
MACH_SEND_INTERRUPTED.  In such a case we thus have to retry sending the
message.

This was observed to fix various occurrences of spurious
"(ipc/send) interrupted" errors when running haskell programs.
---
 hurd/intr-msg.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
index bc1f43d383..98f588f206 100644
--- a/hurd/intr-msg.c
+++ b/hurd/intr-msg.c
@@ -143,6 +143,12 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
             XXX */
          goto retry_receive;
        }
+      if (!(option & MACH_SEND_INTERRUPT))
+       {
+         option = user_option;
+         timeout = user_timeout;
+         goto message;
+       }
       /* FALLTHROUGH */
 
       /* These are the other codes that mean a pseudo-receive modified
-- 
2.42.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]