Package: fakeroot
Version: 1.22-2
Severity: normal
Tags: patch

Dear Maintainer,

A number of Haskell packages[1][2][3] have been failing to build
reproducible lately with the following error:

  debian/hlibrary.setup copy --builddir=dist-ghc --destdir=debian/tmp-inst-ghc
  libfakeroot, when sending message: Interrupted system call

I have not been able to reproduce this, but looking at the code, it
seems that send_fakem() fails to send a message, and then fakeroot
hangs indefinetly waiting for an answer.

Attached, is a patch which retries the msgsnd() system call in case it
was interrupted by a signal.

Thanks,

[1] 
https://tests.reproducible-builds.org/debian/logs/buster/i386/haskell-abstract-par_0.3.3-7.build2.log.gz
[2] 
https://tests.reproducible-builds.org/debian/rbuild/unstable/amd64/cpphs_1.20.8-1.rbuild.log
[3] 
https://tests.reproducible-builds.org/debian/logs/buster/i386/haskell-abstract-par_0.3.3-7.build2.log.gz

-- 
Ilias
diff --git a/communicate.c b/communicate.c
index a9e3593..fd23027 100644
--- a/communicate.c
+++ b/communicate.c
@@ -505,8 +505,10 @@ void send_fakem(const struct fake_msg *buf)
 
   if(init_get_msg()!=-1){
     ((struct fake_msg *)buf)->mtype=1;
-    r=msgsnd(msg_snd, (struct fake_msg *)buf,
-	     sizeof(*buf)-sizeof(buf->mtype), 0);
+    do
+      r=msgsnd(msg_snd, (struct fake_msg *)buf,
+	       sizeof(*buf)-sizeof(buf->mtype), 0);
+    while((r==-1) && (errno==EINTR));
     if(r==-1)
       perror("libfakeroot, when sending message");
   }

Reply via email to