aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2011-10-24 15:46:48 +0000
committerIgor Sysoev <igor@sysoev.ru>2011-10-24 15:46:48 +0000
commitefc6ecab8255beedbe2f2148bb4d1dfeadf335b8 (patch)
tree8b094f0b718cdaeb6c30f129c7dc9664f8702615 /src
parentb9c859e6d56710d2db0984e6e2fabef6d0ad2bfc (diff)
downloadnginx-efc6ecab8255beedbe2f2148bb4d1dfeadf335b8.tar.gz
nginx-efc6ecab8255beedbe2f2148bb4d1dfeadf335b8.zip
malloc() debugging on MacOSX.
Diffstat (limited to 'src')
-rw-r--r--src/core/nginx.c2
-rw-r--r--src/core/ngx_slab.c4
-rw-r--r--src/os/unix/ngx_darwin.h3
-rw-r--r--src/os/unix/ngx_darwin_config.h1
-rw-r--r--src/os/unix/ngx_darwin_init.c30
-rw-r--r--src/os/unix/ngx_freebsd.h3
-rw-r--r--src/os/unix/ngx_freebsd_config.h1
-rw-r--r--src/os/unix/ngx_freebsd_init.c7
-rw-r--r--src/os/unix/ngx_linux_config.h1
-rw-r--r--src/os/unix/ngx_os.h1
-rw-r--r--src/os/unix/ngx_posix_config.h2
-rw-r--r--src/os/unix/ngx_solaris_config.h1
-rw-r--r--src/os/win32/ngx_win32_config.h1
13 files changed, 48 insertions, 9 deletions
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 3a413e84e..da32c1a50 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -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;
diff --git a/src/core/ngx_slab.c b/src/core/ngx_slab.c
index 870c59bad..9b5b28f2f 100644
--- a/src/core/ngx_slab.c
+++ b/src/core/ngx_slab.c
@@ -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
diff --git a/src/os/unix/ngx_darwin.h b/src/os/unix/ngx_darwin.h
index 7fa60ff0c..ebd8d355d 100644
--- a/src/os/unix/ngx_darwin.h
+++ b/src/os/unix/ngx_darwin.h
@@ -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_ */
diff --git a/src/os/unix/ngx_darwin_config.h b/src/os/unix/ngx_darwin_config.h
index a3a14c493..1717c690f 100644
--- a/src/os/unix/ngx_darwin_config.h
+++ b/src/os/unix/ngx_darwin_config.h
@@ -87,6 +87,7 @@
#define NGX_HAVE_OS_SPECIFIC_INIT 1
+#define NGX_HAVE_DEBUG_MALLOC 1
extern char **environ;
diff --git a/src/os/unix/ngx_darwin_init.c b/src/os/unix/ngx_darwin_init.c
index 67133198b..c3d1125fc 100644
--- a/src/os/unix/ngx_darwin_init.c
+++ b/src/os/unix/ngx_darwin_init.c
@@ -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)
{
diff --git a/src/os/unix/ngx_freebsd.h b/src/os/unix/ngx_freebsd.h
index 67fce3eb7..a96f4eb1a 100644
--- a/src/os/unix/ngx_freebsd.h
+++ b/src/os/unix/ngx_freebsd.h
@@ -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_ */
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 3169c277a..798f2eacd 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -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;
diff --git a/src/os/unix/ngx_freebsd_init.c b/src/os/unix/ngx_freebsd_init.c
index 1211c7ccb..bfb89087a 100644
--- a/src/os/unix/ngx_freebsd_init.c
+++ b/src/os/unix/ngx_freebsd_init.c
@@ -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
}
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index a2ef51237..d72cf26b6 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -108,6 +108,7 @@ typedef struct iocb ngx_aiocb_t;
#define NGX_HAVE_OS_SPECIFIC_INIT 1
+#define ngx_debug_init()
extern char **environ;
diff --git a/src/os/unix/ngx_os.h b/src/os/unix/ngx_os.h
index f1d8e6824..8f9622ed3 100644
--- a/src/os/unix/ngx_os.h
+++ b/src/os/unix/ngx_os.h
@@ -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);
diff --git a/src/os/unix/ngx_posix_config.h b/src/os/unix/ngx_posix_config.h
index aec8a0a35..e327d5460 100644
--- a/src/os/unix/ngx_posix_config.h
+++ b/src/os/unix/ngx_posix_config.h
@@ -125,6 +125,8 @@ typedef struct aiocb ngx_aiocb_t;
#define NGX_LISTEN_BACKLOG 511
+#define ngx_debug_init()
+
#if (__FreeBSD__) && (__FreeBSD_version < 400017)
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index 6b3d42eaa..fe66026e5 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -98,6 +98,7 @@
#define NGX_HAVE_OS_SPECIFIC_INIT 1
+#define ngx_debug_init()
extern char **environ;
diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h
index 8ffe95c31..6d8864139 100644
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -182,6 +182,7 @@ typedef int sig_atomic_t;
#define ngx_random rand
+#define ngx_debug_init()
#endif /* _NGX_WIN32_CONFIG_H_INCLUDED_ */