Angus Gratton
0f5cae0218
heap: Change test_multi_heap_on_host multi-config to bash script not Makefile
...
Hopefully fix some CI building issues with parallel builds.
2018-04-03 16:35:47 +10:00
Deomid Ryabkov
712bd1d773
Try to merge tail with next block when splitting
...
When splitting a memory block, check if the next block is free.
If it is, then just extend it upwards instead of creating a new block.
This fixes a bug where when shrinking existing allocations would result in irreversible free space fragmentation.
When testing on the host, test all the poisoning configurations.
2018-04-03 16:35:47 +10:00
Angus Gratton
f7eecfcc67
heap: Fix bug when realloc moves data between heaps
...
When realloc-ing to a smaller buffer size which ends up allocated in a different heap, the heap
structure is corrupted. This can only happen:
* If heap checking is Comprehensive (meaning buffers are never shrunk in place) and the heap the buffer was originally allocated in is full.
* Calling heap_caps_realloc() to deliberately move a buffer to a different capabilities type, and shrink it at the same time.
Probable fix for https://github.com/espressif/esp-idf/issues/1582
Probably the same issue:
https://www.esp32.com/viewtopic.php?f=2&t=4583
https://www.esp32.com/viewtopic.php?f=13&t=3717
2018-02-09 19:24:37 +08:00
Kewal
5afafb0050
fix typo for heap cap free size
2017-12-27 16:54:22 +08:00
Mahavir Jain
8ed44ace4b
heap_trace: fix bug in realloc for copying trace record
...
Closes https://github.com/espressif/esp-idf/issues/1354
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2017-12-27 16:54:15 +08:00
Ivan Grokhotkov
5fe91ae7cd
Merge branch 'bugfix/cpp_guards' into 'master'
...
Add C++ guards to freertos/ringbuf.h, heap headers
See merge request !1552
2017-11-22 22:26:26 +08:00
Angus Gratton
a556e1c782
heap: Add C++ header guards to heap headers
...
Closes https://github.com/espressif/esp-idf/issues/1195
2017-11-22 10:08:50 +11:00
Angus Gratton
7a924bd85a
spi_flash: Expose an accessor the current SPI flash guard functions
...
Change places which uses g_flash_guard_default_ops to use this. Probably exact same data, but a bit
cleaner.
2017-11-20 15:54:31 +11:00
Tian Hao
e7a9ddcf72
component/heap : fix heap_region_add check bug
2017-11-16 11:10:13 +08:00
Darian Leung
fff482acd9
freertos/add C++ include guards for esp_heap_caps.h
2017-11-10 12:01:30 +08:00
Anton Maklakov
bb4838314c
doc: Add internal links for chapters and fix typos
...
Used 'git grep -i -E "see *\`[^\`]+\`[^_]"' to find the invalid links
2017-11-09 11:45:13 +08:00
Ivan Grokhotkov
dbebece1d2
Merge branch 'feature/unit-test-configs' into 'master'
...
unit-test-app: add support for testing multiple configurations
See merge request !1249
2017-10-20 14:03:53 +08:00
Angus Gratton
47aaf402b8
heap: Add heap_caps_dump() / heap_caps_dump_all() functions
...
Dump the structure of the heap for debugging purposes.
2017-10-20 11:38:24 +08:00
Ivan Grokhotkov
90bbcbcdc0
unit tests: fix warnings, build with -Werror
...
- libsodium: silence warnings
- unit tests: fix warnings
- spiram: fix warnings
- ringbuf test: enable by default, reduce delays
2017-10-19 21:35:23 +08:00
Ivan Grokhotkov
6cc8099610
Merge branch 'bugfix/malloc_failure' into 'master'
...
heap: Fix race condition causing malloc() to fail under some conditions
See merge request !1424
2017-10-19 21:30:26 +08:00
Angus Gratton
b0c5665f15
heap: Fix race condition causing malloc() to fail under some conditions
...
During a call to multi_heap_malloc(), if both these conditions were true:
- That heap only has one block large enough for the allocation
(this is always the case if the heap is unfragmented).
- Another allocation is simultaneously occurring in the same heap.
... multi_heap_malloc() could incorrectly return NULL.
This caused IDF heap_caps_malloc() and malloc() to also fail, particularly
often if only one or two heaps had space for the allocation (otherwise
heap_caps_malloc() fails over to the next heap).
2017-10-19 16:05:00 +08:00
Angus Gratton
04188d8ec7
heap: Fix spurious heap_caps_check_integrity() errors in Comprehensive mode
...
Heap was not being locked before poisoning, so heap_caps_check_integrity()
would sometimes race with checking the poison bytes and print unnecessary
errors.
Details: https://esp32.com/viewtopic.php?f=2&t=3348&p=15732#p15732
2017-10-18 15:57:52 +08:00
XiaXiaotian
5df39cd4b6
Allocate some memories in SPIRAM first.
...
Try to allocate some WiFi and LWIP memories in SPIRAM first. If
failed, try to allocate in internal RAM then.
2017-10-13 10:11:24 +08:00
Angus Gratton
dda136eab7
Merge branch 'bugfix/heap_debugging_cleanup' into 'master'
...
Heap debugging docs cleanup & convenience functions
See merge request !1347
2017-10-10 14:59:54 +08:00
Angus Gratton
f0d7cfdafe
heap: Add new heap_caps_check_integrity_all() & heap_caps_check_integrity_addr() debugging functions
...
Easier to either check all heaps, or focus on checking a particular region.
2017-10-10 16:19:30 +11:00
Angus Gratton
bb8ba76604
Merge branch 'bugfix/multi_heap_get_info_typo' into 'master'
...
Fix multi_heap_get_info alias (from github)
See merge request !1357
2017-10-10 13:14:09 +08:00
Angus Gratton
ec85f9fc3f
heap: Fix documentation references to multi_get_heap_info()
2017-10-09 14:42:31 +11:00
Jeroen Domburg
740f8a79f0
Add logic to make external RAM usable with malloc()
2017-09-28 17:17:50 +08:00
Deomid Ryabkov
882f164e7c
Fix multi_heap_get_info alias
2017-09-26 15:00:47 +01:00
Angus Gratton
1773770f44
Merge branch 'feature/multi_heap_assert' into 'master'
...
multi_heap: Print the problem address when aborting due to heap corruption
See merge request !1277
2017-09-25 09:51:14 +08:00
Tian Hao
b54719d00f
component/bt : fix bluetooth controller enable limit && release memory when de-initialize bluetooth controller
...
1. fix bluetooth controller enable limit
2. release memory when de-initialize bluetooth controller
3. fix heap_caps_add_region limit
2017-09-19 21:14:28 +08:00
Angus Gratton
959462ffb6
multi_heap_poisoning: Use MULTI_HEAP_STDERR_PRINTF (ets_printf) to print heap errors
...
Needed because normal printf() can trigger a malloc() (for standard stream locks) which
then re-triggers this check.
2017-09-18 16:54:28 +10:00
Angus Gratton
76d8190444
multi_heap: Print the problem address when aborting due to heap corruption
...
New multi_heap code has proven effective at aborting when buffer overruns occur,
but it's currently hard to debug the stack traces from these failures.
2017-09-18 16:54:23 +10:00
Jeroen Domburg
875ae6a134
Add option to allocate external RAM using heap_alloc_caps
2017-09-14 10:47:44 +08:00
Angus Gratton
72995bfcec
doc: Add docs for heap trace & poisoning
2017-09-07 16:32:05 +10:00
Angus Gratton
1c7b8aa3a5
Heap tracing support
2017-09-07 16:32:05 +10:00
Angus Gratton
5c417963eb
multi_heap: Add heap poisoning features
2017-09-07 16:32:05 +10:00
Angus Gratton
5222428dde
unit tests: Check heap integrity after each test, check for obvious leaks
2017-09-07 16:32:05 +10:00
Angus Gratton
1cb0f30933
heap_caps: Add heap_caps_check_integrity() function
2017-09-07 16:32:05 +10:00
Angus Gratton
5361c08989
heap: Support adding new heap regions at runtime
...
To facilitate this, the list of registered heap regions is now a linked list
(allowing entries to be appended at runtime.)
2017-09-05 14:07:02 +10:00
Angus Gratton
0feb40833a
heap_caps: Allow for possibility a region is too small to register a heap
...
May happen due to sdkconfig, static allocation of RAM.
Closes https://github.com/espressif/esp-idf/issues/802
2017-07-19 17:24:24 +10:00
Angus Gratton
ad60c30de0
heap: Rename memory "tags" to "types" to avoid confusion w/ old tag allocator API
2017-07-10 17:46:03 +08:00
Angus Gratton
71c70cb15c
heap: Refactor heap regions/capabilities out of FreeRTOS
...
Remove tagged heap API, rename caps_xxx to heap_caps_xxx
Also includes additional heap_caps_xxx inspection functions.
2017-07-10 17:46:03 +08:00
Angus Gratton
5ee49fd311
heap: Add new multi_heap heap implementation to replace FreeRTOS-based tagged heaps
2017-07-10 17:46:03 +08:00