If the cache failed to load, it is initialized as a defaultdict and all mtimes compare as 0. If the cache did load, however, then an ordinary dict was used, and if new icon directories appeared on the system since the cache creation, they would raise a KeyError and Open With would not load data. Fix by using a defaultdict in all cases, but initializing with the contents of the cache if possible. Discovered when crazy applications added crazy subdirectories in /usr/share/pixmaps (???) and suddenly calibre failed to do the right thing, but the same should apply if the system adds a new icon theme.
calibre

calibre is an e-book manager. It can view, convert, edit and catalog e-books in all of the major e-book formats. It can also talk to e-book reader devices. It can go out to the internet and fetch metadata for your books. It can download newspapers and convert them into e-books for convenient reading. It is cross platform, running on Linux, Windows and macOS.
For more information, see the calibre About page
Screenshots
Usage
See the User Manual
Development
Setting up a development environment for calibre
A tarball of the source code for the current calibre release.
Bugs
Bug reports and feature requests should be made in the calibre bug tracker at launchpad. GitHub is only used for code hosting and pull requests.
Support calibre
calibre is a result of the efforts of many volunteers from all over the world. If you find it useful, please consider contributing to support its development. Donate to support calibre development.