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