unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
@ 2015-08-12  8:16 Tassilo Horn
       [not found] ` <handler.21241.B.14393674365819.ack@debbugs.gnu.org>
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Tassilo Horn @ 2015-08-12  8:16 UTC (permalink / raw)
  To: 21241


When acquiring many file/directory watches using file-notify-add-watch
with file-notify--library being gfilenotify, there's no indication when
the limit of watches a user is allowed to place is reached.  You still
get a valid descriptor but the provided callback function won't be
called when the watched file/directory changes.

I've looked at the code and saw that with inotify you'd get an error.
Apparently, gfilenotify (aka glib) also uses inotify on my GNU/Linux box
under the hoods.  At least increasing the inotify limit for user watches
made it work again.

I tried looking at the GFileMonitor API docs.  It seems that
g_file_monitor should return NULL on errors (and I'd count a reached
limit an error), and the fourth parameter should be initialized with the
error.  Emacs calls it with no error parameter:

  monitor = g_file_monitor (gfile, gflags, NULL, NULL);

So I've tried the following:

--8<---------------cut here---------------start------------->8---
diff --git a/src/gfilenotify.c b/src/gfilenotify.c
index 08713a8..2ad2110 100644
--- a/src/gfilenotify.c
+++ b/src/gfilenotify.c
@@ -172,8 +172,9 @@ will be reported only in case of the 'moved' event.  */)
     gflags |= G_FILE_MONITOR_SEND_MOVED;
 
   /* Enable watch.  */
-  monitor = g_file_monitor (gfile, gflags, NULL, NULL);
-  if (! monitor)
+  GError *err = NULL;
+  monitor = g_file_monitor (gfile, gflags, NULL, &err);
+  if (! monitor || err != NULL)
     xsignal2 (Qfile_notify_error, build_string ("Cannot watch file"), file);
 
   Lisp_Object watch_descriptor = make_pointer_integer (monitor);
--8<---------------cut here---------------end--------------->8---

Unfortunately, the err variable won't be set in case the limit is
reached, too.  So it seems that we can't do much from Emacs land and
this should be reported as a glib bug (which I'll do).

Well, one thing we could do was preferring plain inotify over glib's
GFileMonitor when both are available.  On my GNU/Linux box both are
available and configure chose gfilenotify as the default.



In GNU Emacs 25.0.50.3 (x86_64-unknown-linux-gnu, GTK+ Version 3.16.6)
 of 2015-08-12 on thinkpad-t440p
Repository revision: 197f280042a4d901ea94acdf10f1dc544fae4750
Windowing system distributor `The X.Org Foundation', version 11.0.11702000
System Description:	Arch Linux

