diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-05-06 00:01:32 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-05-06 00:01:32 +0000 |
commit | 0fba1dcd74d4df252f851eab7d01510e648db312 (patch) | |
tree | bde30e480218f4f4cfa44bbb8885dc6bc897069a /astmm.c | |
parent | f36b76d24a44a688ec18b0c3ffc01f7244d1ad13 (diff) |
Write to memory management log
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@963 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'astmm.c')
-rwxr-xr-x | astmm.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -19,7 +19,10 @@ #include <stdio.h> #include <string.h> #include <pthread.h> +#include <time.h> #include <asterisk/cli.h> +#include <asterisk/logger.h> +#include <asterisk/options.h> #define SOME_PRIME 563 @@ -37,6 +40,8 @@ #undef strndup #undef free +static FILE *mmlog; + static struct ast_region { struct ast_region *next; char file[40]; @@ -75,6 +80,8 @@ static inline void *__ast_alloc_region(size_t size, int which, const char *file, pthread_mutex_unlock(®lock); if (!reg) { fprintf(stderr, "Out of memory :(\n"); + if (mmlog) + fprintf(stderr, "%ld - Out of memory\n", time(NULL)); } return ptr; } @@ -119,9 +126,13 @@ static void __ast_free_region(void *ptr, const char *file, int lineno, const cha pthread_mutex_unlock(®lock); if (reg) { free(reg); - } else + } else { fprintf(stderr, "WARNING: Freeing unused memory at %p, in %s of %s, line %d\n", ptr, func, file, lineno); + if (mmlog) + fprintf(mmlog, "%ld - WARNING: Freeing unused memory at %p, in %s of %s, line %d\n", time(NULL), + ptr, func, file, lineno); + } } void *__ast_calloc(size_t nmemb, size_t size, const char *file, int lineno, const char *func) @@ -152,6 +163,9 @@ void *__ast_realloc(void *ptr, size_t size, const char *file, int lineno, const if (!len) { fprintf(stderr, "WARNING: Realloc of unalloced memory at %p, in %s of %s, line %d\n", ptr, func, file, lineno); + if (mmlog) + fprintf(mmlog, "%ld - WARNING: Realloc of unalloced memory at %p, in %s of %s, line %d\n", + time(NULL), ptr, func, file, lineno); return NULL; } } @@ -314,6 +328,11 @@ void __ast_mm_init(void) { ast_cli_register(&show_memory_allocations_cli); ast_cli_register(&show_memory_summary_cli); + mmlog = fopen("/var/log/asterisk/mmlog", "a+"); + if (option_verbose) + ast_verbose("Asterisk Malloc Debugger Started (see /var/log/mmlog)\n"); + if (mmlog) + fprintf(mmlog, "%ld - New session\n", time(NULL)); } #endif |