[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#619306: ghostscript segfaults on some eps file



tags 619306 + confirmed
quit

Hi,

Alexandre Duret-Lutz wrote:

> Running gs on the attached file ends with a segfault.
> 
> % gs -dSAFER arch-SPOT.eps

I can't reproduce this with upstream gs (I'm probably using the wrong
build-time parameters) but I can easily reproduce it with the ghostscript
Debian package.  Backtrace:

 Program received signal SIGSEGV, Segmentation fault.
 0x0000000000000000 in ?? ()
 (gdb) bt
 #0  0x0000000000000000 in ?? ()
 #1  0x00007ffff7fc4206 in cmsEvalLUT (Lut=0x887920, In=<value optimized out>, Out=0x7fffffffc970)
     at cmslut.c:512
 #2  0x00007ffff7fcb741 in NormalXFORM (p=0x887770, in=<value optimized out>, out=<value optimized out>, Size=1)
     at cmsxform.c:210
 #3  0x00007ffff7fbab71 in _cmsComputePrelinearizationTablesFromXFORM (h=0x7fffffffcb10, nTransforms=1, 
     Grid=0x8895c0) at cmsgmt.c:1121
 #4  0x00007ffff7fce217 in _cmsPrecalculateDeviceLink (h=0x887770, dwFlags=<value optimized out>)
     at cmssamp.c:271
 #5  0x00007ffff7fcc8bd in cmsCreateProofingTransform (InputProfile=<value optimized out>, InputFormat=196618, 
     OutputProfile=0x580660, OutputFormat=262170, ProofingProfile=<value optimized out>, nIntent=1, 
     ProofingIntent=3, dwFlags=9216) at cmsxform.c:1537
 #6  0x00007ffff7fccfbb in cmsCreateTransform (Input=<value optimized out>, InputFormat=<value optimized out>, 
     Output=<value optimized out>, OutputFormat=<value optimized out>, Intent=<value optimized out>, 
     dwFlags=<value optimized out>) at cmsxform.c:1618
 #7  0x00007ffff75eb3d7 in gsicc_get_link_profile (pis=<value optimized out>, dev=<value optimized out>, 
     gs_input_profile=0x885bf0, gs_output_profile=0x5b1c10, rendering_params=0x7fffffffccf0, memory=0x4028c8, 
     include_softproof=0) at ./base/gsicc_cache.c:592
 #8  0x00007ffff75e82f7 in gx_remap_ICC (pcc=0x6d1b00, pcs=0x445ba8, pdc=0x770db0, pis=0x428d58, dev=0x4903b8, 
     select=gs_color_select_texture) at ./base/gsicc.c:347
 #9  0x00007ffff7529b8a in gx_remap_CIEA (pc=0x6d1b00, pcs=0x445af8, pdc=0x770db0, pis=0x428d58, dev=0x4903b8, 
     select=gs_color_select_texture) at ./base/gsciemap.c:665
 #10 0x00007ffff77862bc in gx_remap_color (pgs=0x428d58) at ./base/gxcmap.c:553
 #11 0x00007ffff7778cb8 in gs_text_begin (pgs=0x428d58, text=0x7fffffffce60, mem=0x4028c8, ppte=0x7fffffffcf48)
     at ./base/gstext.c:262
 #12 0x00007ffff7779015 in gs_xyshow_begin (pgs=0x428d58, str=<value optimized out>, size=<value optimized out>, 
     x_widths=0x882b08, y_widths=0x0, widths_size=6, mem=0x4028c8, ppte=0x7fffffffcf48) at ./base/gstext.c:413
 #13 0x00007ffff74f1777 in moveshow (i_ctx_p=0x444d50, have_x=1, have_y=0) at ./psi/zcharx.c:113
 #14 0x00007ffff75592eb in interp (pi_ctx_p=0x402388, pref=<value optimized out>, perror_object=0x7fffffffde20)
     at ./psi/interp.c:1263

In other words, the Device2PCS->CLut16params.Interp3D callback passed
to cmsEvalLUT is null.  In fact, the entire CLut16params struct
consists of zeroes.  The relevant Device2PCS structure has few nonzero
fields:

	.wFlags = 584,
	.InputChan = 3,
	.OutputChan = 3,
	.OutputEntries = 2,
	.L2 = {0x72ea80, 0x72efc0, 0x729e70, 0, ...},
	.Out16params = {
		.nSamples = 2,
		.nInputs = 1,
		.nOutputs = 1,
		.Domain = 1,
	},
	.Mat4 = {
		.v = {
			[0] = {.n = {14870, 11683, 5040},},
			[1] = {.n = {7908, 22229, 2630},},
			[2] = {.n = {467, 2684, 23883},},
		}
	},
	.L4 = {0x78ebc0, 0x78efd0, 0x78f3e0, 0, ...},
	.L4params = {
		.nSamples = 512,
		.nInputs = 1,
		.nOutputs = 1,
		.Domain = 511,
	},
	.L4Entries = 512

That structure is filled by cmsReadICCLut, which calls
ReadLUT_A2B(Icc, NewLUT, offset, sig) to fill it.  What this all means
is beyond my expertise.  Hints?

$ dpkg-query -W liblcms1
liblcms1	1.18.dfsg-1.2



Reply to: