]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Increase stack size after fork
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 25 Feb 2016 16:57:34 +0000 (16:57 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 25 Feb 2016 16:57:34 +0000 (16:57 +0000)
src/libserver/worker_util.c
src/libutil/util.c

index 41f6e3ef2435ca393ac3c532bcc8c65ec6adf179..3d62e109641d09f967b6f7112118ca5b7122facd 100644 (file)
@@ -472,6 +472,8 @@ rspamd_fork_worker (struct rspamd_main *rspamd_main,
 {
        struct rspamd_worker *wrk;
        gint rc;
+       struct rlimit rlim;
+
        /* Starting worker process */
        wrk = (struct rspamd_worker *) g_malloc0 (sizeof (struct rspamd_worker));
 
@@ -514,6 +516,12 @@ rspamd_fork_worker (struct rspamd_main *rspamd_main,
                rspamd_worker_drop_priv (rspamd_main);
                /* Set limits */
                rspamd_worker_set_limits (rspamd_main, cf);
+               /* Re-set stack limit */
+               getrlimit (RLIMIT_STACK, &rlim);
+               rlim.rlim_cur = 100 * 1024 * 1024;
+               rlim.rlim_max = rlim.rlim_cur;
+               setrlimit (RLIMIT_STACK, &rlim);
+
                setproctitle ("%s process", cf->worker->name);
                rspamd_pidfile_close (rspamd_main->pfh);
                /* Do silent log reopen to avoid collisions */
index b0376ca1e5f23ffdca7818e9c58cd77240b46e5b..9ba67e1e64611d2490296d638835bf3ac866e200 100644 (file)
@@ -1998,6 +1998,7 @@ rspamd_init_libs (void)
        /* Set stack size for pcre */
        getrlimit (RLIMIT_STACK, &rlim);
        rlim.rlim_cur = 100 * 1024 * 1024;
+       rlim.rlim_max = rlim.rlim_cur;
        setrlimit (RLIMIT_STACK, &rlim);
 
 #ifdef GMIME_ENABLE_RFC2047_WORKAROUNDS