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

Reply via email to