Subject: bug#18139: 24.4.50; called-interactively-p and skip advice:

From: raman <[email-masked]>
Date: Mon, 28 Jul 2014 18:58:11 -0700

Hi,

I've used a check of the form 
(when (interactive-p) ...)
within advice forms in emacspeak to speak *if and only if* a
command i

is  called  by the user -- as opposed from within other lisp
functions. When we transitioned to Emacs 24, I replaced that
check with (when (called-interactively-p 'interactive) ..)
and this has again worked without any issues --- until now.

We're seeing a  problem now in ruby-mode when command
electric-newline-and-maybe-indent is invoked -- that function for
ruby-mode goes through a complex dance with smie-next-sexp.

The long and short of it is that we eventually deadlock within a
call to advice--called-interactively-skip -- the comments in
nadvice.el where that function is implemented looks pretty scary.

What emacspeak really needs is a clean way of checking whether
something is called interactively, and this is the f first time
in 20 years that the test is failing.

For now, the only fix  I  have is to avoid the electric newline
insertion in ruby-mode -- but the comments in nadvice.el make me
worry that this will fail in the case of  other around advices --
that said, there are lots of cases where it works, this is the
only failure case for now.

--Raman 

In GNU Emacs 24.4.50.2 (i686-pc-linux-gnu, GTK+ Version 2.16.1)
 of 2014-06-24 on labrador
Repository revision: %N
System Description:	Ubuntu 9.04

Configured using:
 `configure --prefix=/usr/local --without-compress-install'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF
NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE XFT ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Shell

Minor modes in effect:
  recentf-mode: t
  gpm-mouse-mode: t
  global-semantic-idle-summary-mode: t
  global-semanticdb-minor-mode: t
  semantic-mode: t
  savehist-mode: t
  ido-everywhere: t
  display-time-mode: t
  auto-insert-mode: t
  jabber-activity-mode: t
  jabber-mode-line-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  dynamic-completion-mode: t
  dired-omit-mode: t
  desktop-save-mode: t
  dirtrack-procfs-mode: t
  global-voice-lock-mode: t
  voice-lock-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Recent input:
C-p C-e e DEL DEL ) C-n C-n C-n m ESC m ESC m C-p ESC 
m C-n C-p ESC C-a C-s d e f a ESC < C-s d e f a ESC 
m ESC m ESC C-q C-x C-g C-n C-n C-n C-p C-e e ESC b 
ESC d w h e n ESC DEL w h e n SPC C-n ESC m C-d ESC 
m ESC ^ C-n C-n ESC m C-k C-p C-n C-n C-p C-p C-x C-o 
C-n C-e e ) ) ) C-x C-e C-x @ h s c d RET C-x b / t 
m RET C-g C-x @ h s c d RET c d SPC / t m TAB RET C-x 
C-f t e s t . RET ESC M ESC x d DEL a d SPC d i s TAB 
a d TAB RET b C-x @ h s ESC x a d SPC d i s TAB a d 
TAB RET b a c k w TAB s e x TAB RET a r o u TAB RET 
RET C-e m ESC [ [ C ESC < ESC m C-d ESC m C-e e C-j 
C-e m ESC m ESC < ESC x t o g g l TAB d e TAB RET q 
TAB RET ESC m C-e C-e C-j ESC < C-n C-n C-n C-n C-e 
m q ESC x ESC p RET C-x @ h s c d RET C-x C-g ESC x 
C-g C-e m C-e ; m C-x @ h s c d RET c d RET c d SPC 
s o u TAB e m a c s RET . / b u i l d RET C-e m ESC 
x r e p o r t SPC e m a TAB RET

Recent messages:
Making completion list...
Debug on Quit enabled globally
Turned t debug on quit
Entering debugger...
Back to top level.
Debug on Quit disabled globally
Turned nil debug on quit
C-x C-g is undefined
Quit  [2 times]
End of buffer 

Load-path shadows:
/home/raman/emacs/lisp/site-lisp/vm/lisp/tapestry hides /home/raman/emacs/lisp/emacspeak/lisp/tapestry
/home/raman/emacs/lisp/emacspeak/lisp/tetris hides /usr/local/share/emacs/24.4.50/lisp/play/tetris
/home/raman/.emacs.d/elpa/emms-20140630.1158/tq hides /usr/local/share/emacs/24.4.50/lisp/emacs-lisp/tq

Features:
(shadow emacsbug amixer recentf tree-widget debug emacspeak-ruby
ruby-mode smie ffap tramp-cache tramp tramp-compat tramp-loaddefs
trampver pcmpl-unix semantic/db-file data-debug cedet-files
semantic/bovine/c semantic/decorate/include
semantic/decorate/mode semantic/decorate pulse hideif
semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc
semantic/dep semantic/bovine semantic/analyze/refs
semantic/db-find semantic/db-ref semantic/analyze semantic/sort
semantic/scope semantic/analyze/fcn cc-langs emacspeak-c cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs eieio-opt emacspeak-speedbar speedbar sb-image
dframe misearch multi-isearch vm-virtual vm-delete tapestry
vm-rfaddons vm-menu vm-window vm-toolbar vm-mouse vm-page
vm-minibuf emacspeak-vm vm emacspeak-wizards emacspeak-eterm term
ehelp emacspeak-texinfo texinfo emacspeak-table-ui
emacspeak-table emacspeak-find-dired find-dired eldoc lisp-mnt
t-mouse cal-china lunar cal-bahai cal-islam cal-hebrew holidays
hol-loaddefs gcal g-app g-auth mule-util cal-move server bbdb-vm
vm-mime vm-folder vm-summary vm-motion vm-undo vm-misc bbdb-snarf
mail-extr bbdb-com emacspeak-reftex reftex reftex-vars
Save-visited-files-autoloads emacspeak-auctex tex-site
color-theme-autoloads finder-inf gopher-autoloads emacspeak-info
info memory-usage-autoloads slime-repl-autoloads slime-autoloads
ssh-config-mode-autoloads package emacs-startup semantic/idle
semantic/format ezimage semantic/tag-ls semantic/find
semantic/ctxt semantic/db-mode semantic/db eieio-base saveplace
midnight emacspeak-cedet semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw mode-local cedet
savehist emacspeak-ido ido emacspeak-m-player time autoinsert
emacspeak-twittering twittering-mode epa epg ssl emacspeak-jabber
jabber jabber-libnotify jabber-awesome jabber-osd jabber-wmii
jabber-xmessage jabber-festival jabber-sawfish jabber-ratpoison
jabber-tmux jabber-screen jabber-socks5 jabber-ft-server
jabber-si-server jabber-ft-client jabber-ft-common
jabber-si-client jabber-si-common jabber-feature-neg
jabber-truncate jabber-time jabber-autoaway jabber-vcard-avatars
jabber-chatstates jabber-events jabber-vcard jabber-avatar
jabber-activity jabber-watch jabber-modeline jabber-ahc-presence
jabber-ahc jabber-version jabber-ourversion
jabber-muc-nick-completion hippie-exp jabber-browse jabber-search
jabber-register jabber-roster jabber-presence jabber-muc
jabber-bookmarks jabber-private jabber-muc-nick-coloring hexrgb
jabber-widget jabber-disco jabber-chat jabber-history
jabber-chatbuffer jabber-alert jabber-iq jabber-core
jabber-console emacspeak-sgml-mode sgml-mode ewoc jabber-keymap
jabber-sasl sasl sasl-anonymous sasl-login sasl-plain fsm
jabber-logon jabber-conn srv dns starttls gnutls jabber-xml
jabber-menu jabber-util jabber-autoloads erc-list erc-menu
erc-join erc-ring erc-networks erc-pcomplete erc-track erc-match
erc-button erc-fill erc-stamp erc-netsplit emacspeak-erc
erc-goodies erc erc-backend erc-compat pp emacspeak-org org
org-macro org-footnote org-pcomplete org-list org-faces
org-entities emacspeak-outline foldout noutline outline
easy-mmode org-version ob-emacs-lisp ob ob-tangle org-src ob-ref
ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval
org-compat org-macs org-loaddefs emacspeak-find-func find-func
emacspeak-calendar appt diary-lib diary-loaddefs solar cal-dst
cal-menu calendar cal-loaddefs emacspeak-tcl tcl
emacspeak-folding folding w3-prepare w3 w3-menu w3-emulate
w3-auto w3-parse w3-fast-parse emacspeak-w3 emacspeak-google
html2text gmaps emacspeak-we emacspeak-xslt w3-display w3-mouse
w3-imap url-handlers w3-widget w3-vars w3-keymap w3-cus css font
disp-table devices ange-ftp w3-cfg w3-compat emacspeak-sigbegone
sigbegone emacspeak-custom cus-edit cus-start smtpmail sendmail
gnus-prepare gnus-demon nntp emacspeak-gnus gm-nnir nnir gnus-art
mm-uu mml2015 epg-config 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 emacspeak-message message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win
emacspeak-hide gnus gnus-ems nnheader mail-utils
emacspeak-mspools mspools emacspeak-bbdb bbdb timezone
bbdb-autoloads vm-pine vm-macro vm-message vm-autoloads vm-vars
vm-version my-functions completion dired-aux dired-x
emacspeak-dired emacspeak-desktop desktop frameset dired
emacspeak-aumix emacspeak-forms forms-mode forms emacspeak-setup
emacspeak-dbus nm dbus xml emacspeak-webspace emacspeak-feeds
emacspeak-webutils browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
url-parse auth-source eieio eieio-core gnus-util mm-util
mail-prsvr password-cache url-vars mailcap gf gweb gfeeds g-utils
json emacspeak-alsaplayer emacspeak-amark derived
emacspeak-advice shell pcomplete comint ring emacspeak-ansi-color
ansi-color emacspeak-replace emacspeak-redefine
emacspeak-personality emacspeak emacspeak-widget warnings
wid-edit emacspeak-facemenu emacspeak-fix-interactive
emacspeak-buff-menu g-cus-load cus-load emacspeak-preamble
emacspeak-keymap emacspeak-speak time-date emacspeak-pronounce
thingatpt dtk-speak flite-voices dtk-interp voice-setup
emacspeak-sounds dectalk-voices espeak-voices mac-voices
multispeech-voices outloud-voices dtk-unicode byte-opt bytecomp
byte-compile cconv descr-text help-mode easymenu dtk-css-speech
acss-structure emacspeak-load-path advice help-fns vc-git
vc-dispatcher vc-svn cl-macs cl gv cl-loaddefs cl-lib tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer 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
make-network-process dbusbind inotify dynamic-setting
system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty emacs)

Memory information:
((conses 8 679346 166711)
 (symbols 24 90221 0)
 (miscs 20 4938 2979)
 (strings 16 217446 40224)
 (string-bytes 1 5774236)
 (vectors 8 74336)
 (vector-slots 4 1079976 43510)
 (floats 8 1126 556)
 (intervals 28 3408 1943)
 (buffers 512 41)
 (heap 1024 56659 2138))