diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-07 22:23:40 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-07 22:23:40 +0100 |
commit | af6d8da8e78285e2c45510065a2b88c3fa0a46d1 (patch) | |
tree | b0e3f12f865efb7a728b845d0e272a0076b4d1c2 | |
parent | 2f221e03ee2f293d2b26c7423e343b753a8d8e72 (diff) | |
download | rspamd-af6d8da8e78285e2c45510065a2b88c3fa0a46d1.tar.gz rspamd-af6d8da8e78285e2c45510065a2b88c3fa0a46d1.zip |
Improve google perftools invocation.
-rw-r--r-- | src/libutil/util.c | 26 | ||||
-rw-r--r-- | src/libutil/util.h | 1 |
2 files changed, 22 insertions, 5 deletions
diff --git a/src/libutil/util.c b/src/libutil/util.c index 5706a2f49..daf427ef3 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -1137,22 +1137,31 @@ gperf_profiler_init (struct rspamd_config *cfg, const gchar *descr) { #if defined(WITH_GPERF_TOOLS) gchar prof_path[PATH_MAX]; + const gchar *prefix; if (getenv ("CPUPROFILE")) { /* disable inherited Profiler enabled in master process */ ProfilerStop (); } - /* Try to create temp directory for gmon.out and chdir to it */ - if (cfg->profile_path == NULL) { - cfg->profile_path = - g_strdup_printf ("%s/rspamd-profile", cfg->temp_dir); + + if (cfg != NULL) { + /* Try to create temp directory for gmon.out and chdir to it */ + if (cfg->profile_path == NULL) { + cfg->profile_path = + g_strdup_printf ("%s/rspamd-profile", cfg->temp_dir); + } + + prefix = cfg->profile_path; + } + else { + prefix = "/tmp/rspamd-profile"; } snprintf (prof_path, sizeof (prof_path), "%s-%s.%d", - cfg->profile_path, + prefix, descr, (gint)getpid ()); if (ProfilerStart (prof_path)) { @@ -1162,7 +1171,14 @@ gperf_profiler_init (struct rspamd_config *cfg, const gchar *descr) else { msg_warn ("cannot start google perftools profiler"); } +#endif +} +void +gperf_profiler_stop (void) +{ +#if defined(WITH_GPERF_TOOLS) + ProfilerStop (); #endif } diff --git a/src/libutil/util.h b/src/libutil/util.h index 8284557d9..a78c4dfda 100644 --- a/src/libutil/util.h +++ b/src/libutil/util.h @@ -165,6 +165,7 @@ gboolean rspamd_file_unlock (gint fd, gboolean async); * Google perf-tools initialization function */ void gperf_profiler_init (struct rspamd_config *cfg, const gchar *descr); +void gperf_profiler_stop (void); /* * Workarounds for older versions of glib |