Configured using:
 `configure 'CFLAGS=-g -ggdb3 -O1''

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LC_MONETARY: de_DE.utf8
  value of $LC_NUMERIC: de_DE.utf8
  value of $LC_TIME: de_DE.utf8
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  rcirc-track-minor-mode: t
  hl-line-mode: t
  gnus-topic-mode: t
  global-company-mode: t
  global-aggressive-indent-mode: t
  gnus-undo-mode: t
  pdf-occur-global-minor-mode: t
  recentf-mode: t
  global-undo-tree-mode: t
  global-subword-mode: t
  subword-mode: t
  save-place-mode: t
  savehist-mode: t
  show-paren-mode: t
  ivy-mode: t
  minibuffer-depth-indicate-mode: t
  diff-auto-refine-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  shell-dirtrack-mode: t
  electric-pair-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
20150812T095021.253> Reading active file via nndraft...
20150812T095021.254> Reading active file via nndraft...done
20150812T095021.254> Reading active file from archive+nnml+archive:sent-postings via nnml...
20150812T095021.254> Opening nnml server on archive+nnml+archive:sent-postings...
20150812T095021.255> Opening nnml server on archive+nnml+archive:sent-postings...done
20150812T095021.255> nnml: Reading incoming mail (no new mail)...done
20150812T095021.255> Reading active file from archive+nnml+archive:sent-postings via nnml...
20150812T095021.256> Reading active file from archive+nnml+archive:sent-postings via nnml...done
20150812T095021.256> Checking new news...done
20150812T095021.257> No news is good news

Load-path shadows:
~/Repos/el/auctex/lpath hides ~/Repos/el/gnus/lisp/lpath
~/Repos/el/highlight-symbol.el/highlight-symbol hides /home/horn/.emacs.d/elpa/highlight-symbol-20150805.806/highlight-symbol
~/Repos/el/gnus/lisp/md4 hides /home/horn/Repos/el/emacs/lisp/md4
~/Repos/el/gnus/lisp/color hides /home/horn/Repos/el/emacs/lisp/color
~/Repos/el/gnus/lisp/format-spec hides /home/horn/Repos/el/emacs/lisp/format-spec
~/Repos/el/gnus/lisp/password-cache hides /home/horn/Repos/el/emacs/lisp/password-cache
~/Repos/el/gnus/lisp/hex-util hides /home/horn/Repos/el/emacs/lisp/hex-util
~/Repos/el/gnus/lisp/dns-mode hides /home/horn/Repos/el/emacs/lisp/textmodes/dns-mode
~/Repos/el/gnus/lisp/dig hides /home/horn/Repos/el/emacs/lisp/net/dig
~/Repos/el/gnus/lisp/hmac-md5 hides /home/horn/Repos/el/emacs/lisp/net/hmac-md5
~/Repos/el/gnus/lisp/ntlm hides /home/horn/Repos/el/emacs/lisp/net/ntlm
~/Repos/el/gnus/lisp/hmac-def hides /home/horn/Repos/el/emacs/lisp/net/hmac-def
~/Repos/el/gnus/lisp/rfc2104 hides /home/horn/Repos/el/emacs/lisp/net/rfc2104
~/Repos/el/gnus/lisp/sasl-ntlm hides /home/horn/Repos/el/emacs/lisp/net/sasl-ntlm
~/Repos/el/gnus/lisp/sasl-cram hides /home/horn/Repos/el/emacs/lisp/net/sasl-cram
~/Repos/el/gnus/lisp/dns hides /home/horn/Repos/el/emacs/lisp/net/dns
~/Repos/el/gnus/lisp/sasl hides /home/horn/Repos/el/emacs/lisp/net/sasl
~/Repos/el/gnus/lisp/tls hides /home/horn/Repos/el/emacs/lisp/net/tls
~/Repos/el/gnus/lisp/sasl-scram-rfc hides /home/horn/Repos/el/emacs/lisp/net/sasl-scram-rfc
~/Repos/el/gnus/lisp/netrc hides /home/horn/Repos/el/emacs/lisp/net/netrc
~/Repos/el/gnus/lisp/sasl-digest hides /home/horn/Repos/el/emacs/lisp/net/sasl-digest
~/Repos/el/gnus/lisp/uudecode hides /home/horn/Repos/el/emacs/lisp/mail/uudecode
~/Repos/el/gnus/lisp/binhex hides /home/horn/Repos/el/emacs/lisp/mail/binhex
~/Repos/el/gnus/lisp/hashcash hides /home/horn/Repos/el/emacs/lisp/mail/hashcash
~/Repos/el/gnus/lisp/canlock hides /home/horn/Repos/el/emacs/lisp/gnus/canlock
~/Repos/el/gnus/lisp/nneething hides /home/horn/Repos/el/emacs/lisp/gnus/nneething
~/Repos/el/gnus/lisp/mm-encode hides /home/horn/Repos/el/emacs/lisp/gnus/mm-encode
~/Repos/el/gnus/lisp/mm-util hides /home/horn/Repos/el/emacs/lisp/gnus/mm-util
~/Repos/el/gnus/lisp/rfc2047 hides /home/horn/Repos/el/emacs/lisp/gnus/rfc2047
~/Repos/el/gnus/lisp/nnml hides /home/horn/Repos/el/emacs/lisp/gnus/nnml
~/Repos/el/gnus/lisp/gnus-cus hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-cus
~/Repos/el/gnus/lisp/gnus-range hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-range
~/Repos/el/gnus/lisp/gnus-int hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-int
~/Repos/el/gnus/lisp/gnus-cloud hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-cloud
~/Repos/el/gnus/lisp/spam-stat hides /home/horn/Repos/el/emacs/lisp/gnus/spam-stat
~/Repos/el/gnus/lisp/nnmh hides /home/horn/Repos/el/emacs/lisp/gnus/nnmh
~/Repos/el/gnus/lisp/gnus-mlspl hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-mlspl
~/Repos/el/gnus/lisp/deuglify hides /home/horn/Repos/el/emacs/lisp/gnus/deuglify
~/Repos/el/gnus/lisp/gnus-gravatar hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-gravatar
~/Repos/el/gnus/lisp/nngateway hides /home/horn/Repos/el/emacs/lisp/gnus/nngateway
~/Repos/el/gnus/lisp/ietf-drums hides /home/horn/Repos/el/emacs/lisp/gnus/ietf-drums
~/Repos/el/gnus/lisp/mail-parse hides /home/horn/Repos/el/emacs/lisp/gnus/mail-parse
~/Repos/el/gnus/lisp/gnus-salt hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-salt
~/Repos/el/gnus/lisp/nnimap hides /home/horn/Repos/el/emacs/lisp/gnus/nnimap
~/Repos/el/gnus/lisp/gnus-draft hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-draft
~/Repos/el/gnus/lisp/mail-source hides /home/horn/Repos/el/emacs/lisp/gnus/mail-source
~/Repos/el/gnus/lisp/messcompat hides /home/horn/Repos/el/emacs/lisp/gnus/messcompat
~/Repos/el/gnus/lisp/pop3 hides /home/horn/Repos/el/emacs/lisp/gnus/pop3
~/Repos/el/gnus/lisp/nnmaildir hides /home/horn/Repos/el/emacs/lisp/gnus/nnmaildir
~/Repos/el/gnus/lisp/nnheader hides /home/horn/Repos/el/emacs/lisp/gnus/nnheader
~/Repos/el/gnus/lisp/gnus-cite hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-cite
~/Repos/el/gnus/lisp/nndiary hides /home/horn/Repos/el/emacs/lisp/gnus/nndiary
~/Repos/el/gnus/lisp/gnus-diary hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-diary
~/Repos/el/gnus/lisp/nnfolder hides /home/horn/Repos/el/emacs/lisp/gnus/nnfolder
~/Repos/el/gnus/lisp/gnus-art hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-art
~/Repos/el/gnus/lisp/gnus-demon hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-demon
~/Repos/el/gnus/lisp/mml-sec hides /home/horn/Repos/el/emacs/lisp/gnus/mml-sec
~/Repos/el/gnus/lisp/nnir hides /home/horn/Repos/el/emacs/lisp/gnus/nnir
~/Repos/el/gnus/lisp/mm-partial hides /home/horn/Repos/el/emacs/lisp/gnus/mm-partial
~/Repos/el/gnus/lisp/gnus-registry hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-registry
~/Repos/el/gnus/lisp/gnus-icalendar hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-icalendar
~/Repos/el/gnus/lisp/compface hides /home/horn/Repos/el/emacs/lisp/gnus/compface
~/Repos/el/gnus/lisp/gnus-fun hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-fun
~/Repos/el/gnus/lisp/gnus-start hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-start
~/Repos/el/gnus/lisp/smiley hides /home/horn/Repos/el/emacs/lisp/gnus/smiley
~/Repos/el/gnus/lisp/gnus-picon hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-picon
~/Repos/el/gnus/lisp/spam-report hides /home/horn/Repos/el/emacs/lisp/gnus/spam-report
~/Repos/el/gnus/lisp/nntp hides /home/horn/Repos/el/emacs/lisp/gnus/nntp
~/Repos/el/gnus/lisp/nnnil hides /home/horn/Repos/el/emacs/lisp/gnus/nnnil
~/Repos/el/gnus/lisp/nndir hides /home/horn/Repos/el/emacs/lisp/gnus/nndir
~/Repos/el/gnus/lisp/gnus-srvr hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-srvr
~/Repos/el/gnus/lisp/smime hides /home/horn/Repos/el/emacs/lisp/gnus/smime
~/Repos/el/gnus/lisp/nnvirtual hides /home/horn/Repos/el/emacs/lisp/gnus/nnvirtual
~/Repos/el/gnus/lisp/gnus-notifications hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-notifications
~/Repos/el/gnus/lisp/nnspool hides /home/horn/Repos/el/emacs/lisp/gnus/nnspool
~/Repos/el/gnus/lisp/gnus-group hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-group
~/Repos/el/gnus/lisp/gnus-bcklg hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-bcklg
~/Repos/el/gnus/lisp/gnus-util hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-util
~/Repos/el/gnus/lisp/gnus-sieve hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-sieve
~/Repos/el/gnus/lisp/nndraft hides /home/horn/Repos/el/emacs/lisp/gnus/nndraft
~/Repos/el/gnus/lisp/nnagent hides /home/horn/Repos/el/emacs/lisp/gnus/nnagent
~/Repos/el/gnus/lisp/gnus-spec hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-spec
~/Repos/el/gnus/lisp/gnus-bookmark hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-bookmark
~/Repos/el/gnus/lisp/mml1991 hides /home/horn/Repos/el/emacs/lisp/gnus/mml1991
~/Repos/el/gnus/lisp/rfc2231 hides /home/horn/Repos/el/emacs/lisp/gnus/rfc2231
~/Repos/el/gnus/lisp/yenc hides /home/horn/Repos/el/emacs/lisp/gnus/yenc
~/Repos/el/gnus/lisp/gnus-undo hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-undo
~/Repos/el/gnus/lisp/ecomplete hides /home/horn/Repos/el/emacs/lisp/gnus/ecomplete
~/Repos/el/gnus/lisp/legacy-gnus-agent hides /home/horn/Repos/el/emacs/lisp/gnus/legacy-gnus-agent
~/Repos/el/gnus/lisp/utf7 hides /home/horn/Repos/el/emacs/lisp/gnus/utf7
~/Repos/el/gnus/lisp/rtree hides /home/horn/Repos/el/emacs/lisp/gnus/rtree
~/Repos/el/gnus/lisp/gnus-uu hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-uu
~/Repos/el/gnus/lisp/gnus-ml hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-ml
~/Repos/el/gnus/lisp/sieve hides /home/horn/Repos/el/emacs/lisp/gnus/sieve
~/Repos/el/gnus/lisp/gnus hides /home/horn/Repos/el/emacs/lisp/gnus/gnus
~/Repos/el/gnus/lisp/mml hides /home/horn/Repos/el/emacs/lisp/gnus/mml
~/Repos/el/gnus/lisp/message hides /home/horn/Repos/el/emacs/lisp/gnus/message
~/Repos/el/gnus/lisp/mml-smime hides /home/horn/Repos/el/emacs/lisp/gnus/mml-smime
~/Repos/el/gnus/lisp/gnus-eform hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-eform
~/Repos/el/gnus/lisp/gnus-agent hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-agent
~/Repos/el/gnus/lisp/gnus-logic hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-logic
~/Repos/el/gnus/lisp/mm-extern hides /home/horn/Repos/el/emacs/lisp/gnus/mm-extern
~/Repos/el/gnus/lisp/nndoc hides /home/horn/Repos/el/emacs/lisp/gnus/nndoc
~/Repos/el/gnus/lisp/sieve-manage hides /home/horn/Repos/el/emacs/lisp/gnus/sieve-manage
~/Repos/el/gnus/lisp/mm-decode hides /home/horn/Repos/el/emacs/lisp/gnus/mm-decode
~/Repos/el/gnus/lisp/starttls hides /home/horn/Repos/el/emacs/lisp/gnus/starttls
~/Repos/el/gnus/lisp/gnus-dired hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-dired
~/Repos/el/gnus/lisp/nnbabyl hides /home/horn/Repos/el/emacs/lisp/gnus/nnbabyl
~/Repos/el/gnus/lisp/nnmbox hides /home/horn/Repos/el/emacs/lisp/gnus/nnmbox
~/Repos/el/gnus/lisp/gnus-win hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-win
~/Repos/el/gnus/lisp/gnus-async hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-async
~/Repos/el/gnus/lisp/mm-url hides /home/horn/Repos/el/emacs/lisp/gnus/mm-url
~/Repos/el/gnus/lisp/gnus-html hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-html
~/Repos/el/gnus/lisp/gssapi hides /home/horn/Repos/el/emacs/lisp/gnus/gssapi
~/Repos/el/gnus/lisp/mml2015 hides /home/horn/Repos/el/emacs/lisp/gnus/mml2015
~/Repos/el/gnus/lisp/nnrss hides /home/horn/Repos/el/emacs/lisp/gnus/nnrss
~/Repos/el/gnus/lisp/gnus-mh hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-mh
~/Repos/el/gnus/lisp/gnus-sum hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-sum
~/Repos/el/gnus/lisp/nnweb hides /home/horn/Repos/el/emacs/lisp/gnus/nnweb
~/Repos/el/gnus/lisp/mail-prsvr hides /home/horn/Repos/el/emacs/lisp/gnus/mail-prsvr
~/Repos/el/gnus/lisp/nnmairix hides /home/horn/Repos/el/emacs/lisp/gnus/nnmairix
~/Repos/el/gnus/lisp/plstore hides /home/horn/Repos/el/emacs/lisp/gnus/plstore
~/Repos/el/gnus/lisp/rfc2045 hides /home/horn/Repos/el/emacs/lisp/gnus/rfc2045
~/Repos/el/gnus/lisp/gnus-msg hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-msg
~/Repos/el/gnus/lisp/spam-wash hides /home/horn/Repos/el/emacs/lisp/gnus/spam-wash
~/Repos/el/gnus/lisp/gnus-score hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-score
~/Repos/el/gnus/lisp/mm-uu hides /home/horn/Repos/el/emacs/lisp/gnus/mm-uu
~/Repos/el/gnus/lisp/spam hides /home/horn/Repos/el/emacs/lisp/gnus/spam
~/Repos/el/gnus/lisp/mm-view hides /home/horn/Repos/el/emacs/lisp/gnus/mm-view
~/Repos/el/gnus/lisp/sieve-mode hides /home/horn/Repos/el/emacs/lisp/gnus/sieve-mode
~/Repos/el/gnus/lisp/html2text hides /home/horn/Repos/el/emacs/lisp/gnus/html2text
~/Repos/el/gnus/lisp/gnus-ems hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-ems
~/Repos/el/gnus/lisp/registry hides /home/horn/Repos/el/emacs/lisp/gnus/registry
~/Repos/el/gnus/lisp/auth-source hides /home/horn/Repos/el/emacs/lisp/gnus/auth-source
~/Repos/el/gnus/lisp/gravatar hides /home/horn/Repos/el/emacs/lisp/gnus/gravatar
~/Repos/el/gnus/lisp/flow-fill hides /home/horn/Repos/el/emacs/lisp/gnus/flow-fill
~/Repos/el/gnus/lisp/gmm-utils hides /home/horn/Repos/el/emacs/lisp/gnus/gmm-utils
~/Repos/el/gnus/lisp/mailcap hides /home/horn/Repos/el/emacs/lisp/gnus/mailcap
~/Repos/el/gnus/lisp/gnus-delay hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-delay
~/Repos/el/gnus/lisp/mm-bodies hides /home/horn/Repos/el/emacs/lisp/gnus/mm-bodies
~/Repos/el/gnus/lisp/mm-archive hides /home/horn/Repos/el/emacs/lisp/gnus/mm-archive
~/Repos/el/gnus/lisp/rfc1843 hides /home/horn/Repos/el/emacs/lisp/gnus/rfc1843
~/Repos/el/gnus/lisp/gnus-kill hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-kill
~/Repos/el/gnus/lisp/qp hides /home/horn/Repos/el/emacs/lisp/gnus/qp
~/Repos/el/gnus/lisp/score-mode hides /home/horn/Repos/el/emacs/lisp/gnus/score-mode
~/Repos/el/gnus/lisp/gnus-topic hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-topic
~/Repos/el/gnus/lisp/gnus-cache hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-cache
~/Repos/el/gnus/lisp/nnmail hides /home/horn/Repos/el/emacs/lisp/gnus/nnmail
~/Repos/el/gnus/lisp/gnus-vm hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-vm
~/Repos/el/gnus/lisp/gnus-sync hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-sync
~/Repos/el/gnus/lisp/nnoo hides /home/horn/Repos/el/emacs/lisp/gnus/nnoo
~/Repos/el/gnus/lisp/nnregistry hides /home/horn/Repos/el/emacs/lisp/gnus/nnregistry
~/Repos/el/gnus/lisp/gnus-dup hides /home/horn/Repos/el/emacs/lisp/gnus/gnus-dup
~/Repos/el/gnus/lisp/parse-time hides /home/horn/Repos/el/emacs/lisp/calendar/parse-time
~/Repos/el/gnus/lisp/time-date hides /home/horn/Repos/el/emacs/lisp/calendar/time-date

Features:
(shadow emacsbug sendmail browse-url hippie-exp eieio-opt speedbar
sb-image ezimage dframe linum flow-fill misearch multi-isearch vc
vc-dispatcher vc-git url-http url-gw url-auth sort gnus-cite mm-archive
gnus-async gnus-bcklg qp gnus-ml smiley rcirc-color rcirc-controls
rcirc-late-fix rcirc hl-line nndraft nnmh rot13 utf-7 gnutls
network-stream nsm starttls nnml nnnil gnus-agent gnus-srvr gnus-score
score-mode nnvirtual gnus-cache gnus-demon nntp spam spam-stat gnus-uu
yenc gnus-msg gnus-gravatar mail-extr gravatar gnus-topic nnir
gnus-registry registry eieio-compat eieio-base th-private colir color
smex ido company-files company-oddmuse company-keywords company-etags
company-gtags company-dabbrev-code company-dabbrev company-capf
company-cmake company-xcode company-clang company-semantic company-eclim
company-template company-css company-nxml company-bbdb company
stratego-mode greql-mode tg-mode generic preview-latex tex-site
auto-loads cider cider-debug cider-browse-ns cider-inspector cider-mode
cider-repl cider-eldoc cider-interaction arc-mode archive-mode
cider-overlays cider-doc org-table org org-macro org-footnote
org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint
ob-core ob-eval org-compat org-macs org-loaddefs find-func cal-menu
calendar cal-loaddefs cider-test cider-stacktrace cider-client
nrepl-client queue cider-util ewoc etags xref project clojure-mode
paredit aggressive-indent epa-file epa epg rdictcc
google-contacts-message google-contacts derived xml url-cache
google-oauth google-contacts-gnus gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-cloud
nnimap nnmail mail-source tls utf7 netrc nnoo parse-time gnus-spec
gnus-int gnus-range gnus-win gnus gnus-ems gnus-compat url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse url-vars mailcap nnheader dired-x em-term term ehelp
esh-opt esh-ext esh-util highlight-symbol thingatpt boxquote rect
ecomplete yasnippet disp-table noutline outline pdf-occur ibuf-ext
ibuffer tablist tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch
let-alist pdf-misc imenu pdf-tools compile cus-edit cus-start cus-load
pdf-view bookmark pp jka-compr pdf-cache pdf-info tq pdf-util image-mode
browse-kill-ring recentf tree-widget wid-edit highlight-parentheses cl
undo-tree diff iedit iedit-lib hydra lv counsel swiper cap-words
superword subword saveplace savehist paren ivy delsel icomplete mb-depth
ace-window avy magit-filenotify filenotify magit-blame magit-stash
magit-bisect magit-remote magit-commit magit-sequence magit magit-apply
magit-wip magit-log magit-diff smerge-mode diff-mode magit-core
magit-process magit-popup magit-mode magit-git crm magit-section
magit-utils git-commit log-edit easy-mmode message dired rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
with-editor async-bytecomp async tramp-sh tramp tramp-compat auth-source
eieio byte-opt bytecomp byte-compile cl-extra seq cconv eieio-core
cl-macs gv gnus-util mm-util help-fns help-mode mail-prsvr
password-cache tramp-loaddefs trampver shell pcomplete comint ansi-color
ring format-spec server dash smart-mode-line-respectful-theme
smart-mode-line-light-theme cl-seq smart-mode-line rich-minority rx bs
elec-pair edmacro kmacro cl-loaddefs cl-lib gnus-load subr-x pcase
tsdh-light-theme finder-inf memory-usage-autoloads advice info package
easymenu epg-config time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind gfilenotify
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 2203543 130351)
 (symbols 48 58842 76)
 (miscs 40 808 1443)
 (strings 32 181035 59773)
 (string-bytes 1 6176131)
 (vectors 16 61077)
 (vector-slots 8 1970775 197250)
 (floats 8 963 1376)
 (intervals 56 18899 3078)
 (buffers 976 73)
 (heap 1024 134316 38901))





^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
       [not found] ` <handler.21241.B.14393674365819.ack@debbugs.gnu.org>
@ 2015-08-12  8:34   ` Tassilo Horn
  0 siblings, 0 replies; 10+ messages in thread
From: Tassilo Horn @ 2015-08-12  8:34 UTC (permalink / raw)
  To: 21241

Here's the glib bug report I've just filed for this issue:

  https://bugzilla.gnome.org/show_bug.cgi?id=753549

Bye,
Tassilo





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-12  8:16 bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached Tassilo Horn
       [not found] ` <handler.21241.B.14393674365819.ack@debbugs.gnu.org>
@ 2015-08-12 12:47 ` Eli Zaretskii
  2015-08-12 13:27   ` Tassilo Horn
  2015-08-15  1:27 ` Paul Eggert
  2015-08-21  9:46 ` Michael Albinus
  3 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2015-08-12 12:47 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: 21241

> From: Tassilo Horn <tsdh@gnu.org>
> Date: Wed, 12 Aug 2015 10:16:54 +0200
> 
> Well, one thing we could do was preferring plain inotify over glib's
> GFileMonitor when both are available.  On my GNU/Linux box both are
> available and configure chose gfilenotify as the default.

I wonder if we should revert our decision to prefer gfilenotify if
available, and instead use it only if there's no other supported
method.  It begins to sound more and more like gfilenotify is more
trouble than it's worth.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-12 12:47 ` Eli Zaretskii
@ 2015-08-12 13:27   ` Tassilo Horn
  2015-08-12 14:16     ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Tassilo Horn @ 2015-08-12 13:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 21241

Eli Zaretskii <eliz@gnu.org> writes:

>> Well, one thing we could do was preferring plain inotify over glib's
>> GFileMonitor when both are available.  On my GNU/Linux box both are
>> available and configure chose gfilenotify as the default.
>
> I wonder if we should revert our decision to prefer gfilenotify if
> available, and instead use it only if there's no other supported
> method.  It begins to sound more and more like gfilenotify is more
> trouble than it's worth.

You mean the other emacs-devel thread where it has been reported that
gfile notifications might get delayed up to 30 seconds?  I haven't seen
that issue here but if it can happen and gfilenotify doesn't provide
some clear benefit over plain inotify, I'd suggest to use the latter by
default when it's available.

Well, at least it seems that THIS issue is considered to be a bug also
by one glib developer so chances are good that it'll be fixed
eventually.  But of course it may take some time until a fixed version
is distributed to all users and until then users will have to learn the
hard way why notifications don't work [1].

Bye,
Tassilo

[1] I've been working on magit-filenotify.el which automatically
    refreshes the magit status buffer when something in the git
    repository changes, and at some point it just didn't work anymore
    (no notifications) for repositories I've started working on later
    while it still worked for those I've had opened earlier.  Well, that
    way I've at least learned about inotify limits and how to change
    them... :-)





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-12 13:27   ` Tassilo Horn
@ 2015-08-12 14:16     ` Eli Zaretskii
  2015-08-12 19:18       ` Michael Albinus
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2015-08-12 14:16 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: 21241

