On Wed, Feb 13, 2013 at 01:48:16PM +0000, Martin Crossley wrote:
> > i'm really curious why it doesn't happen on amd64 and wether it
> > only happens on 32bit archs
>
> I wonder if this recent post on bugs.ghostscript.com could be
> related: http://bugs.ghostscript.com/show_bug.cgi?id=693612
> "Indeterministic seg fault with 32bit build":
[...]
Not, what happens for us is something different, and it's deterministic
(but only on 32 bit archs). And it's a heisenbug (no segfault when
running in gdb with a breakpoint set for gsicc_set_device_profile()).
So I added some debugging output:
in cups_set_color_info():
...
pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
dprintf2("DEBUG2: (2) pdev = %p, pdev->icc_struct = %p\n", pdev,
pdev->icc_struct);
code = gsicc_set_device_profile(pdev, pdev->memory->non_gc_memory,
(char *)DEFAULT_GRAY_ICC, gsDEFAULTPROFILE);
...
and in gsicc_set_device_profile():
int
gsicc_set_device_profile(gx_device * pdev, gs_memory_t * mem,
char *file_name, gsicc_profile_types_t
pro_enum)
{
dprintf2("DEBUG2: gsicc_set_device_profile: (0) pdev = %p,
pdev->icc_struct=%p\n", pdev, pdev->icc_struct);
...
There's some more debugging output, but the above two bits matter.
They produce the following output:
DEBUG2: (2) pdev = 0x80a26034, pdev->icc_struct = 0x8450b098
DEBUG2: gsicc_set_device_profile: (0) pdev = 0x80a26034, pdev->icc_struct=0x0
Lovely, isn't it?
Ciao,
Kili