mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Write to memory management log
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@963 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										21
									
								
								astmm.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								astmm.c
									
									
									
									
									
								
							| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user