> From: Tassilo Horn <tsdh@gnu.org>
> Cc: 21241@debbugs.gnu.org
> Date: Wed, 12 Aug 2015 15:27:26 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Well, one thing we could do was preferring plain inotify over glib's
> >> GFileMonitor when both are available.  On my GNU/Linux box both are
> >> available and configure chose gfilenotify as the default.
> >
> > I wonder if we should revert our decision to prefer gfilenotify if
> > available, and instead use it only if there's no other supported
> > method.  It begins to sound more and more like gfilenotify is more
> > trouble than it's worth.
> 
> You mean the other emacs-devel thread where it has been reported that
> gfile notifications might get delayed up to 30 seconds?

That, and this bug, and also the fact that it simply doesn't work on
Windows (no notifications come in), although the corresponding glib
tests all pass.  There's also bug#20417, and I think someone also
complained about gfilenotify on OS X.

> Well, at least it seems that THIS issue is considered to be a bug also
> by one glib developer so chances are good that it'll be fixed
> eventually.

Let's hope it will be.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-12 14:16     ` Eli Zaretskii
@ 2015-08-12 19:18       ` Michael Albinus
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Albinus @ 2015-08-12 19:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 21241, Tassilo Horn

Eli Zaretskii <eliz@gnu.org> writes:

>> > I wonder if we should revert our decision to prefer gfilenotify if
>> > available, and instead use it only if there's no other supported
>> > method.  It begins to sound more and more like gfilenotify is more
>> > trouble than it's worth.
>> 
>> You mean the other emacs-devel thread where it has been reported that
>> gfile notifications might get delayed up to 30 seconds?
>
> That, and this bug, and also the fact that it simply doesn't work on
> Windows (no notifications come in), although the corresponding glib
> tests all pass.  There's also bug#20417, and I think someone also
> complained about gfilenotify on OS X.

I would also agree to favor inotify when available.

On OS X (better: on systems which have defined HAVE_NS), we should
disable gfilenotify, because the Glib main loop won't be used (ns_select
is used rather than xg_select).

Best regards, Michael.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-12  8:16 bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached Tassilo Horn
       [not found] ` <handler.21241.B.14393674365819.ack@debbugs.gnu.org>
  2015-08-12 12:47 ` Eli Zaretskii
@ 2015-08-15  1:27 ` Paul Eggert
  2015-08-18 14:33   ` Tassilo Horn
  2015-08-21  9:46 ` Michael Albinus
  3 siblings, 1 reply; 10+ messages in thread
From: Paul Eggert @ 2015-08-15  1:27 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 21241, Tassilo Horn

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

Michael Albinus writes:

> I would also agree to favor inotify when available.

Let's give that a try, then.  I installed the attached patch as master commit 
200c2b10faf298bf65e8b6dbd0cb9ef00b2f95d6.

> On OS X (better: on systems which have defined HAVE_NS), we should
> disable gfilenotify, because the Glib main loop won't be used (ns_select
> is used rather than xg_select).

configure.ac was trying to do that, but there was a typo.  Should also be fixed 
in the attached patch.

[-- Attachment #2: 0001-Default-to-inotify-instead-of-gfile.patch --]
[-- Type: text/x-diff, Size: 3697 bytes --]

From 3f9999c2c0b0eb96c7e7e83fd5dd97da4ca301d1 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri, 14 Aug 2015 18:20:35 -0700
Subject: [PATCH] Default to inotify instead of gfile

* configure.ac (with_file_notification): Fix typo that
prevented suppression of file notification if HAVE_NS.
(NOTIFY_OBJ): Prefer inotify to gfile if both exist and
with_file_notification is 'yes' (Bug#21241).
* etc/NEWS: Mention this.
---
 configure.ac | 34 ++++++++++++++++------------------
 etc/NEWS     |  4 ++++
 2 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/configure.ac b/configure.ac
index 16d4484..9f8089f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -365,7 +365,7 @@ AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
     * ) AC_MSG_ERROR(['--with-file-notification=$withval' is invalid;
 this option's value should be 'yes', 'no', 'gfile', 'inotify' or 'w32'.
 'yes' is a synonym for 'w32' on MS-Windows, for 'no' on Nextstep,
-otherwise for the first of 'gfile' or 'inotify' that is usable.])
+otherwise for the first of 'inotify' or 'gfile' that is usable.])
     ;;
    esac
    with_file_notification=$val
