Subject: bug#11884: closed (Re: 24.1.50; a regression with pselect(2) on FreeBSD after r108687)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 17 Jul 2012 02:28:02 +0000

Your bug report

#11884: 24.1.50; a regression with pselect(2) on FreeBSD after r108687

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
11884: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11884
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: 24.1.50; a regression with pselect(2) on FreeBSD after r108687
From: Paul Eggert <[email-masked]>
To: Jan Beich <[email-masked]>
Cc: "Herbert J. Skuhra" <[email-masked]>, [email-masked]
Date: Mon, 16 Jul 2012 19:20:42 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks for that bug report.  Herbert J. Skuhra also
privately reported the same bug, and was gracious enough to
give me a login on a FreeBSD host where I could reproduce
your test case and debug the problem.

I found two related bugs.  First, Emacs's 'configure' script
incorrectly assumed that pthread_sigmask wasn't working on
FreeBSD; this is fixed in Emacs trunk bzr 109107.

Second, the gnulib fallback code for pthread_sigmask
incorrectly assumed that FreeBSD's pthread_sigmask (1729,
NULL, NULL) returns a nonzero error number, which it does
not -- it returns 0.  This is arguably a POSIX-compliance
bug in FreeBSD, but a bug like this is something that should
not make Emacs hang.  This is fixed by Emacs trunk bzr
109099.

I'm marking the bug as done; please feel free to reopen it if
this fix does not work for you.

Here's some URLs if you want to see diffs:

http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/109099

http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/109107

Subject: 24.1.50; a regression with pselect(2) on FreeBSD after r108687
From: Jan Beich <[email-masked]>
To: [email-masked]
Date: Sun, 08 Jul 2012 16:04:08 -1100
List-Id: <debbugs-submit.debbugs.gnu.org>

Trying to use anything that waits for a process turns emacs into a cpu
hog, e.g. browse-url or vc-annotate. A simple test case is:

  $ emacs -Q
  (start-process "dummy" "*dummy*" "/usr/bin/true")

It does nothing on r108686 but degrades on r108707 (intermediate
revisions do not compile). list-processes still shows `true' despite the
process is long gone:

  Process [v]     Status  Buffer          TTY          Command
  dummy           run     *dummy*         /dev/pts/8   /usr/bin/true

in ktrace(1) it looks like this (repeatedly)

   911 emacs    CALL  ioctl(0x3,FIONREAD,0x7fffffffb47c)
   911 emacs    RET   ioctl 0
   911 emacs    CALL  pselect(0x5,0x7fffffffc850,0x7fffffffc7d0,0,0x7fffffffc7c0,0)
   911 emacs    RET   pselect 1
   911 emacs    CALL  ioctl(0x3,FIONREAD,0x7fffffffb46c)
   911 emacs    RET   ioctl 0
   911 emacs    CALL  read(0x4,0x7fffffffb550,0x1000)
   911 emacs    GIO   fd 4 read 0 bytes
       ""
   911 emacs    RET   read 0

--
FreeBSD 10.0-CURRENT r237800 amd64