When running the fuzz tests under -fsanitize=integer I stumbled upon this:
0coins.cpp:114:22: runtime error: unsigned integer overflow: 0 - 96 cannot be represented in type 'unsigned long'
Note that cachedCoinsUsage is decreased despite being zero which causes it to wrap around. This in turn makes CCoinsViewCache::DynamicMemoryUsage start returning bogus values.
Nothing high priority of course, but perhaps worth fixing? :)