@@ -2674,7 +2674,7 @@ NOTIFY_SUMMARY=no
 
 dnl FIXME?  Don't auto-detect on NS, but do allow someone to specify
 dnl a particular library.  This doesn't make much sense?
-if test "${HAVE_ns}" = yes && test ${with_file_notification} = yes; then
+if test "${HAVE_NS}" = yes && test ${with_file_notification} = yes; then
   with_file_notification=no
 fi
 
@@ -2694,22 +2694,7 @@ case $with_file_notification,$opsys in
     fi ;;
 esac
 
-dnl g_file_monitor exists since glib 2.18.  G_FILE_MONITOR_EVENT_MOVED
-dnl has been added in glib 2.24.  It has been tested under
-dnl GNU/Linux only.  We take precedence over inotify, but this makes
-dnl only sense when glib has been compiled with inotify support.  How
-dnl to check?
-case $with_file_notification,$NOTIFY_OBJ in
-  gfile, | yes,)
-    EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24])
-    if test "$HAVE_GFILENOTIFY" = "yes"; then
-       AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
-       NOTIFY_OBJ=gfilenotify.o
-       NOTIFY_SUMMARY="yes -lgio (gfile)"
-    fi ;;
-esac
-
-dnl inotify is only available on GNU/Linux.
+dnl inotify is available only on GNU/Linux.
 case $with_file_notification,$NOTIFY_OBJ in
   inotify, | yes,)
     AC_CHECK_HEADER(sys/inotify.h)
