<div dir="ltr"><div><div><div><div>Hi all, we have noticed that when reloading (note reloading not restarting) stunnel it appears to be leaking<br></div>between 12 and 32 bytes of memory (ish) per reload. There does not need to be any traffic passing through it at the time to view this problem. If its reloaded enough times the system will eventually run out of memory. Unless an stunnel restart if performed inbetween.  <br><br></div>We are running 5.41 tried with the latest 5.44 and have the same result.<br></div><div>We are using openssl 1.0.2j-fips ive tried with 1.0.2n and 1.1.0e (to try and rule out openssl)<br></div><div><br></div>We are reloading by running: kill -s HUP <pid><br><br></div>The stunnel configuration is - <br><br><div><div><div>pid = /var/run/stunnel/stunnel.pid<br>debug = 7<br>syslog = no<br>output = /var/log/stunnel.log<br>socket = a:IP_FREEBIND=yes<br>fips = no<br>sslVersion = all<br>[VIP_Name]<br>    cert = /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>    ciphers = ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DHE-RSA-AES256-SHA256:!RC4:!MD5:!aNULL:!EDH:!3DES<br>    accept = <a href="http://192.168.80.16:443">192.168.80.16:443</a><br>    connect = <a href="http://127.0.0.5:80">127.0.0.5:80</a><br>    delay = yes<br>    options = NO_SSLv3<br>    options = NO_TLSv1<br>    options = DONT_INSERT_EMPTY_FRAGMENTS<br>    renegotiation = no<br>    local = 192.168.80.16<br>    TIMEOUTclose = 0<br><br></div><div>The stunnel log file is as follows - <br>2018.04.03 11:09:59 LOG7[ui]: Clients allowed=62937<br>2018.04.03 11:09:59 LOG5[ui]: stunnel 5.44 on x86_64-pc-linux-gnu platform<br>2018.04.03 11:09:59 LOG5[ui]: Compiled/running with OpenSSL 1.0.2j-fips  26 Sep 2016<br>2018.04.03 11:09:59 LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6 TLS:ENGINE,FIPS,OCSP,PSK,SNI<br>2018.04.03 11:09:59 LOG7[ui]: errno: (*__errno_location ())<br>2018.04.03 11:09:59 LOG5[ui]: Reading configuration from file /etc/stunnel/stunnel.conf<br>2018.04.03 11:09:59 LOG5[ui]: UTF-8 byte order mark not detected<br>2018.04.03 11:09:59 LOG5[ui]: FIPS mode disabled<br>2018.04.03 11:09:59 LOG7[ui]: Compression disabled<br>2018.04.03 11:09:59 LOG7[ui]: Snagged 64 random bytes from /dev/urandom<br>2018.04.03 11:09:59 LOG7[ui]: PRNG seeded successfully<br>2018.04.03 11:09:59 LOG6[ui]: Initializing service [VIP_Name]<br>2018.04.03 11:09:59 LOG7[ui]: Ciphers: ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DHE-RSA-AES256-SHA256:!RC4:!MD5:!aNULL:!EDH:!3DES<br>2018.04.03 11:09:59 LOG7[ui]: TLS options: 0x07004804 (+0x07004800, -0x00000000)<br>2018.04.03 11:09:59 LOG6[ui]: Loading certificate from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:09:59 LOG6[ui]: Certificate loaded from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:09:59 LOG6[ui]: Loading private key from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:09:59 LOG6[ui]: Private key loaded from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:09:59 LOG7[ui]: Private key check succeeded<br>2018.04.03 11:09:59 LOG7[ui]: ECDH initialization<br>2018.04.03 11:09:59 LOG7[ui]: ECDH initialized with curve prime256v1<br>2018.04.03 11:09:59 LOG5[ui]: Configuration successful<br>2018.04.03 11:09:59 LOG7[ui]: Binding service [VIP_Name]<br>2018.04.03 11:09:59 LOG7[ui]: Listening file descriptor created (FD=6)<br>2018.04.03 11:09:59 LOG7[ui]: Option SO_REUSEADDR set on accept socket<br>2018.04.03 11:09:59 LOG7[ui]: Option IP_FREEBIND set on accept socket<br>2018.04.03 11:09:59 LOG7[ui]: Service [VIP_Name] (FD=6) bound to <a href="http://192.168.80.16:443">192.168.80.16:443</a><br>2018.04.03 11:09:59 LOG7[main]: Created pid file /var/run/stunnel/stunnel.pid<br>2018.04.03 11:09:59 LOG7[cron]: Cron thread initialized<br>2018.04.03 11:10:59 LOG6[cron]: Executing cron jobs<br>2018.04.03 11:10:59 LOG6[cron]: Cron jobs completed in 0 seconds<br>2018.04.03 11:10:59 LOG7[cron]: Waiting 86400 seconds<br>2018.04.03 11:11:08 LOG7[main]: Found 1 ready file descriptor(s)<br>2018.04.03 11:11:08 LOG7[main]: FD=4 events=0x2001 revents=0x1<br>2018.04.03 11:11:08 LOG7[main]: FD=6 events=0x2001 revents=0x0<br>2018.04.03 11:11:08 LOG7[main]: Dispatching signals from the signal pipe<br>2018.04.03 11:11:08 LOG7[main]: Processing SIGNAL_RELOAD_CONFIG<br>2018.04.03 11:11:08 LOG5[main]: Reading configuration from file /etc/stunnel/stunnel.conf<br>2018.04.03 11:11:08 LOG5[main]: UTF-8 byte order mark not detected<br>2018.04.03 11:11:08 LOG5[main]: FIPS mode disabled<br>2018.04.03 11:11:08 LOG7[main]: Compression disabled<br>2018.04.03 11:11:08 LOG7[main]: Snagged 64 random bytes from /dev/urandom<br>2018.04.03 11:11:08 LOG7[main]: PRNG seeded successfully<br>2018.04.03 11:11:08 LOG6[main]: Initializing service [VIP_Name]<br>2018.04.03 11:11:08 LOG7[main]: Ciphers: ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DHE-RSA-AES256-SHA256:!RC4:!MD5:!aNULL:!EDH:!3DES<br>2018.04.03 11:11:08 LOG7[main]: TLS options: 0x07004804 (+0x07004800, -0x00000000)<br>2018.04.03 11:11:08 LOG6[main]: Loading certificate from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:11:08 LOG6[main]: Certificate loaded from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:11:08 LOG6[main]: Loading private key from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:11:08 LOG6[main]: Private key loaded from file: /etc/<a href="http://loadbalancer.org/certs/server.pem">loadbalancer.org/certs/server.pem</a><br>2018.04.03 11:11:08 LOG7[main]: Private key check succeeded<br>2018.04.03 11:11:08 LOG7[main]: ECDH initialization<br>2018.04.03 11:11:08 LOG7[main]: ECDH initialized with curve prime256v1<br>2018.04.03 11:11:08 LOG5[main]: Configuration successful<br>2018.04.03 11:11:08 LOG7[main]: Unbinding service [VIP_Name]<br>2018.04.03 11:11:08 LOG7[main]: Service [VIP_Name] closed (FD=6)<br>2018.04.03 11:11:08 LOG7[main]: Service [VIP_Name] closed<br>2018.04.03 11:11:08 LOG7[main]: Binding service [VIP_Name]<br>2018.04.03 11:11:08 LOG7[main]: Listening file descriptor created (FD=6)<br>2018.04.03 11:11:08 LOG7[main]: Option SO_REUSEADDR set on accept socket<br>2018.04.03 11:11:08 LOG7[main]: Option IP_FREEBIND set on accept socket<br>2018.04.03 11:11:08 LOG7[main]: Service [VIP_Name] (FD=6) bound to <a href="http://192.168.80.16:443">192.168.80.16:443</a><br>2018.04.03 11:11:08 LOG7[main]: Signal pipe is empty<br><br></div><div>Any help would be appreciated.<br clear="all"></div><div><div><div><div><br></div><div>Thanks<br></div><div>-- <br><div class="gmail_signature"><br>Mark Brookes<br>Loadbalancer.org Ltd.<br><a href="http://www.loadbalancer.org" target="_blank">www.loadbalancer.org</a><br>        <br><br>+44 (0)330 380 1064  <br><a href="mailto:mark@loadbalancer.org" target="_blank">mark@loadbalancer.org</a><br></div>
</div></div></div></div></div></div></div>