Subject: bug#24931: 25.1.50; recentf breaks M-x tetris scoring

From: Robert Marshall <[email-masked]>
Date: Sun, 13 Nov 2016 18:54:39 +0000

[email-masked] writes:
 > tags 24931 unreproducible
 > quit
 > 
 > Robert Marshall <[email-masked]> writes:
 > 
 > > With emacs -Q
 > > evaluate
 > > (require 'recentf)
 > > (recentf-mode t)
 > >
 > > and then M-x tetris
 > >
 > > just let the blocks pile up to finish quickly, when it completes I
 > > get the message
 > >
 > >    File exists, but cannot be read
 > >
 > > when it tries to access the score file and no score gets added - if it
 > > was going to do so. Without those recentf lines the score file is read
 > > successfully.
 > >
 > > The issue doesn't appear to be dependent upon
 > > ~/.emacs.d/games/tetris-scores in the recentf list
 > >
 > > Robert
 > >
 > > In GNU Emacs 25.1.50.6 (x86_64-unknown-linux-gnu, GTK+ Version 3.18.9)
 > >  of 2016-09-03 built on robert-new-desktop
 > > Repository revision: 2ad16e4bf9b43c169bcfa1e6240584488fbc3d78
 > > Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
 > > System Description:	Ubuntu 16.04.1 LTS
 > 
 > Works for me, scrore shows up with no problems.
 > 
 > Can you get a backtrace if you M-x toggle-debug-on-error?
 > 

The 'File exists, but cannot be read' appears to come from files.el
where it doesn't appear to generate an error based on that message -
toggle-debug-on-error gave me nothing

If I set debug-on entry to after-find-file - though I guess that fn is
cleaning up after a problem(?) I get the following traceback (and
continuing doesn't enter that function again)

Debugger entered--entering a function:
* after-find-file(t t)
  find-file-noselect-1(#<buffer tetris-scores> "~/.emacs.d/games/tetris-scores" nil nil "/~/.emacs.d/games/tetris-scores" nil)
  find-file-noselect("/home/robert/.emacs.d/games/tetris-scores" nil nil nil)
  find-file("/home/robert/.emacs.d/games/tetris-scores" nil)
  find-file--read-only(find-file "/home/robert/.emacs.d/games/tetris-scores" nil)
  find-file-read-only("/home/robert/.emacs.d/games/tetris-scores")
  gamegrid-add-score-with-update-game-score-1("tetris-scores" "/home/robert/.emacs.d/games/tetris-scores" 63)
  gamegrid-add-score-with-update-game-score("tetris-scores" 63)
  gamegrid-add-score("tetris-scores" 63)
  tetris-end-game()
  tetris-new-shape()
  tetris-shape-done()
  tetris-update-game(#<buffer *Tetris*>)
  apply(tetris-update-game #<buffer *Tetris*>)
  timer-event-handler([t 22568 41268 554483 0.4 tetris-update-game (#<buffer *Tetris*>) nil 0])

~/.emacs.d/games/tetris-scores definitely exists and is readable by me

> In GNU Emacs 25.1.50.8 (x86_64-unknown-linux-gnu, X toolkit)
 >  of 2016-11-06 built on zony
 > Repository revision: 0b6b8151186e2d8d48aff8182a66aee21a6edb53
 > Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
 > Configured using:
 >  'configure --cache-file=../debug-config.cache 'CFLAGS=-O0 -g3
 >  -march=native' --enable-checking=yes,glyphs
 >  --enable-check-lisp-object-type MAKEINFO=makeinfo-4.13a
 >  --with-x-toolkit=lucid --without-toolkit-scroll-bars --with-gif=no
 >  --with-jpeg=no'
 >