core: Backport compatible MALLOC_DEBUG changes.

* Add support for MALLOC_DEBUG and DEBUG_CHAOS to be used together.
* Add utils/astmm.c to .gitignore.
* Fix MALLOC_DEBUG variant of __ast_vasprintf.  This function called
  va_end(ap) upon allocation failure.  This is incorrect since ap is
  passed as an argument.

Change-Id: I9f27ced4ce3cbe4b39547a67f994fdff491978c0
This commit is contained in:
Corey Farrell
2018-03-15 05:49:49 -04:00
parent c78f4b8e61
commit eb699f3631
3 changed files with 3 additions and 3 deletions

View File

@@ -78,11 +78,9 @@
<support_level>extended</support_level>
</member>
<member name="MALLOC_DEBUG" displayname="Keep Track of Memory Allocations">
<conflict>DEBUG_CHAOS</conflict>
<support_level>core</support_level>
</member>
<member name="DEBUG_CHAOS" displayname="Randomly FAIL memory allocations or other operations">
<conflict>MALLOC_DEBUG</conflict>
<support_level>core</support_level>
</member>
<member name="ADDRESS_SANITIZER" displayname="Address Sanitizer">

View File

@@ -227,6 +227,8 @@ static void *__ast_alloc_region(size_t size, const enum func_type which, const c
unsigned int *fence;
int hash;
DEBUG_CHAOS_RETURN(DEBUG_CHAOS_ALLOC_CHANCE, NULL);
if (!(reg = malloc(size + sizeof(*reg) + sizeof(*fence)))) {
astmm_log("Memory Allocation Failure - '%d' bytes at %s %s() line %d\n",
(int) size, file, func, lineno);
@@ -664,7 +666,6 @@ int __ast_vasprintf(char **strp, const char *fmt, va_list ap, const char *file,
size = vsnprintf(&s, 1, fmt, ap2);
va_end(ap2);
if (!(*strp = __ast_alloc_region(size + 1, FUNC_VASPRINTF, file, lineno, func, 0))) {
va_end(ap);
return -1;
}
vsnprintf(*strp, size + 1, fmt, ap);

1
utils/.gitignore vendored
View File

@@ -3,6 +3,7 @@ aelparse
aelparse.c
ast_expr2.c
ast_expr2f.c
astmm.c
astman
astcanary
astdb2bdb