Re: [BUG] IMAP hibernation fails on FreeBSD 15.x with "Invalid peer_dev_major value"
Timo Sirainen via dovecot <[email protected]>
| Newsgroups | gmane.mail.imap.dovecot |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I'm mainly wondering if the device is NODEV, is the inode still usable or is that also some 0 or -1? This is likely a simpler patch, but it also removes the inode check also, which isn't good if it would be usable:
diff --git a/src/imap/imap-client-hibernate.c b/src/imap/imap-client-hibernate.c
index cb640c3695..191b0cfef9 100644
--- a/src/imap/imap-client-hibernate.c
+++ b/src/imap/imap-client-hibernate.c
@@ -62,7 +62,10 @@ static void imap_hibernate_write_cmd(struct client *client, string_t *cmd,
str_append_tabescaped(cmd, user->set->unexpanded_mail_log_prefix);
str_printfa(cmd, "\tidle_notify_interval=%u",
client->set->imap_idle_notify_interval);
- if (fstat(client->fd_in, &peer_st) == 0) {
+ /* e.g. FreeBSD returns NODEV as sockets' st_dev, which can't be
+ used for verifying that the fd is the expected one. */
+ if (fstat(client->fd_in, &peer_st) == 0 &&
+ peer_st.st_dev != (dev_t)-1) {
str_printfa(cmd, "\tpeer_dev_major=%lu\tpeer_dev_minor=%lu\tpeer_ino=%llu",
(unsigned long)major(peer_st.st_dev),
(unsigned long)minor(peer_st.st_dev),
> On 31. Jul 2026, at 20.44, Jordan Ostrev <[email protected]> wrote:
>
> Hi Aki, Timo,
> Checking in on the FreeBSD 15 imap-hibernate 64-bit IPC fix below.
> Have you had any time to review or test the patch on your end? Happy to refine the changes or format them as needed for upstream merge.
> Thanks,
> Jordan
>
>
>> On 25 Jun 2026, at 19:34, Aki Tuomi <[email protected]> wrote:
>>
>> Did you also test that incoming mail, or changes to SELECTed mailboxes is noticed while hibernated?
>> Aki
>>
>>>
>>> On 25/06/2026 18:34 EEST Jordan Ostrev via dovecot <[email protected]> wrote:
>>> Hi Timo,
>>> I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the IMAP hibernation feature fails to work natively on this platform.
>>> The Problem
>>> Under FreeBSD, running fstat() on a network socket returns NODEV (UINT64_MAX or 18446744073709551615) for both major()and minor() device numbers.
>>> When imap-hibernate tries to serialize these values, they are printed as 64-bit unsigned integers. However, Dovecot's internal parser in imap-master-client.c uses standard 32-bit integers (unsigned int) and str_to_uint(). This causes an integer overflow, triggering the following error during hibernation: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>> The Solution
>>> I've created a patch for src/imap/imap-master-client.c that scales the parser variables to uint64_t and switches the parsing function to str_to_uint64(). Additionally, it updates the verification assertion to prevent BUG crashes due to the expected dev_tbehavior of virtual network sockets under FreeBSD.
>>> Here is the combined patch that fixes the issue completely:
>>> Фрагмент от код
>>> --- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC
>>> +++ src/imap/imap-master-client.c
>>> @@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const *args
>>> const char **error_r)
>>> {
>>> const char *key, *value;
>>> - unsigned int peer_dev_major = 0, peer_dev_minor = 0;
>>> + uint64_t peer_dev_major = 0, peer_dev_minor = 0;
>>> i_zero(input_r);
>>> i_zero(stats_r);
>>> @@ -128,13 +128,13 @@ imap_master_client_parse_input(const char *const *args
>>> return -1;
>>> }
>>> } else if (strcmp(key, "peer_dev_major") == 0) {
>>> - if (str_to_uint(value, &peer_dev_major) < 0) {
>>> + if (str_to_uint64(value, &peer_dev_major) < 0) {
>>> *error_r = t_strdup_printf(
>>> "Invalid peer_dev_major value: %s", value);
>>> return -1;
>>> }
>>> } else if (strcmp(key, "peer_dev_minor") == 0) {
>>> - if (str_to_uint(value, &peer_dev_minor) < 0) {
>>> + if (str_to_uint64(value, &peer_dev_minor) < 0) {
>>> *error_r = t_strdup_printf(
>>> "Invalid peer_dev_minor value: %s", value);
>>> return -1;
>>> @@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const *args
>>> }
>>> if (peer_dev_major != 0 || peer_dev_minor != 0) {
>>> master_input_r->peer_dev =
>>> - makedev(peer_dev_major, peer_dev_minor);
>>> + makedev((unsigned long)peer_dev_major, (unsigned long)peer_dev_minor);
>>> }
>>> return 0;
>>> }
>>> @@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct imap
>>> return -1;
>>> }
>>> if (peer_st.st_ino != master_input->peer_ino ||
>>> - !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) {
>>> + (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) &&
>>> + major(peer_st.st_dev) != (unsigned long)-1)) {
>>> *error_r = t_strdup_printf(
>>> "BUG: Expected peer device=%lu,%lu inode=%s doesn't match "
>>> "client fd's actual device=%lu,%lu inode=%s",
>>> Result
>>> With this patch applied, hibernation works flawlessly under FreeBSD:
>>> # doveadm who
>>> username # service (pids) (ips)
>>> [email protected] 1 imap (26000) (46.10.221.52)
>>> [email protected] 2 imap-hibernate (26260) (46.10.221.52)
>>> No error messages are logged by dovecot when it hibernates and restores clients. I hope this can be integrated into the upstream code.
>>> Best regards,
>>> Jordan
>>>
>>>>
>>>> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected]> wrote:
>>>> Hi Timo,
>>>> i’m not programmer at all but here is my understanding of the problem:
>>>> In src/imap/imap-client-hibernate.c, the code serializes peer_dev_major and peer_dev_minor using major() and minor() macros:
>>>> str_printfa(cmd, "\tpeer_dev_major=%lu\tpeer_dev_minor=%lu\tpeer_ino=%llu",
>>>> (unsigned long)major(peer_st.st_dev),
>>>> (unsigned long)minor(peer_st.st_dev),
>>>> (unsigned long long)peer_st.st_ino);
>>>> On FreeBSD, major() and minor() can return UINT64_MAX (18446744073709551615) for file descriptors that are not block/character devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX and cannot be parsed by str_to_uint() in imap-master-client.c, causing hibernation to fail.
>>>>
>>>>>
>>>>> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected]> wrote:
>>>>> Hi Timo,
>>>>> I’ve made freebsd port patch which looks like that:
>>>>> # cat files/patch-configure.ac
>>>>> --- configure.ac.orig 2026-06-25 11:03:42 UTC
>>>>> +++ configure.ac
>>>>> @@ -363,7 +363,7 @@ AS_CASE(
>>>>> DOVECOT_IOLOOP
>>>>> DOVECOT_NOTIFY
>>>>> AS_CASE(
>>>>> - ["$notify"],
>>>>> + ["$have_notify"],
>>>>> [none], [BUILD_IMAP_HIBERNATE=0],
>>>>> [kqueue], [BUILD_IMAP_HIBERNATE=0],
>>>>> [BUILD_IMAP_HIBERNATE=1])
>>>>> I’m simulating the situation with telnet:
>>>>> c idle
>>>>> + idling
>>>>> * 4228 EXPUNGE
>>>>> * 0 RECENT
>>>>> * OK Still here
>>>>> * OK Still here
>>>>> * 4228 EXISTS
>>>>> * 1 RECENT
>>>>> * 4228 EXPUNGE
>>>>> * 0 RECENT
>>>>> * 4228 EXISTS
>>>>> * 1 RECENT
>>>>> * 4228 EXPUNGE
>>>>> * 0 RECENT
>>>>> * OK Still here
>>>>> * OK Still here
>>>>> * OK Still here
>>>>> * OK Still here
>>>>> * 4228 EXISTS
>>>>> * 1 RECENT
>>>>> * 4228 EXPUNGE
>>>>> * 0 RECENT
>>>>> * OK Still here
>>>>> * OK Still here
>>>>> d idle
>>>>> c BAD Idle completed.
>>>>> + idling
>>>>> * OK Still here
>>>>> * 4228 EXISTS
>>>>> * 1 RECENT
>>>>> * 4228 EXPUNGE
>>>>> * 0 RECENT
>>>>> * OK Still here
>>>>> * 4228 EXISTS
>>>>> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk))
>>>>> * 4228 EXPUNGE
>>>>> * OK Still here
>>>>> in the log I see following:
>>>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:21:17 classic dovecot[29292]: imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:21:17 classic dovecot[29292]: imap([email protected])<30943><EJZELRJVp5QuCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:26:03 classic dovecot[29292]: imap([email protected])<30943><EJZELRJVp5QuCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:26:03 classic dovecot[29292]: imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:29:28 classic dovecot[29292]: imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:33:36 classic dovecot[29292]: imap([email protected])<33114><cX5QWRJVrZguCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:33:37 classic dovecot[29292]: imap([email protected])<33112><NlVOWRJVkbEuCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Jun 25 14:34:40 classic dovecot[29292]: imap([email protected])<33112><NlVOWRJVkbEuCt00>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>> Here is my piece of my config:
>>>>> # dovecot -a | grep hibernate
>>>>> imap_hibernate_timeout = 1 mins
>>>>> service imap-hibernate {
>>>>> unix_listener imap-hibernate {
>>>>> What we can do more?
>>>>> KR,
>>>>> Jordan
>>>>>
>>>>>>
>>>>>> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected]> wrote:
>>>>>> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot <[email protected]> wrote:
>>>>>>> Hi,
>>>>>>> IMAP hibernation compiles and attempts to run on FreeBSD 15.x (tested with
>>>>>>> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with:
>>>>>>> plain
>>>>>>> imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>>>> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>>>> Jun 24 21:27:08 classic dovecot[36888]: imap([email protected])<37120><ExaV/gNVAdt/AAAB>: Error: Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: Failed to parse client input: Invalid peer_dev_major value: 18446744073709551615
>>>>>> ..
>>>>>>> 1. Disable hibernation at compile time for kqueue systems, or
>>>>>> It was already supposed to be done, but looks like there's a bug. Can you verify if this works? :
>>>>>> diff --git a/configure.ac b/configure.ac
>>>>>> index 9beacaa299..04f9c8edd6 100644
>>>>>> --- a/configure.ac
>>>>>> +++ b/configure.ac
>>>>>> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF
>>>>>> DOVECOT_IOLOOP
>>>>>> DOVECOT_NOTIFY
>>>>>> AS_CASE(
>>>>>> - ["$notify"],
>>>>>> + ["$have_notify"],
>>>>>> [none], [BUILD_IMAP_HIBERNATE=0],
>>>>>> [kqueue], [BUILD_IMAP_HIBERNATE=0],
>>>>>> [BUILD_IMAP_HIBERNATE=1])
>>> Hi Timo,
>>> I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the IMAP
>>> hibernation feature fails to work natively on this platform.
>>> The Problem
>>> Under FreeBSD, running fstat() on a network socket
>>> returns NODEV (UINT64_MAX or 18446744073709551615) for
>>> both major()and minor() device numbers.
>>> When imap-hibernate tries to serialize these values, they are printed as
>>> 64-bit unsigned integers. However, Dovecot's internal parser
>>> in imap-master-client.c uses standard 32-bit integers (unsigned int)
>>> and str_to_uint(). This causes an integer overflow, triggering the
>>> following error during hibernation: Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> The Solution
>>> I've created a patch for src/imap/imap-master-client.c that scales the
>>> parser variables to uint64_t and switches the parsing function
>>> to str_to_uint64(). Additionally, it updates the verification assertion to
>>> prevent BUG crashes due to the expected dev_tbehavior of virtual network
>>> sockets under FreeBSD.
>>> Here is the combined patch that fixes the issue completely:
>>> Fragment ot kod
>>> --- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC
>>> +++ src/imap/imap-master-client.c
>>> @@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const *args
>>> const char **error_r)
>>> {
>>> const char *key, *value;
>>> - unsigned int peer_dev_major = 0, peer_dev_minor = 0;
>>> + uint64_t peer_dev_major = 0, peer_dev_minor = 0;
>>> i_zero(input_r);
>>> i_zero(stats_r);
>>> @@ -128,13 +128,13 @@ imap_master_client_parse_input(const char *const *args
>>> return -1;
>>> }
>>> } else if (strcmp(key, "peer_dev_major") == 0) {
>>> - if (str_to_uint(value, &peer_dev_major) < 0) {
>>> + if (str_to_uint64(value, &peer_dev_major) < 0) {
>>> *error_r = t_strdup_printf(
>>> "Invalid peer_dev_major value: %s", value);
>>> return -1;
>>> }
>>> } else if (strcmp(key, "peer_dev_minor") == 0) {
>>> - if (str_to_uint(value, &peer_dev_minor) < 0) {
>>> + if (str_to_uint64(value, &peer_dev_minor) < 0) {
>>> *error_r = t_strdup_printf(
>>> "Invalid peer_dev_minor value: %s", value);
>>> return -1;
>>> @@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const *args
>>> }
>>> if (peer_dev_major != 0 || peer_dev_minor != 0) {
>>> master_input_r->peer_dev =
>>> - makedev(peer_dev_major, peer_dev_minor);
>>> + makedev((unsigned long)peer_dev_major, (unsigned long)peer_dev_minor);
>>> }
>>> return 0;
>>> }
>>> @@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct imap
>>> return -1;
>>> }
>>> if (peer_st.st_ino != master_input->peer_ino ||
>>> - !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) {
>>> + (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) &&
>>> + major(peer_st.st_dev) != (unsigned long)-1)) {
>>> *error_r = t_strdup_printf(
>>> "BUG: Expected peer device=%lu,%lu inode=%s doesn't match "
>>> "client fd's actual device=%lu,%lu inode=%s",
>>> Result
>>> With this patch applied, hibernation works flawlessly under FreeBSD:
>>> # doveadm who
>>> username # service (pids) (ips)
>>> [email protected] 1 imap (26000) (46.10.221.52)
>>> [email protected] 2 imap-hibernate (26260) (46.10.221.52)
>>> No error messages are logged by dovecot when it hibernates and restores
>>> clients. I hope this can be integrated into the upstream code.
>>> Best regards,
>>> Jordan
>>> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected]> wrote:
>>> Hi Timo,
>>> i'm not programmer at all but here is my understanding of the problem:
>>> In src/imap/imap-client-hibernate.c, the code serializes peer_dev_major and peer_dev_minor using major() and minor() macros:
>>> str_printfa(cmd, "\tpeer_dev_major=%lu\tpeer_dev_minor=%lu\tpeer_ino=%llu",
>>> (unsigned long)major(peer_st.st_dev),
>>> (unsigned long)minor(peer_st.st_dev),
>>> (unsigned long long)peer_st.st_ino);
>>> On FreeBSD, major() and minor() can return UINT64_MAX (18446744073709551615) for file descriptors that are not block/character devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX and cannot be parsed by str_to_uint() in imap-master-client.c, causing hibernation to fail.
>>> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected]> wrote:
>>> Hi Timo,
>>> I've made freebsd port patch which looks like that:
>>> # cat files/patch-configure.ac
>>> --- configure.ac.orig 2026-06-25 11:03:42 UTC
>>> +++ configure.ac
>>> @@ -363,7 +363,7 @@ AS_CASE(
>>> DOVECOT_IOLOOP
>>> DOVECOT_NOTIFY
>>> AS_CASE(
>>> - ["$notify"],
>>> + ["$have_notify"],
>>> [none], [BUILD_IMAP_HIBERNATE=0],
>>> [kqueue], [BUILD_IMAP_HIBERNATE=0],
>>> [BUILD_IMAP_HIBERNATE=1])
>>> I'm simulating the situation with telnet:
>>> c idle
>>> + idling
>>> * 4228 EXPUNGE
>>> * 0 RECENT
>>> * OK Still here
>>> * OK Still here
>>> * 4228 EXISTS
>>> * 1 RECENT
>>> * 4228 EXPUNGE
>>> * 0 RECENT
>>> * 4228 EXISTS
>>> * 1 RECENT
>>> * 4228 EXPUNGE
>>> * 0 RECENT
>>> * OK Still here
>>> * OK Still here
>>> * OK Still here
>>> * OK Still here
>>> * 4228 EXISTS
>>> * 1 RECENT
>>> * 4228 EXPUNGE
>>> * 0 RECENT
>>> * OK Still here
>>> * OK Still here
>>> d idle
>>> c BAD Idle completed.
>>> + idling
>>> * OK Still here
>>> * 4228 EXISTS
>>> * 1 RECENT
>>> * 4228 EXPUNGE
>>> * 0 RECENT
>>> * OK Still here
>>> * 4228 EXISTS
>>> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk))
>>> * 4228 EXPUNGE
>>> * OK Still here
>>> in the log I see following:
>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:21:17 classic dovecot[29292]:
>>> imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:21:17 classic dovecot[29292]:
>>> imap([email protected])<30943><EJZELRJVp5QuCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:26:03 classic dovecot[29292]:
>>> imap([email protected])<30943><EJZELRJVp5QuCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:26:03 classic dovecot[29292]:
>>> imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:29:28 classic dovecot[29292]:
>>> imap([email protected])<29454><CLP/EhJVqIguCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:33:36 classic dovecot[29292]:
>>> imap([email protected])<33114><cX5QWRJVrZguCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:33:37 classic dovecot[29292]:
>>> imap([email protected])<33112><NlVOWRJVkbEuCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn
>>> unix:imap-hibernate (uid=125): Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> Jun 25 14:34:40 classic dovecot[29292]:
>>> imap([email protected])<33112><NlVOWRJVkbEuCt00>: Error: Couldn't
>>> hibernate imap client: /var/run/dovecot/imap-hibernate returned
>>> failure: Failed to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Here is my piece of my config:
>>> # dovecot -a | grep hibernate
>>> imap_hibernate_timeout = 1 mins
>>> service imap-hibernate {
>>> unix_listener imap-hibernate {
>>> What we can do more?
>>> KR,
>>> Jordan
>>> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected]> wrote:
>>> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot
>>> <[email protected]> wrote:
>>> Hi,
>>> IMAP hibernation compiles and attempts to run on FreeBSD 15.x
>>> (tested with
>>> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with:
>>> plain
>>> imap-hibernate: Error: conn unix:imap-hibernate (uid=125): Failed
>>> to parse client input: Invalid peer_dev_major value:
>>> 18446744073709551615
>>> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error:
>>> conn unix:imap-hibernate (uid=125): Failed to parse client input:
>>> Invalid peer_dev_major value: 18446744073709551615
>>> Jun 24 21:27:08 classic dovecot[36888]:
>>> imap([email protected])<37120><ExaV/gNVAdt/AAAB>: Error:
>>> Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate
>>> returned failure: Failed to parse client input: Invalid
>>> peer_dev_major value: 18446744073709551615
>>> ..
>>> 1. Disable hibernation at compile time for kqueue systems, or
>>> It was already supposed to be done, but looks like there's a bug.
>>> Can you verify if this works? :
>>> diff --git a/configure.ac b/configure.ac
>>> index 9beacaa299..04f9c8edd6 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF
>>> DOVECOT_IOLOOP
>>> DOVECOT_NOTIFY
>>> AS_CASE(
>>> - ["$notify"],
>>> + ["$have_notify"],
>>> [none], [BUILD_IMAP_HIBERNATE=0],
>>> [kqueue], [BUILD_IMAP_HIBERNATE=0],
>>> [BUILD_IMAP_HIBERNATE=1])
>>> _______________________________________________
>>> dovecot mailing list -- [email protected] To unsubscribe send an email to [email protected]
>
_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]