[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fatal error messages
From: |
David Wright |
Subject: |
Re: Fatal error messages |
Date: |
Sat, 26 Feb 2022 10:12:13 -0600 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
On Sat 26 Feb 2022 at 00:40:20 (+0000), Alasdair McAndrew wrote:
> I've been using Lilypond, with Frescobaldi, on Linux happily for ages.
> But today, when I tried to compile a few bars in Frescobaldi, I got
> the error:
>
> fatal error: cannot create temp file: my_music_file.midi. 40227fc:
> Permission denied
>
> This is a first for me, and I tried running Lilypond on an old file,
> which had compiled successfully before - again the same error. But
> also, when I commented out the "midi" part of my score block, I got a
> new error:
>
> Drawing systems...guile: uncaught throw to system-error:
> (("open-fdes" "~A" ("Permission denied") (13)))
>
> Clearly something has gone very wrong - but what? How do I find out
> where the problem is, and how to fix it?
>
> Note that Lilypond always writes its files into the current directory,
> of which I have full user permission. I don't know if Lilypond writes
> temporary files into another directory (say "/tmp") but there's plenty
> of room there - it's not as though the filesystem is full.
I can replicate both these errors by running LP in a directory to
which I don't have write-access. (Where the source is doesn't matter.)
The second error message is a little more obscure, but running under
strace shows that LP is trying to open a file for writing PostScript into:
openat(AT_FDCWD, "K-310-1-tmp-7076704", O_WRONLY|O_CREAT|O_EXCL, 0666) = -1
EACCES (Permission denied)
write(2, "guile: uncaught throw to system-"..., 87guile: uncaught throw to
system-error: (("open-fdes" "~A" ("Permission denied") (13)))) = 87
as opposed to the successful:
openat(AT_FDCWD, "K-310-1-tmp-6623645", O_WRONLY|O_CREAT|O_EXCL, 0666) = 21
fcntl(21, F_GETFL) = 0x8001 (flags O_WRONLY|O_LARGEFILE)
lseek(21, 0, SEEK_CUR) = 0
fstat(21, {st_mode=S_IFREG|0640, st_size=0, ...}) = 0
openat(AT_FDCWD, "K-310-1-tmp-6623645", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 22
fcntl(22, F_GETFL) = 0x8001 (flags O_WRONLY|O_LARGEFILE)
lseek(22, 0, SEEK_CUR) = 0
fstat(22, {st_mode=S_IFREG|0640, st_size=0, ...}) = 0
close(21) = 0
(You only observed what's written on stream 2.)
So I can only suggest that your cwd might not be what you think it is.
If your second example was run with just LP, I would ask how you're
invoking it: from a command line, or by dragging/clicking something?
GUIs might be cranking some unseen machinery behind the scenes that
changes cwd.
Cheers,
David.