mirror of
https://github.com/nginx/nginx.git
synced 2024-11-28 08:09:00 +08:00
malloc() debugging on MacOSX.
This commit is contained in:
parent
b9c859e6d5
commit
efc6ecab82
@ -203,9 +203,7 @@ main(int argc, char *const *argv)
|
||||
ngx_cycle_t *cycle, init_cycle;
|
||||
ngx_core_conf_t *ccf;
|
||||
|
||||
#if (NGX_FREEBSD)
|
||||
ngx_debug_init();
|
||||
#endif
|
||||
|
||||
if (ngx_strerror_init() != NGX_OK) {
|
||||
return 1;
|
||||
|
@ -46,10 +46,10 @@
|
||||
|
||||
#else
|
||||
|
||||
#if (NGX_FREEBSD)
|
||||
#if (NGX_HAVE_DEBUG_MALLOC)
|
||||
|
||||
#define ngx_slab_junk(p, size) \
|
||||
if (ngx_freebsd_debug_malloc) ngx_memset(p, 0xD0, size)
|
||||
if (ngx_debug_malloc) ngx_memset(p, 0xD0, size)
|
||||
|
||||
#else
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define _NGX_DARWIN_H_INCLUDED_
|
||||
|
||||
|
||||
void ngx_debug_init(void);
|
||||
ngx_chain_t *ngx_darwin_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in,
|
||||
off_t limit);
|
||||
|
||||
@ -15,5 +16,7 @@ extern int ngx_darwin_kern_osreldate;
|
||||
extern int ngx_darwin_hw_ncpu;
|
||||
extern u_long ngx_darwin_net_inet_tcp_sendspace;
|
||||
|
||||
extern ngx_uint_t ngx_debug_malloc;
|
||||
|
||||
|
||||
#endif /* _NGX_DARWIN_H_INCLUDED_ */
|
||||
|
@ -87,6 +87,7 @@
|
||||
|
||||
|
||||
#define NGX_HAVE_OS_SPECIFIC_INIT 1
|
||||
#define NGX_HAVE_DEBUG_MALLOC 1
|
||||
|
||||
|
||||
extern char **environ;
|
||||
|
@ -14,6 +14,8 @@ int ngx_darwin_hw_ncpu;
|
||||
int ngx_darwin_kern_ipc_somaxconn;
|
||||
u_long ngx_darwin_net_inet_tcp_sendspace;
|
||||
|
||||
ngx_uint_t ngx_debug_malloc;
|
||||
|
||||
|
||||
static ngx_os_io_t ngx_darwin_io = {
|
||||
ngx_unix_recv,
|
||||
@ -55,6 +57,34 @@ sysctl_t sysctls[] = {
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
ngx_debug_init()
|
||||
{
|
||||
#if (NGX_DEBUG_MALLOC)
|
||||
|
||||
/*
|
||||
* MacOSX 10.6, 10.7: MallocScribble fills freed memory with 0x55
|
||||
* and fills allocated memory with 0xAA.
|
||||
* MacOSX 10.4, 10.5: MallocScribble fills freed memory with 0x55,
|
||||
* MallocPreScribble fills allocated memory with 0xAA.
|
||||
* MacOSX 10.3: MallocScribble fills freed memory with 0x55,
|
||||
* and no way to fill allocated memory.
|
||||
*/
|
||||
|
||||
setenv("MallocScribble", "1", 0);
|
||||
|
||||
ngx_debug_malloc = 1;
|
||||
|
||||
#else
|
||||
|
||||
if (getenv("MallocScribble")) {
|
||||
ngx_debug_malloc = 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
ngx_int_t
|
||||
ngx_os_specific_init(ngx_log_t *log)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define _NGX_FREEBSD_H_INCLUDED_
|
||||
|
||||
|
||||
void ngx_debug_init(void);
|
||||
ngx_chain_t *ngx_freebsd_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in,
|
||||
off_t limit);
|
||||
|
||||
@ -17,7 +18,7 @@ extern u_long ngx_freebsd_net_inet_tcp_sendspace;
|
||||
|
||||
extern ngx_uint_t ngx_freebsd_sendfile_nbytes_bug;
|
||||
extern ngx_uint_t ngx_freebsd_use_tcp_nopush;
|
||||
extern ngx_uint_t ngx_freebsd_debug_malloc;
|
||||
extern ngx_uint_t ngx_debug_malloc;
|
||||
|
||||
|
||||
#endif /* _NGX_FREEBSD_H_INCLUDED_ */
|
||||
|
@ -109,6 +109,7 @@ pid_t rfork_thread(int flags, void *stack, int (*func)(void *arg), void *arg);
|
||||
|
||||
|
||||
#define NGX_HAVE_OS_SPECIFIC_INIT 1
|
||||
#define NGX_HAVE_DEBUG_MALLOC 1
|
||||
|
||||
|
||||
extern char **environ;
|
||||
|
@ -22,7 +22,8 @@ int ngx_freebsd_machdep_hlt_logical_cpus;
|
||||
|
||||
ngx_uint_t ngx_freebsd_sendfile_nbytes_bug;
|
||||
ngx_uint_t ngx_freebsd_use_tcp_nopush;
|
||||
ngx_uint_t ngx_freebsd_debug_malloc;
|
||||
|
||||
ngx_uint_t ngx_debug_malloc;
|
||||
|
||||
|
||||
static ngx_os_io_t ngx_freebsd_io = {
|
||||
@ -80,7 +81,7 @@ ngx_debug_init()
|
||||
malloc_options = "J";
|
||||
#endif
|
||||
|
||||
ngx_freebsd_debug_malloc = 1;
|
||||
ngx_debug_malloc = 1;
|
||||
|
||||
#else
|
||||
char *mo;
|
||||
@ -88,7 +89,7 @@ ngx_debug_init()
|
||||
mo = getenv("MALLOC_OPTIONS");
|
||||
|
||||
if (mo && ngx_strchr(mo, 'J')) {
|
||||
ngx_freebsd_debug_malloc = 1;
|
||||
ngx_debug_malloc = 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -108,6 +108,7 @@ typedef struct iocb ngx_aiocb_t;
|
||||
|
||||
|
||||
#define NGX_HAVE_OS_SPECIFIC_INIT 1
|
||||
#define ngx_debug_init()
|
||||
|
||||
|
||||
extern char **environ;
|
||||
|
@ -31,7 +31,6 @@ typedef struct {
|
||||
} ngx_os_io_t;
|
||||
|
||||
|
||||
void ngx_debug_init(void);
|
||||
ngx_int_t ngx_os_init(ngx_log_t *log);
|
||||
void ngx_os_status(ngx_log_t *log);
|
||||
ngx_int_t ngx_os_specific_init(ngx_log_t *log);
|
||||
|
@ -125,6 +125,8 @@ typedef struct aiocb ngx_aiocb_t;
|
||||
|
||||
#define NGX_LISTEN_BACKLOG 511
|
||||
|
||||
#define ngx_debug_init()
|
||||
|
||||
|
||||
#if (__FreeBSD__) && (__FreeBSD_version < 400017)
|
||||
|
||||
|
@ -98,6 +98,7 @@
|
||||
|
||||
|
||||
#define NGX_HAVE_OS_SPECIFIC_INIT 1
|
||||
#define ngx_debug_init()
|
||||
|
||||
|
||||
extern char **environ;
|
||||
|
@ -182,6 +182,7 @@ typedef int sig_atomic_t;
|
||||
|
||||
|
||||
#define ngx_random rand
|
||||
#define ngx_debug_init()
|
||||
|
||||
|
||||
#endif /* _NGX_WIN32_CONFIG_H_INCLUDED_ */
|
||||
|
Loading…
Reference in New Issue
Block a user