# 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.