+* 💥 [#2567](https://github.com/square/leakcanary/issues/2567) The analysis failed with *"Object id <id> not found in heap dump"* on heap dumps that contain a class which failed to load. Excluding a dependency that provides a superclass is one way to get there: the subclass can no longer be loaded, but ART still creates the array class for it, points that array class's `$class$componentType` at the class object that failed and keeps it in its class loader's class table, while the heap dumper skips it and never writes it out. The heap dump then names an object it doesn't contain, and reading the static fields of the array class surfaced a reference to it. Static fields pointing at an object missing from the heap dump are now skipped, which is what reading GC roots and object array elements already did. Reproduced on Android 14 and Android 16, so this is not limited to the Android 13 the issue was reported against.
0 commit comments