Skip to content

EOFException when initializing Imaris .ims file #4377

@melissalinkert

Description

@melissalinkert

https://zenodo.org/records/17406102 includes an .ims file that cannot be read with 8.3.0:

$ showinf -no-upgrade tmp.ims 
Checking file format [Bitplane Imaris 5.5 (HDF)]
Initializing reader
ImarisHDFReader initializing tmp.ims
Exception in thread "main" java.io.IOException: java.io.EOFException: Reading tmp.ims at 4776428349165719766 file length = 4776428349165719766
	at ucar.nc2.NetcdfFiles.open(NetcdfFiles.java:281)
	at ucar.nc2.NetcdfFiles.open(NetcdfFiles.java:245)
	at ucar.nc2.NetcdfFiles.open(NetcdfFiles.java:218)
	at loci.formats.services.NetCDFServiceImpl.init(NetCDFServiceImpl.java:311)
	at loci.formats.services.NetCDFServiceImpl.setFile(NetCDFServiceImpl.java:104)
	at loci.formats.in.ImarisHDFReader.initFile(ImarisHDFReader.java:260)
	at loci.formats.FormatReader.setId(FormatReader.java:1480)
	at loci.formats.ImageReader.setId(ImageReader.java:864)
	at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:692)
	at loci.formats.tools.ImageInfo.testRead(ImageInfo.java:1054)
	at loci.formats.tools.ImageInfo.main(ImageInfo.java:1165)
Caused by: java.io.EOFException: Reading tmp.ims at 4776428349165719766 file length = 4776428349165719766
	at ucar.unidata.io.RandomAccessFile.readFully(RandomAccessFile.java:840)
	at ucar.unidata.io.RandomAccessFile.readFully(RandomAccessFile.java:819)
	at ucar.unidata.io.RandomAccessFile.readString(RandomAccessFile.java:1564)
	at ucar.unidata.io.RandomAccessFile.readString(RandomAccessFile.java:1550)
	at ucar.nc2.iosp.hdf5.FractalHeap.readIndirectBlock(FractalHeap.java:456)
	at ucar.nc2.iosp.hdf5.FractalHeap.readIndirectBlock(FractalHeap.java:517)
	at ucar.nc2.iosp.hdf5.FractalHeap.<init>(FractalHeap.java:192)
	at ucar.nc2.internal.iosp.hdf5.H5objects$DataObject.processAttributeInfoMessage(H5objects.java:423)
	at ucar.nc2.internal.iosp.hdf5.H5objects$DataObject.<init>(H5objects.java:407)
	at ucar.nc2.internal.iosp.hdf5.H5objects$DataObject.<init>(H5objects.java:238)
	at ucar.nc2.internal.iosp.hdf5.H5objects.readDataObject(H5objects.java:235)
	at ucar.nc2.internal.iosp.hdf5.H5headerNew.getDataObject(H5headerNew.java:2265)
	at ucar.nc2.internal.iosp.hdf5.H5objects$DataObjectFacade.<init>(H5objects.java:108)
	at ucar.nc2.internal.iosp.hdf5.H5objects.readGroupNew(H5objects.java:2154)
	at ucar.nc2.internal.iosp.hdf5.H5objects.access$700(H5objects.java:27)
	at ucar.nc2.internal.iosp.hdf5.H5objects$H5Group.<init>(H5objects.java:200)
	at ucar.nc2.internal.iosp.hdf5.H5objects$H5Group.<init>(H5objects.java:158)
	at ucar.nc2.internal.iosp.hdf5.H5objects.readH5Group(H5objects.java:155)
	at ucar.nc2.internal.iosp.hdf5.H5headerNew.makeNetcdfGroup(H5headerNew.java:524)
	at ucar.nc2.internal.iosp.hdf5.H5headerNew.read(H5headerNew.java:254)
	at ucar.nc2.internal.iosp.hdf5.H5iospNew.build(H5iospNew.java:126)
	at ucar.nc2.NetcdfFiles.build(NetcdfFiles.java:835)
	at ucar.nc2.NetcdfFiles.open(NetcdfFiles.java:770)
	at ucar.nc2.NetcdfFiles.open(NetcdfFiles.java:278)
	... 10 more

That initially looks like the file may be truncated, but other tools (e.g. h5dump/h5ls) can read it just fine. Upgrading cdm-core from 5.6.0 to 5.9.1 did not fix this, and I don't see any relevant open issues in https://github.com/Unidata/netcdf-java/issues. Given the stack trace, I'd suspect this is an issue somewhere in netcdf-java. A next step would be to try reading with JHDF, and/or investigate a bit further then report upstream on netcdf-java.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions