Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc, v5.0.2 |
|
#
e2caf0e7 |
| 08-Nov-2017 |
Matthew Dillon <dillon@apollo.backplane.com> |
libc and pthreads - Fix atfork issues with nmalloc, update dmalloc
* Implement atfork handling for nmalloc. As part of this, refactor some of nmalloc.
* Remove ZERO_LENGTH_PTR from nmalloc. Ins
libc and pthreads - Fix atfork issues with nmalloc, update dmalloc
* Implement atfork handling for nmalloc. As part of this, refactor some of nmalloc.
* Remove ZERO_LENGTH_PTR from nmalloc. Instead, force 0-byte allocations to allocate 1 byte. The standard requires unique pointers to be returned.
* For now go back to a single depot lock instead of a per-zone lock. It is unclear whether multi-threaded performance will suffer or not, but its the only way to implement atfork handling.
* Implement proper atfork interlocks for nmalloc via pthreads to avoid corruption when heavily threaded programs call fork().
* Bring dmalloc up to date in various ways, including properly implementing a minimum 16-byte alignment for allocations >= 16 bytes, and atfork handling. Also use a global depot lock for the same reason we use it in nmalloc, and implement a front-end magazine shortcut for any allocations <= 2MB.
Reported-by: mneumann
show more ...
|