Opened 13 years ago

Closed 13 years ago

#3834 closed defect (fixed)

segfault on transparent layers with new renderers

Reported by: tbonfort Owned by: tbonfort
Priority: normal Milestone: 6.0 release
Component: Renderer API Version: unspecified
Severity: normal Keywords:
Cc: havatv

Description

When creating opacity!=100 layers, we clone the current outputformat and use the cloned copy to create the temporary image that will be merged onto the main image.

This behavior is problematic because the symbolset will contain symbols who's internal cache reference the cloned outputformat, which is problematic as the cloned outputformat is destroyed once the transparent layer is finished rendering, and will thus cause errors when we are freeing the symbol.

see also #3828 which results from the current issue.

Change History (3)

comment:1 by tbonfort, 13 years ago

An immediate fix is to not clone the outputformat when creating a temp image for the transparent layer. As there is actually no reason to do so in this case (we are just overriding the transparent property) I will commit that fix.

But this does not solve the deeper issue in which we end up with symbols that can reference an invalid outputformat->vtable. Ideally, when freeing an outputformat, we should check that there are no symbols referencing it and perform the cleanup on them before destroying the vtable.

comment:2 by tbonfort, 13 years ago

issue for transparent layers committed in r11546

comment:3 by tbonfort, 13 years ago

Resolution: fixed
Status: newclosed

issue for alternate renderers fixed in r11558.

closing this as I don't think there are other cases where this can happen in the normal program flow. It might bight somebody doing fishy things in mapscript, we'll see.

Note: See TracTickets for help on using tickets.