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)

Reply via email to