Public bug reported:

When invoking ghostscript via gv and evince, ghostscript dies with an 
/unknownerror when the document image is large enough.  
http://pdos.csail.mit.edu/~rsc/pprof.ps has a large bounding box: plain "gv 
pprof.ps" will make ghostscript die.
An alternative is to take any PostScript document and zoom in enough that the 
bounding box becomes big enough (400% on a regular 8.5x11 page).

Evince is better than gv about showing the gs error output.  To see it
with the latest (gutsy) version of gv, you have to drop an executable
shell script called "gs" in the current directory containing:

#!/bin/sh
/usr/bin/gs "$@" | tee /dev/tty

Previous versions of gv popped up an error box showing this output.

A typical error output is:

$ gv pprof.ps
Error: /unknownerror in --fill--
Operand stack:
   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   
--nostringval--   2   %stopped_push   --nostringval--   --nostringval--   
--nostringval--   false   1   %stopped_push   1889   1   3   %oparray_pop   
1888   1   3   %oparray_pop   1872   1   3   %oparray_pop   1755   1   3   
%oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   
--nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:1162/1684(ro)(G)--   --dict:0/20(G)--   --dict:94/200(L)--   
--dict:50/200(L)--
Current allocation mode is local

In other documents sometimes the /unknownerror comes in other operators
like --stroke-- or --show--.

Strace output shows gs reading the input file and then doing some X
operations and then printing the error:

13750 read(0, "f", 1)                   = 1
13750 read(0, "i", 1)                   = 1
13750 read(0, "l", 1)                   = 1
13750 read(0, "l", 1)                   = 1
13750 read(0, "\n", 1)                  = 1
13750 write(5, "I\2\5\0?\1\340\0\0\0\0\0\25\v\1\0\377\377\377\0", 20) = 20
13750 read(5, "\1\30!\0\25\v\0\0\0\0\0\0`\202\36\10\310\270\254\277<s"..., 32) 
= 32
13750 readv(5, [{"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"..., 
11348}, {"", 0}], 2) = 11348
13750 write(5, ">\2\7\0?\1\340\0\347\0\340\0\1\0\340\1\0\0\0\0\0\0\0\0"..., 48) 
= 48
13750 read(5, "\16\270\"\0\347\0\340\0\0\0>\0\224\303B\10\240C\37\10\2"..., 32) 
= 32
13750 read(5, "\1\30#\0\25\v\0\0\0\0\0\0\340\277B\10\310\270\254\277<"..., 32) 
= 32
13750 readv(5, [{"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"..., 
11348}, {"", 0}], 2) = 11348
13750 fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
13750 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) 
= 0xb7fa9000
13750 write(1, "Error: /unknownerror", 20) = 20
13750 write(1, " in --fill--", 12)      = 12

(fd 5 is the socket connection to the X11 server).

If I change the gs script above to run gs under strace connected to
xtrace and interleave the outputs, then I get:

14161 read(0, "f", 1)                   = 1
14161 read(0, "i", 1)                   = 1
14161 read(0, "l", 1)                   = 1
14161 read(0, "l", 1)                   = 1
14161 read(0, "\n", 1)                  = 1
14161 write(5, "[EMAIL PROTECTED]", 20) = 20
000:<:0021: 20: Request(73): GetImage format=ZPixmap(0x02) drawable=0x0140013f 
x=0 y=0 width=2837 height=1 plane-mask=0x00ffffff
000:>:0x0021:11380: Reply to GetImage: depth=0x18 32-bit values got=0x00000b15 
visual=None(0x00000000)
14161 read(5, "\1\30!\0\25\v\0\0\0\0\0\0`\202\36\10\310\270\254\277<s"..., 32) 
= 32
14161 readv(5, [{"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"..., 
11348}, {"", 0}], 2) = 11348
14161 write(5, ">[EMAIL PROTECTED]@\1\1\0\200\1\0\0\0\0\0\0\0\0\25\v\1"..., 48) 
= 48
000:<:0022: 28: Request(62): CopyArea src-drawable=0x0140013f 
dst-drawable=0x014000e7 gc=0x01800001 src-x=0 src-y=0 dst-x=0 dst-y=0 
width=2837 height=1
000:<:0023: 20: Request(73): GetImage format=ZPixmap(0x02) drawable=0x0140013f 
x=0 y=0 width=2837 height=1 plane-mask=0x00ffffff
000:>:0023: Event NoExposure(14) drawable=0x014000e7 minor-opcode=0x0000 
major-opcode=0x3e
000:>:0x0023:11380: Reply to GetImage: depth=0x18 32-bit values got=0x00000b15 
visual=None(0x00000000)
14161 read(5, "\16\270\"[EMAIL PROTECTED]>\0\224DE\10\240C\37\10\2\0\0\300"..., 
32) = 32
14161 read(5, "\1\30#\0\25\v\0\0\0\0\0\0`\202\36\10\310\270\254\277<s"..., 32) 
= 32
14161 readv(5, [{"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"..., 
11348}, {"", 0}], 2) = 11348
14161 fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
14161 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) 
= 0xb7f09000
14161 write(1, "Error: /unknownerror", 20) = 20
14161 write(1, " in --fill--", 12)      = 12
14161 write(1, "\nOperand stack:\n   --nostringval"..., 128) = 128
14161 write(1, "val--   2   %stopped_push   --no"..., 128) = 128
14161 write(1, "array_pop   1888   1   3   %opar"..., 128) = 128
14161 write(1, "ec_pop   .runexec2   --nostringv"..., 128) = 128
14161 write(1, "\n   --dict:1162/1684(ro)(G)--   "..., 124) = 124
14161 write(5, ">[EMAIL PROTECTED]@\1\1\0\200\1\0\0\0\0\0\0\0\0\25\v\1"..., 32) 
= 32
000:<:0024: 28: Request(62): CopyArea src-drawable=0x0140013f 
dst-drawable=0x014000e7 gc=0x01800001 src-x=0 src-y=0 dst-x=0 dst-y=0 
width=2837 height=1
000:<:0025:  4: Request(43): GetInputFocus 
000:>:0025: Event NoExposure(14) drawable=0x014000e7 minor-opcode=0x0000 
major-opcode=0x3e
000:>:0x0025:32: Reply to GetInputFocus: revert-to=PointerRoot(0x01) 
focus=0x014000e2
14161 read(5, "[EMAIL PROTECTED]>\0\224DE\10\240C\37\10\2\0\0\300"..., 32) = 32
14161 read(5, "[EMAIL PROTECTED]"..., 32) = 32
14161 write(2, "GPL Ghostscript SVN PRE-RELEASE ", 32) = 32
14161 write(2, "8.61", 4)               = 4
14161 write(2, ": ", 2)                 = 2
14161 write(2, "Unrecoverable error, exit code 1"..., 33) = 33
14161 write(5, "[EMAIL PROTECTED] [EMAIL PROTECTED]"..., 56) = 56
000:<:0026: 44: Request(25): SendEvent propagate=false(0x00) 
destination=0x014000e7 event-mask=0 ClientMessage(33) format=0x20 
window=0x014000e7 type=0x192("DONE") 
data=0x02,0x00,0x80,0x01,0x3f,0x01,0x40,0x01,0x00,0xbe,0xc6,0xbf,0x18,0xbe,0xc6,0xbf,0x58,0xbd,0xc6,0xbf;
000:<:0027:  8: Request(60): FreeGC gc=0x01800000
000:<:0028:  4: Request(43): GetInputFocus 
000:>:0x0028:32: Reply to GetInputFocus: revert-to=PointerRoot(0x01) 
focus=0x014000e2
14161 read(5, "\1\1([EMAIL PROTECTED]"..., 32) = 32
14161 shutdown(5, 2 /* send and receive */) = 0
14161 close(5)                          = 0

Interestingly, in the case where ghostscript does *not* fail, it never
issues GetImage X11 rpcs.  It is as though there is a separate code path
for large images, and that code path is broken.

** Affects: ghostscript (Ubuntu)
     Importance: Undecided
         Status: New

-- 
ghostscript errors when zooming in evince/gv
https://bugs.launchpad.net/bugs/159571
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to