Hi. I'm working with a Fedora port of Opticks-18810, and have run
into what appear to be errors when I Open-Session a saved session.
The session consisted of a geotiff AVIRIS image, some spectral
signatures, and an esri shapefile of their locations.
1. Its a moderately sized image -- 500 MB compressed (created
elsewhere with Gdal geotiff COMPRESS=DEFLATE) or 1 GB not
compressed. Opticks reads the image okay in a new session, but takes
an inordinate amount of time to restore it from a saved session,
giving no Progress feedback, consuming 100% cpu (1 thread), and
appearing to be frozen. It isn't though, and after maybe five
minutes the image is read and Opticks proceeds to crash with
2. The first few appeared to be simple cast errors, static_cast
where dynamic_cast was probably intended. Once fixed they invited a
3. When is an Interface not an Interface?
The question arises in context of
SessionItem* pSessionItem = item.mpItem;
string("SessionItem '" + item.mType + "' not successfully
SessionItemDeserializerImp deserializer(mRestoreSessionPath +
"/" + filename(item), item.mBlockSizes);
if (pSessionItem->deserialize(deserializer) == false) ///
crash here, deserialize() is pure virtual
item.mpItem = NULL;
The problem being that SessionItem is an Interface and
SessionItem::deserialize() is pure virtual. I'm thinking that
someone assumed item.mpItem was created as a SessionItemImp or
better, something that actually inherits from SessionItem.
SessionItemImp is not a subclass of SessionItem, and making it one
raises a raft of other issues. No doubt fixable, but I suspect I'm
dealing either with an out-of-date code base, or an un-exercised
execution path. I see we are gunning for an Opticks-5.0.0 and don't
wish to fix something that is no longer broke.
How might I proceed?
“Civilization is a race between education and catastrophe.”