In Android 12 (upcoming)
New features
- Support Custom Allocators. This allows developers to instrument their applications to report memory allocations / frees that are not done through the malloc-based system allocators.
Bugfixes
- Fix problems with allocations done in signal handlers using SA_ONSTACK.
- Fixed heapprofd for multi API. A 64-bit heapprofd service can now correctly profile a 32-bit target.
- Fixed a bug where specifying a sampling rate of 0 would crash the target process.
In Android 11
New features
- Allow to specify whether profiling should only be done for existing processes or only for newly spawned ones using
no_startup
or no_running
in HeapprofdConfig
. - Allow to get the number of bytes that were allocated at a callstack but then not used.
- Allow to dump the maximum, rather than at the time of the dump using
dump_at_max
in HeapprofdConfig
. - Allow to specify timeout (
block_client_timeout_us
) when blocking mode is used. This will tear down the profile if the client would be blocked for longer than this. - Try to auto-detect if a process uses
vfork(2)
or clone(2)
with CLONE_VM
. In Android 10, doing memory operations in a vfork-ed child (in violation of POSIX) would tear down the parent's profiling session early.
Bugfixes
- Fixed heapprofd on x86.
- Fixed issue with calloc being incorrectly sampled.
- Remove benign
ERROR 2
bottom-most frame on ARM32.