* 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
[parent not found: <handler.21241.B.14393674365819.ack@debbugs.gnu.org>]
* 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).