@@ -2723,6 +2708,19 @@ case $with_file_notification,$NOTIFY_OBJ in
     fi ;;
 esac
 
+dnl g_file_monitor exists since glib 2.18.  G_FILE_MONITOR_EVENT_MOVED
+dnl has been added in glib 2.24.  It has been tested under
+dnl GNU/Linux only.
+case $with_file_notification,$NOTIFY_OBJ in
+  gfile,* | yes,)
+    EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24])
+    if test "$HAVE_GFILENOTIFY" = "yes"; then
+       AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
+       NOTIFY_OBJ=gfilenotify.o
+       NOTIFY_SUMMARY="yes -lgio (gfile)"
+    fi ;;
+esac
+
 case $with_file_notification,$NOTIFY_OBJ in
   yes,* | no,* | *,?*) ;;
   *) AC_MSG_ERROR([File notification '$with_file_notification' requested but requirements not found.]) ;;
diff --git a/etc/NEWS b/etc/NEWS
index f131981..bbcdc0c 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -43,6 +43,10 @@ or by sticking with Emacs 24.4.
 If gnustep-config is not available, the old heuristics are used.
 
 ---
+** 'configure' now prefers inotify to gfile for file notification,
+unless gfile is explicitly requested via --with-file-notification='gfile'.
+
+---
 ** The configure option '--with-pkg-config-prog' has been removed.
 Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-15  1:27 ` Paul Eggert
@ 2015-08-18 14:33   ` Tassilo Horn
  2015-08-18 17:09     ` Paul Eggert
  0 siblings, 1 reply; 10+ messages in thread
From: Tassilo Horn @ 2015-08-18 14:33 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Michael Albinus, 21241

Paul Eggert <eggert@cs.ucla.edu> writes:

>> I would also agree to favor inotify when available.
>
> Let's give that a try, then.  I installed the attached patch as master
> commit 200c2b10faf298bf65e8b6dbd0cb9ef00b2f95d6.

FWIW, all my file-notification needs are still satisfied with inotify as
`file-notify--library', and now I also get an error when I run out of
allowed used watches.  So from my side, feel free to close this report
as gfilenotify's broken behavior is glib's bug, not ours.

