Commits
David Young committed 7a0a2a0b5dc
H5F_vfd_swmr_reader_end_of_tick(), compares both new and old shadow indices and calls H5PB_remove_entry() on each entry that was in the old index but is not in the new. Ever since H5PB_remove_entry() started removing shadow index entries, it has been possible for H5F_vfd_swmr_reader_end_of_tick() to walk past the end of the new shadow index or even to skip entries in the new index. Sometimes an assertion failed when that happened. I have restructured the code in H5F_vfd_swmr_reader_end_of_tick() so that it compares the old and new indices, gathering a list of removed pages, in one step. In the next step, it processes the list of removed pages, calling H5PB_remove_entry() on each page. In the step after that, it notifies the metadata cache of each removed page. This fixes the bug I described, above.