[Insight-developers] RE: ReleaseDataFlagOn() and some minipipeline filters. Seg.Fault .

Miller, James V (Research) millerjv at crd . ge . com
Sun, 31 Aug 2003 15:44:59 -0400


In the case of mini-pipelines, the first node in the mini-pipeline should
not set ReleaseDataOn().  The input to the first node in the mini-pipeline
will be handled by the standard pipeline mechanism when the "outer" filter
executes.  The filter writer can turn ReleaseDataOn() on filters 2-N of
their mini-pipeline without concern for the "outer" filter and the rest of
the pipeline.

Jim

> -----Original Message-----
> From: Luis Ibanez [mailto:luis . ibanez at kitware . com]
> Sent: Sunday, August 31, 2003 11:29 AM
> To: Brad King
> Cc: insight-dev-list; Miller, James V (Research); Joshua Cates
> Subject: ReleaseDataFlagOn() and some minipipeline filters. Seg.Fault.
> 
> 
> 
> Hi,
> 
> Tracking a crash on one of the volview plugins I found that some
> filters do not allow to call ReleaseDataFlagOn() on their immediate
> predecessors on the pipeline.
> 
> Filters like the AntiAliasImageFilter, which derives from the
> itkSparseFieldLevelSetImageFilter, have internal filters that
> call "Update()" as part of their internal processing.  When
> this internal Update() call is issued, the predecessor filter
> will release its output data (if the ReleaseDataFlag is on),
> making that any subsequent access to the input image in the
> SparseFieldLevelSetImageFilter will result in invalid memory
> access.
> 
> At this point of the release process,  it only seems to be worth
> to log this as an issue in GNATS, and probably add Doxygen
> warning/comments in the filters having internal pipelines.
> 
> On the long run, these filters could Check if their predecessors
> have ReleseaDataFlagOn(), and disable it until the total filter
> is executed (not only part of its internal pipeline).
> 
> 
>    Luis
> 
> 
>