Bye,
Tassilo





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-18 14:33   ` Tassilo Horn
@ 2015-08-18 17:09     ` Paul Eggert
  0 siblings, 0 replies; 10+ messages in thread
From: Paul Eggert @ 2015-08-18 17:09 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: Michael Albinus, 21241-done

Tassilo Horn wrote:
> So from my side, feel free to close this report
> as gfilenotify's broken behavior is glib's bug, not ours.

Thanks for checking; closing the bug.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached
  2015-08-12  8:16 bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached Tassilo Horn
                   ` (2 preceding siblings ...)
  2015-08-15  1:27 ` Paul Eggert
@ 2015-08-21  9:46 ` Michael Albinus
  3 siblings, 0 replies; 10+ messages in thread
From: Michael Albinus @ 2015-08-21  9:46 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: 21241

Tassilo Horn <tsdh@gnu.org> writes:

> So I've tried the following:
>
> diff --git a/src/gfilenotify.c b/src/gfilenotify.c
> index 08713a8..2ad2110 100644
> --- a/src/gfilenotify.c
> +++ b/src/gfilenotify.c
> @@ -172,8 +172,9 @@ will be reported only in case of the 'moved' event.  */)
>      gflags |= G_FILE_MONITOR_SEND_MOVED;
>  
>    /* Enable watch.  */
> -  monitor = g_file_monitor (gfile, gflags, NULL, NULL);
> -  if (! monitor)
> +  GError *err = NULL;
> +  monitor = g_file_monitor (gfile, gflags, NULL, &err);
> +  if (! monitor || err != NULL)
>      xsignal2 (Qfile_notify_error, build_string ("Cannot watch file"), file);
>  
>    Lisp_Object watch_descriptor = make_pointer_integer (monitor);

For the records, I've committed a modified version of this patch. It
returns the error message from g_file_monitor, if present.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-08-21  9:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-12  8:16 bug#21241: 25.0.50; gfilenotify doesn't indicate when limits are reached Tassilo Horn
     [not found] ` <handler.21241.B.14393674365819.ack@debbugs.gnu.org>
2015-08-12  8:34   ` Tassilo Horn
2015-08-12 12:47 ` Eli Zaretskii
2015-08-12 13:27   ` Tassilo Horn
2015-08-12 14:16     ` Eli Zaretskii
2015-08-12 19:18       ` Michael Albinus
2015-08-15  1:27 ` Paul Eggert
2015-08-18 14:33   ` Tassilo Horn
2015-08-18 17:09     ` Paul Eggert
2015-08-21  9:46 ` Michael Albinus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).