systemd integration not working

Aki Tuomi aki.tuomi at open-xchange.com
Wed Apr 28 08:12:01 EEST 2021


Can you provide any details on this instability?

Aki

On April 27, 2021 7:58:01 PM UTC, Joan Moreau <jom at grosjo.net> wrote:
>Ok, a third regression is that it becomes highly unstable with the
>patch 
>you sent
>
>I had to get back to 2.3.14
>
>On 2021-04-27 17:07, Joan Moreau wrote:
>
>> Indeed, latest git works much better :)
>> 
>> On 2021-04-27 05:58, Aki Tuomi wrote:
>> Can you try with latest git? We did some improvements on the systemd 
>> configure parts.
>> 
>> Aki
>> 
>> On 26/04/2021 23:32 Joan Moreau <jom at grosjo.net> wrote:
>> 
>> Looking at config.log, there is #define HAVE_LIBSYSTEMD 1
>> But "Type=notify" does not appear
>> My systemd is version 248
>> 
>> On 2021-04-26 12:05, Joan Moreau wrote: I have
>> # sudo systemctl status dovecot
>> ● dovecot.service - Dovecot IMAP/POP3 email server
>> Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; 
>> vendor preset: disabled)
>> Active: active (running) since Sun 2021-04-25 20:13:25 UTC; 14h ago
>> Docs: man:dovecot(1)
>> https://doc.dovecot.org/
>> Main PID: 2559364 (dovecot)
>> Tasks: 28 (limit: 76912)
>> Memory: 1.0G
>> CPU: 7min 18.342s
>> CGroup: /system.slice/dovecot.service
>> ├─2559364 /usr/sbin/dovecot -F
>> ├─2559366 dovecot/imap-login
>> ├─2559367 dovecot/anvil [11 connections]
>> ├─2559368 dovecot/log
>> 
>> On 2021-04-26 08:32, Aki Tuomi wrote: I don't know then. It works for
>
>> me and I just tried it again. The only reason it would fail would be 
>> that HAVE_LIBSYSTEMD is not defined, so it would not be using 
>> libsystemd for notify support.
>> 
>> $ sudo systemctl status dovecot
>> ● dovecot.service - Dovecot IMAP/POP3 email server
>> Loaded: loaded (/lib/systemd/system/dovecot.service; disabled; vendor
>
>> preset: enabled)
>> Active: active (running) since Mon 2021-04-26 10:30:02 EEST; 2s ago
>> Docs: man:dovecot(1)
>> https://doc.dovecot.org/
>> Main PID: 30213 (dovecot)
>> Status: "v2.4.devel (98a1cca054) running"
>> Tasks: 4 (limit: 4701)
>> Memory: 3.3M
>> CGroup: /system.slice/dovecot.service
>> ├─30213 /home/cmouse/dovecot/sbin/dovecot -F
>> ├─30214 dovecot/anvil
>> ├─30215 dovecot/log
>> └─30216 dovecot/config
>> 
>> You can tell from the "Status" line that it's using Type=notify.
>> 
>> Aki
>> 
>> On 26/04/2021 10:29 Joan Moreau <jom at grosjo.net> wrote:
>> 
>> Yes, I do run autogen.sh after every "git pull"
>> 
>> On 2021-04-26 08:21, Aki Tuomi wrote: The current autoconf code is
>bit 
>> buggy, but if you do indeed have libsystemd-dev installed it should
>do 
>> the right thing and will work with systemd even if you have 
>> Type=notify.
>> 
>> This has been actually tested, so if it's not working, then something
>
>> else is wrong.
>> 
>> Did you remember to run ./autogen.sh after pulling from git to make 
>> sure you get new configure script?
>> 
>> Aki
>> 
>> On 26/04/2021 10:11 Joan Moreau <jom at grosjo.net> wrote:
>> 
>> Yes systemd is installed (and the "dev" files as well)
>> 
>> On 2021-04-26 06:23, Aki Tuomi wrote: This is because you are not 
>> compiling with libsystemd-dev installed. I guess we need to make some
>
>> service template that use type simple when you don't use libsystemd.
>> 
>> Aki
>> 
>> On 25/04/2021 22:53 Joan Moreau <jom at grosjo.net> wrote:
>> 
>> Yes, it seems fixed with this patch :)
>> 
>> Another bug with git, is the "type=" in systemd is switched from 
>> "simple" to "notify". The later does not work and reverting to
>"simple" 
>> does work
>> 
>> On 2021-04-25 17:53, Aki Tuomi wrote: On 24/04/2021 21:56 Joan Moreau
>
>> <jom at grosjo.net> wrote:
>> 
>> chroot= does not resolve the issue
>> I have "chroot = login" in my conf
>> 
>> Thanks!
>> 
>> The chroot was needed to get the core dump.
>> 
>> Can you try if this does fix the crash?
>> 
>> Aki
>> 
>> From 1df4e02cbff710ce8938480b07a5690e37f661f6 Mon Sep 17 00:00:00
>2001
>> From: Timo Sirainen <timo.sirainen at open-xchange.com>
>> Date: Fri, 23 Apr 2021 16:43:36 +0300
>> Subject: [PATCH] login-common: Fix handling destroyed_clients linked 
>> list
>> 
>> The client needs to be removed from destroyed_clients linked list 
>> before
>> it's added to client_fd_proxies linked list.
>> 
>> Broken by 1c622cdbe08df2f642e28923c39894516143ae2a
>> ---
>> src/login-common/client-common.c | 11 +++++++----
>> 1 file changed, 7 insertions(+), 4 deletions(-)
>> 
>> diff --git a/src/login-common/client-common.c 
>> b/src/login-common/client-common.c
>> index bdb6e9c798..1d264d9f75 100644
>> --- a/src/login-common/client-common.c
>> +++ b/src/login-common/client-common.c
>> @@ -289,8 +289,9 @@ void client_disconnect(struct client *client,
>const 
>> char *reason,
>> /* Login was successful. We may now be proxying the connection,
>> so don't disconnect the client until client_unref(). */
>> if (client->iostream_fd_proxy != NULL) {
>> + i_assert(!client->fd_proxying);
>> client->fd_proxying = TRUE;
>> - i_assert(client->prev == NULL && client->next == NULL);
>> + DLLIST_REMOVE(&destroyed_clients, client);
>> DLLIST_PREPEND(&client_fd_proxies, client);
>> client_fd_proxies_count++;
>> }
>> @@ -307,8 +308,9 @@ void client_destroy(struct client *client, const 
>> char *reason)
>> 
>> if (last_client == client)
>> last_client = client->prev;
>> - /* remove from clients linked list before it's added to
>> - client_fd_proxies. */
>> + /* move to destroyed_clients linked list before it's potentially
>> + added to client_fd_proxies. */
>> + i_assert(!client->fd_proxying);
>> DLLIST_REMOVE(&clients, client);
>> DLLIST_PREPEND(&destroyed_clients, client);
>> 
>> @@ -409,13 +411,14 @@ bool client_unref(struct client **_client)
>> DLLIST_REMOVE(&client_fd_proxies, client);
>> i_assert(client_fd_proxies_count > 0);
>> client_fd_proxies_count--;
>> + } else {
>> + DLLIST_REMOVE(&destroyed_clients, client);
>> }
>> i_stream_unref(&client->input);
>> o_stream_unref(&client->output);
>> i_close_fd(&client->fd);
>> event_unref(&client->event);
>> 
>> - DLLIST_REMOVE(&destroyed_clients, client);
>> i_free(client->proxy_user);
>> i_free(client->proxy_master_user);
>> i_free(client->virtual_user);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dovecot.org/pipermail/dovecot/attachments/20210428/ef3faaaa/attachment.html>


More information about the dovecot mailing list