This backtrace seems to say that the call to sigprocmask
allowed a pending SIGPIPE to occur, and it was not handled.
It is supposed to be handled.  So the question is, why
wasn't it.

This code in process.c looks suspect to me.
If it calls report_file_error, the old sigpipe handler
would not be restored.

          while (this > 0)
            {
              int outfd = XINT (p->outfd);
              old_sigpipe = (SIGTYPE (*) ()) signal (SIGPIPE, 
send_process_trap);
#ifdef DATAGRAM_SOCKETS
              if (DATAGRAM_CHAN_P (outfd))
                {
                  rv = sendto (outfd, (char *) buf, this,
                               0, datagram_address[outfd].sa,
                               datagram_address[outfd].len);
                  if (rv < 0 && errno == EMSGSIZE)
                    report_file_error ("sending datagram", Fcons (proc, Qnil));
                }
              else
#endif

That could only have been the cause of the problem if you used
a datagram socket.  That's unusual, isn't it?  So I don't know
if this could be related to the problem.  But I think the patch
below would fix this bug.

*** process.c   25 Mar 2005 20:46:49 -0500      1.450
--- process.c   07 May 2005 12:56:33 -0400      
***************
*** 5299,5305 ****
                               0, datagram_address[outfd].sa,
                               datagram_address[outfd].len);
                  if (rv < 0 && errno == EMSGSIZE)
!                   report_file_error ("sending datagram", Fcons (proc, Qnil));
                }
              else
  #endif
--- 5299,5309 ----
                               0, datagram_address[outfd].sa,
                               datagram_address[outfd].len);
                  if (rv < 0 && errno == EMSGSIZE)
!                   {
!                     signal (SIGPIPE, old_sigpipe);
!                     report_file_error ("sending datagram",
!                                        Fcons (proc, Qnil));
!                   }
                }
              else
  #endif


_______________________________________________
Emacs-pretest-bug mailing list
Emacs-pretest-bug@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Reply via email to