Netscape: 'Interrupted system call'

assar@stacken.kth.se assar at stacken.kth.se
Tue Mar 2 00:22:22 CET 1999


Robert Watson <robert at cyrus.watson.org> writes:
> >From this behavior, I'm guessing that their threading package uses SIGALRM
> (14) for preemption or timeouts of some kind, and that they do not expect
> to receive it during their open().  However, I believe this is a Netscape
> issue technically, as FreeBSD open(2) does state:
>  
>      [EINTR] The open() operation was interrupted by a signal. 

Yeah, I agree and it's me worthwhile being able to timeout an open()
so I don't know what we could do to workaround this.

You can try the following patch which should make it not happen (but
then again, it will not get interrupted by SIGALRM).

/assar


Index: xfs/bsd/xfs_dev-common.c
===================================================================
RCS file: /usr/local/cvsroot/arla/xfs/bsd/xfs_dev-common.c,v
retrieving revision 1.21
diff -u -w -u -w -r1.21 xfs_dev-common.c
--- xfs_dev-common.c	1999/02/27 19:11:20	1.21
+++ xfs_dev-common.c	1999/03/01 23:16:35
@@ -349,12 +349,15 @@
     oldsigmask = xfs_curproc()->p_sigmask;
 #ifdef __sigaddset
     __sigaddset(&xfs_curproc()->p_sigmask, SIGIO);
+    __sigaddset(&xfs_curproc()->p_sigmask, SIGALRM);
 #else
     xfs_curproc()->p_sigmask |= sigmask(SIGIO);
+    xfs_curproc()->p_sigmask |= sigmask(SIGALRM);
 #endif /* __sigaddset */
 #elif defined(HAVE_STRUCT_PROC_P_SIGWAITMASK)
     oldsigmask = xfs_curproc()->p_sigwaitmask;
     sigaddset(&xfs_curproc()->p_sigwaitmask, SIGIO);
+    sigaddset(&xfs_curproc()->p_sigwaitmask, SIGALRM);
 #endif
     /*
      * We have to check if we have a receiver here too because the





More information about the Arla-drinkers mailing list