Closed GoogleCodeExporter closed 9 years ago
valgrind of Kevin's scene didn't turn up any complaints about Alembic.
Original comment by miller.lucas
on 18 Nov 2011 at 2:57
I've been hunting this bug where a bad cache is generated. I'm now 70%
convinced it's an hdf5 bug. On the read side was have an HDF5 group (our
compound property) and we are asking for the hdf5 group that stores the
after-the-first sample values of the property childBnds. In my test case this
is "LarmPvMidOriNUL/.prop/.xform/.childBnds.smpi". The hdf5 code fails to be
able to resolve the HDF5 hard link to actual link's destination so it can't
open the smpi group.
I've been debugging this on the write side, and I've been trying to see how an
hdf5's group's hard links are created. At a certain point hdf5 has code that
says "ok, you have too many hard links in the parent group, I'll change the
parent group to use "dense link storage". If you're curious you can see this
in H5G_obj_insert ():
/* If there's still a small enough number of links, use the 'link' message */
/* (If the encoded form of the link is too large to fit into an object
* header message, convert to using dense link storage instead of link messages)
*/
I don't think this actual routine has a bug... my hunch is that some other bit
of hdf5 has similar logic though for adding other things into the parent group
(maybe hdf5 attributes or datatypes. not certain), and this other location has
a bad interaction.
What i have done though, is I changed my hdf5 so that the switch over to "dense
link storage" happens sooner (there's a simple link.nlinks < ginfo.max_compact
check that tweaked by adding 4). I realize that is a total hack, but in effect
I'm causing hdf5 to convert to dense link storage sooner, and with this change
my test case creates a valid cache. I haven't changed anything in Alembic at
all, so we aren't keeping any hdf5 objects open differently.
This leads me to strongly suspect that some bit of logic that relates to group
conversion operations inside of hdf5 has a bug.
Original comment by cookingw...@gmail.com
on 21 Dec 2011 at 9:24
That is very compelling, luckily we don't need to to hack HDF5, we could use:
http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetAttrPhaseChange
And if this isn't just a problem for attrs we might need to investigate:
http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetLinkPhaseChange
http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetSharedMesgPhaseChang
e
Original comment by miller.lucas
on 22 Dec 2011 at 1:42
This should be at least partially fixed in 1.0.4 with the use of set link phase
change.
Original comment by miller.lucas
on 24 Jan 2012 at 1:36
Original comment by miller.lucas
on 24 Jan 2012 at 1:41
Original issue reported on code.google.com by
ble...@gmail.com
on 18 Nov 2011 at 2:48