On 2022-11-17 17:02:47 +0100, Vincent Lefevre wrote: > When I try to view any Postscript or PDF file with gv, I get the warning > > Warning: Cannot convert string > "-*-Courier-Medium-R-Normal--*-100-*-*-M-*-ISO8859-1" to type FontStruct > > then gv hangs on a blank page, with a throbber.
A "strace -f" shows that gv executes /usr/bin/gs, which fails with exit status 1: [...] 1949581 openat(AT_FDCWD, "/usr/share/ghostscript/10.00.0/Resource/Init/gs_init.ps", O_RDONLY) = 3 1949581 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=94573, ...}, AT_EMPTY_PATH) = 0 1949581 lseek(3, 0, SEEK_CUR) = 0 1949581 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=94573, ...}, AT_EMPTY_PATH) = 0 1949581 lseek(3, 0, SEEK_SET) = 0 1949581 read(3, "% Copyright (C) 2001-2022 Artifex Software, Inc.\n% All Rights Reserved.\n%\n% This software is provided AS-IS with no warranty, either express or\n% implied.\n%\n% This software is distributed under license and may not be copied,\n% modified or distributed excep"..., 4096) = 4096 1949581 read(3, "IDFALLBACK exch def\n/.bind /bind load def\n\n /VMDEBUG\n INITDEBUG {{print mark\n systemdict /level2dict known\n { .currentglobal dup //false .setglobal vmstatus\n //true .setglobal vmstatus 3 -1 roll pop\n 6"..., 4096) = 4096 1949581 read(3, " by -dOverprint={enable|disable|simulate} ****\\n\\n) print\n % Set the new variable appropriately.\n /Overprint SimulateOverprint { /enable } { /disable } ifelse def\n} if\n\n% Acquire environment variables.\ncurrentdict /DEVICE known not\n { (GS_DEVICE) getenv "..., 4096) = 4096 1949581 read(3, "laycount .delaycount 1 add put\n }\n { pop /.bind cvx exec\n }\n ifelse\n } .bind odef\n} executeonly if\n\n.currentglobal //true .setglobal\n/.undefinternalnameslist 10 dict def\n.setglobal\n\n% Under normal operation .undefinternalnames sim"..., 4096) = 4096 1949581 read(3, "vice pop\n dup //null ne { /BeginPage .knownget } { pop //false } ifelse {\n % Stack: ... pagecount proc\n count 2 .execn\n % Stack: ... ..???.. oldcount\n count 1 add exch sub { pop } repeat\n } {\n pop\n } "..., 4096) = 4096 1949581 read(3, " { /filter .systemvar /undefined signalerror }\n ifelse\n } odef\n% Internal uses of stopped that aren't going to do a stop if an error occurs\n% should use .internalstopped to avoid setting newerror et al.\n/.internalstopped { //null 1 .s"..., 4096) = 4096 1949581 brk(0x55a88f09f000) = 0x55a88f09f000 1949581 read(3, "rix load /typecheck signalerror\n } if\n } if\n dup length 6 ne { /setmatrix load /rangecheck signalerror } if\n dup aload pop .setmatrix pop\n} odef\n\n/.confirmread {\n //systemdict /TTYPAUSE get {\n (/dev/tty) (r) file dup rea"..., 4096) = 4096 1949581 read(3, "r the Level 2 spec even in Level 1.\n/.copydict\t\t% <fromdict> <todict> .copydict <todict>\n { dup 3 -1 roll { put dup } forall pop } bind def\n/findlibfile {\n .systemvmlibfile { dup .filename pop exch //true } { //false } ifelse\n} odef\n/.growdictlengt"..., 4096) = 4096 1949581 read(3, "ecause we want the file to be\n% reopened if a startjob does a restore.\n/.runstdin {\n { { (%stdin) (r) file cvx } .runexec } execute0\n} bind def\n% Define the procedure that the C code uses for running commands\n% given on the command line with -c. We turn "..., 4096) = 4096 1949581 read(3, "ef\n }\n ifelse\n $error /position currentfile status\n { currentfile { fileposition } //.internalstopped exec { pop //null } if\n }\n {\t\t% If this was a scanner error, the file is no longer current,\n % but the command holds "..., 4096) = 4096 1949581 read(3, "only flush\n } ifelse\n //.printerror_long exec\n }\n ifelse\n //.clearerror exec flush\n }\n { % newerror is //false, test to see if user has set handleerror to a different\n % routine, if so execute it, otherwis"..., 4096) = 4096 1949581 read(3, "[only] procedures.\n/.dict 8 dict dup\nbegin def\n /.cvp {1 index exch 1 .writecvp} bind def\n /.p {1 index exch writestring} bind def\n /.p1 {2 index exch writestring} bind def\n /.p2 {3 index exch writestring} bind def\n /.print\n { dup type .dict ex"..., 4096) = 4096 1949581 openat(AT_FDCWD, "/usr/share/ghostscript/10.00.0/Resource/Init/gs_std_e.ps", O_RDONLY) = 5 1949581 newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=3143, ...}, AT_EMPTY_PATH) = 0 1949581 lseek(5, 0, SEEK_CUR) = 0 1949581 newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=3143, ...}, AT_EMPTY_PATH) = 0 1949581 lseek(5, 0, SEEK_SET) = 0 1949581 read(5, "% Copyright (C) 2001-2021 Artifex Software, Inc.\n% All Rights Reserved.\n%\n% This software is provided AS-IS with no warranty, either express or\n% implied.\n%\n% This software is distributed under license and may not be copied,\n% modified or distributed excep"..., 4096) = 3143 1949581 read(5, "", 4096) = 0 [...] 1949580 <... read resumed>"Unknown device: x11\n", 512) = 20 [...] 1949580 writev(3, [{iov_base="-\1\20\0\266\1 \0043\0ll-*-Courier-Medium-R-Normal--*-100-*-*-M-*-ISO8859-1\10/\0\2\0\266\1 \4", iov_len=72}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 72 1949580 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}]) 1949580 recvmsg(3, <unfinished ...> 1949581 +++ exited with 1 +++ 1949580 <... recvmsg resumed>{msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\17G\t\266\1 \4\0\0-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7H\t\266\1 \4\0\0/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 64 1949580 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1949581, si_uid=1000, si_status=1, si_utime=1, si_stime=0} --- [...] 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}]) 1949580 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\n\3\264\tX\1 \4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) 1949580 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout) [...] So there seems to be an initial error "Unknown device: x11", which is not reported to the user (does this error matter?). But it occurs before the failure of the child process (gs). So there may be several issues... -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)