Sieve redirect is broken in 2.3.7.2 - signal 11

Demonhost maillist-dovecot at demonhost.hu
Mon Oct 7 12:09:49 EEST 2019


That's a good thought.

I'm building from the alpine repo and I indeed see pigeonhole is 0.5.5

https://git.alpinelinux.org/aports/tree/main/dovecot/APKBUILD?h=3.8-stable


Let me build it with 0.5.7.2

Regards,
   Laszlo

On 2019. 10. 07. 10:45, Stephan Bosch via dovecot wrote:
>
>
> On 07/10/2019 10:17, Demonhost via dovecot wrote:
>> Hi Stephan,
>>
>> Here it is:
>>
>
> We still can't reproduce it here.
>
> First of all, did you update Pigeonhole along with Dovecot? This kind 
> of weirdness can happen when Pigeonhole was compiled against a 
> different version of Dovecot. You could compile Pigeonhole manually as 
> well to make sure, which also gives you the opportunity to get debug 
> symbols for Pigeonhole as well.
>
> Do you also have your configuration for me (output from `dovecot -n`) ?
>
> Also, can you issue in GDB after it crashed (as you did `bt full` 
> before):
>
> f 1
> p src
>
> Regards,
>
> Stephan.
>
>
>> Program received signal SIGSEGV, Segmentation fault.
>> p_strdup (pool=pool at entry=0x55555579bc20, str=0x6d65642e6c69616d 
>> <error: Cannot access memory at address 0x6d65642e6c69616d>) at 
>> strfuncs.c:51
>> 51      strfuncs.c: No such file or directory.
>> (gdb) bt full
>> #0  p_strdup (pool=pool at entry=0x55555579bc20, str=0x6d65642e6c69616d 
>> <error: Cannot access memory at address 0x6d65642e6c69616d>) at 
>> strfuncs.c:51
>>         mem = <optimized out>
>>         len = <optimized out>
>> #1  0x00007ffff757dd1a in ssl_iostream_settings_init_from 
>> (pool=pool at entry=0x55555579bc20, dest=dest at entry=0x55555579bcf8, 
>> src=0x555555764038) at iostream-ssl.c:298
>>         offset = 0
>>         src_str = 0x555555764038
>>         dest_str = 0x55555579bcf8
>> #2  0x00007ffff7522545 in smtp_submit_session_init 
>> (input=0x555555764008, set=0x7fffffffe378) at smtp-submit.c:84
>>         pool = 0x55555579bc20
>> #3  0x00007ffff752265a in smtp_submit_init_simple (input=<optimized 
>> out>, set=<optimized out>, mail_from=0x555555759b80) at 
>> smtp-submit.c:134
>>         session = <optimized out>
>>         subm = 0x0
>> #4  0x00007ffff687e923 in ?? () from 
>> /usr/lib/dovecot/lib90_sieve_plugin.so
>> No symbol table info available.
>> #5  0x00007ffff65fe761 in sieve_smtp_start () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #6  0x00007ffff65fe869 in sieve_smtp_start_single () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #7  0x00007ffff661c71e in ?? () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #8  0x00007ffff660e8a8 in ?? () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #9  0x00007ffff66100d1 in sieve_result_execute () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #10 0x00007ffff661e9fc in ?? () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #11 0x00007ffff661f638 in sieve_multiscript_run () from 
>> /usr/lib/dovecot/libdovecot-sieve.so.0
>> No symbol table info available.
>> #12 0x00007ffff687f7cb in ?? () from 
>> /usr/lib/dovecot/lib90_sieve_plugin.so
>> No symbol table info available.
>> #13 0x00007ffff7b69960 in mail_deliver (ctx=0x7fffffffe9e0, 
>> storage_r=0x7fffffffe9a8) at mail-deliver.c:498
>>         muser = 0x555555777ef8
>>         ret = <optimized out>
>>         __func__ = "mail_deliver"
>> #14 0x0000555555556fd2 in lda_deliver (stderr_rejection=false, 
>> rcpt_to_source=<optimized out>, rcpt_to=<optimized out>, 
>> path=<optimized out>, user=<optimized out>,
>>     service_user=<optimized out>, ctx=0x7fffffffe9e0) at main.c:253
>>         storage = 0x0
>>         errstr = 0x0
>>         ret = <optimized out>
>>         var_table = <optimized out>
>>         lda_set = <optimized out>
>>         smtp_set = <optimized out>
>> #15 main (argc=<optimized out>, argv=<optimized out>) at main.c:517
>>         t = 0x0
>>         box = 0x0
>>         set_roots = {0x555555758ae0 
>> <smtp_submit_setting_parser_info>, 0x555555758a80 
>> <lda_setting_parser_info>, 0x0}
>>         ctx = {pool = 0x555555759b40, set = 0x555555764078, smtp_set 
>> = 0x555555764008, session = 0x555555759b68, session_time_msecs = 0, 
>> delivery_time_started = {
>> ---Type <return> to continue, or q <return> to quit---
>>             tv_sec = 1570435973, tv_usec = 126295}, dup_db = 
>> 0x55555578e040, session_id = 0x0, src_mail = 0x555555790c68, 
>> mail_from = 0x555555759b80, mail_params = {
>>             auth = 0x0, body = {type = 
>> SMTP_PARAM_MAIL_BODY_TYPE_UNSPECIFIED, ext = 0x0}, envid = 0x0, ret = 
>> SMTP_PARAM_MAIL_RET_UNSPECIFIED, size = 0, extra_params = {
>>               arr = {buffer = 0x0, element_size = 0}, v = 0x0, 
>> v_modifiable = 0x0}}, rcpt_to = 0x555555759bb0, rcpt_params = {orcpt 
>> = {addr_type = 0x0,
>>               addr = 0x555555759bb0, addr_raw = 0x0}, notify = 
>> SMTP_PARAM_RCPT_NOTIFY_UNSPECIFIED, extra_params = {arr = {buffer = 
>> 0x0, element_size = 0}, v = 0x0,
>>               v_modifiable = 0x0}}, rcpt_user = 0x555555777168, 
>> rcpt_default_mailbox = 0x55555555763f "INBOX", dest_mail = 0x0, cache 
>> = 0x0, tempfail_error = 0x0,
>>           tried_default_save = false, saved_mail = false, 
>> save_dest_mail = false, mailbox_full = false, dsn = false}
>>         service_flags = <optimized out>
>>         user = <optimized out>
>>         errstr = 0x0
>>         path = 0x0
>>         rcpt_to = 0x0
>>         final_rcpt_to = 0x0
>>         mail_from = 0x555555759b80
>>         storage_service = 0x7ffff7d6c5a8
>>         service_user = 0x555555763198
>>         service_input = {parent_event = 0x0, module = 0x55555555763b 
>> "lda", service = 0x55555555763b "lda", username = 0x7ffff7832f31 
>> "testaaaaaa at xxxxxxxxx.xx",
>>           session_id = 0x0, session_id_prefix = 0x0, 
>> session_create_time = 0, local_ip = {family = 0, u = {ip6 = 
>> {__in6_union = {__s6_addr = '\000' <repeats 15 times>,
>>                   __s6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __s6_addr32 
>> = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, remote_ip = {family = 0, u = 
>> {ip6 = {__in6_union = {
>>                   __s6_addr = '\000' <repeats 15 times>, __s6_addr16 
>> = {0, 0, 0, 0, 0, 0, 0, 0}, __s6_addr32 = {0, 0, 0, 0}}}, ip4 = 
>> {s_addr = 0}}}, local_port = 0,
>>           remote_port = 0, userdb_fields = 0x0, flags_override_add = 
>> (unknown: 0), flags_override_remove = (unknown: 0), no_userdb_lookup 
>> = false, debug = false,
>>           conn_secured = false, conn_ssl_secured = false}
>>         user_source = <optimized out>
>>         rcpt_to_source = <optimized out>
>>         process_euid = <optimized out>
>>         stderr_rejection = false
>>         ret = <optimized out>
>>         c = <optimized out>
>>
>> On 2019. 10. 06. 23:28, Stephan Bosch via dovecot wrote:
>>>
>>>
>>> On 06/10/2019 23:14, Demonhost wrote:
>>>> I think alpine does not have that
>>>>
>>>> https://pkgs.alpinelinux.org/packages?name=dovecot*&branch=v3.8&repo=main&arch=x86_64 
>>>>
>>>>
>>>> https://git.alpinelinux.org/aports/tree/main/dovecot/APKBUILD?h=3.8-stable 
>>>>
>>>>
>>>> What else would help? strace?
>>>
>>> Do you have the opportunity to build Dovecot yourself, thereby 
>>> including the debug symbols?
>>>
>>> Regards,
>>>
>>> Stephan.
>>>>
>>>> On 2019. 10. 06. 23:05, Stephan Bosch via dovecot wrote:
>>>>>
>>>>>
>>>>> On 06/10/2019 23:03, Demonhost wrote:
>>>>>> Hi Stephan,
>>>>>>
>>>>>> I managed to get GDB, I hope this one helps. If not I can send 
>>>>>> the config too, but exactly same config works with 2.3.6.
>>>>>
>>>>> You don't have the debug symbols for Dovecot installed. Usually, 
>>>>> your system will have a separate package for that. On Debian, it 
>>>>> is called dovecot-dbg.
>>>>>
>>>>>>
>>>>>> 92b9d3412dc8:/$ gdb /usr/libexec/dovecot/dovecot-lda -f 
>>>>>> root at xxxxxxxx -d test at xxxxxxxxx
>>>>>> GNU gdb (GDB) 8.0.1
>>>>>> Copyright (C) 2017 Free Software Foundation, Inc.
>>>>>> License GPLv3+: GNU GPL version 3 or later 
>>>>>> <http://gnu.org/licenses/gpl.html>
>>>>>> This is free software: you are free to change and redistribute it.
>>>>>> There is NO WARRANTY, to the extent permitted by law. Type "show 
>>>>>> copying"
>>>>>> and "show warranty" for details.
>>>>>> This GDB was configured as "x86_64-alpine-linux-musl".
>>>>>> Type "show configuration" for configuration details.
>>>>>> For bug reporting instructions, please see:
>>>>>> <http://www.gnu.org/software/gdb/bugs/>.
>>>>>> Find the GDB manual and other documentation resources online at:
>>>>>> <http://www.gnu.org/software/gdb/documentation/>.
>>>>>> For help, type "help".
>>>>>> Type "apropos word" to search for commands related to "word"...
>>>>>> Warning: //test at xxxxxxxxx: No such file or directory.
>>>>>> Reading symbols from /usr/libexec/dovecot/dovecot-lda...(no 
>>>>>> debugging symbols found)...done.
>>>>>> //root at xxxxxxxx: No such file or directory.
>>>>>> (gdb) r -f root at xxxxxxxx -d test at xxxxxxxxx < message
>>>>>> Starting program: /usr/libexec/dovecot/dovecot-lda -f 
>>>>>> root at xxxxxxxx -d test at xxxxxxxxx < message
>>>>>> process 359 is executing new program: /usr/bin/doveconf
>>>>>> process 359 is executing new program: 
>>>>>> /usr/libexec/dovecot/dovecot-lda
>>>>>>
>>>>>> Program received signal SIGSEGV, Segmentation fault.
>>>>>> 0x00007ffff75b74f7 in p_strdup () from 
>>>>>> /usr/lib/dovecot/libdovecot.so.0
>>>>>> (gdb) bt full
>>>>>> #0  0x00007ffff75b74f7 in p_strdup () from 
>>>>>> /usr/lib/dovecot/libdovecot.so.0
>>>>>> No symbol table info available.
>>>>>> #1  0x00007ffff757dd1a in ssl_iostream_settings_init_from () from 
>>>>>> /usr/lib/dovecot/libdovecot.so.0
>>>>>> No symbol table info available.
>>>>>> #2  0x00007ffff7522545 in smtp_submit_session_init () from 
>>>>>> /usr/lib/dovecot/libdovecot.so.0
>>>>>> No symbol table info available.
>>>>>> #3  0x00007ffff752265a in smtp_submit_init_simple () from 
>>>>>> /usr/lib/dovecot/libdovecot.so.0
>>>>>> No symbol table info available.
>>>>>> #4  0x00007ffff687e923 in ?? () from 
>>>>>> /usr/lib/dovecot/lib90_sieve_plugin.so
>>>>>> No symbol table info available.
>>>>>> #5  0x00007ffff65fe761 in sieve_smtp_start () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #6  0x00007ffff65fe869 in sieve_smtp_start_single () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #7  0x00007ffff661c71e in ?? () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #8  0x00007ffff660e8a8 in ?? () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #9  0x00007ffff66100d1 in sieve_result_execute () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #10 0x00007ffff661e9fc in ?? () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #11 0x00007ffff661f638 in sieve_multiscript_run () from 
>>>>>> /usr/lib/dovecot/libdovecot-sieve.so.0
>>>>>> No symbol table info available.
>>>>>> #12 0x00007ffff687f7cb in ?? () from 
>>>>>> /usr/lib/dovecot/lib90_sieve_plugin.so
>>>>>> No symbol table info available.
>>>>>> #13 0x00007ffff7b69960 in mail_deliver () from 
>>>>>> /usr/lib/dovecot/libdovecot-lda.so.0
>>>>>> No symbol table info available.
>>>>>> #14 0x0000555555556fd2 in main ()
>>>>>> No symbol table info available.
>>>>>>
>>>>>> On 2019. 10. 04. 14:42, Stephan Bosch wrote:
>>>>>>>
>>>>>>>
>>>>>>> Op 4-10-2019 om 12:10 schreef Demonhost via dovecot:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> If we use sieve redirect under dovecot 2.3.7.2 we end up with
>>>>>>>>
>>>>>>>> Oct 04 03:30:31 dockerhost docker[12154]: 2019-10-04T03:30:31 
>>>>>>>> 53ac2ae27650 postfix: 0605F207B0F36: to=<xxxx at xxxx.xx>, 
>>>>>>>> relay=127.0.0.1[127.0.0.1]:10024, delay=1.5, 
>>>>>>>> delays=0.36/0/0/1.1, dsn=2.0.0, status=sent (250 2.0.0 from 
>>>>>>>> MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 
>>>>>>>> 6FC89207B0F38)
>>>>>>>> Oct 04 03:30:31 dockerhost docker[12154]: 2019-10-04T03:30:31 
>>>>>>>> 53ac2ae27650 postfix: 6FC89207B0F38: to=<xxxx at xxxx.xx>, 
>>>>>>>> relay=dovecot, delay=0.31, delays=0.05/0/0/0.26, dsn=4.3.0, 
>>>>>>>> status=deferred (Command died with signal 11: 
>>>>>>>> "/usr/libexec/dovecot/dovecot-lda")
>>>>>>>>
>>>>>>>> Using docker with official alpine image.
>>>>>>>>
>>>>>>>> / # cat /etc/alpine-release
>>>>>>>> 3.8.4
>>>>>>>>
>>>>>>>> / # apk info -v | grep dovecot
>>>>>>>> WARNING: Ignoring APKINDEX.adfa7ceb.tar.gz: No such file or 
>>>>>>>> directory
>>>>>>>> WARNING: Ignoring APKINDEX.efaa1f73.tar.gz: No such file or 
>>>>>>>> directory
>>>>>>>> dovecot-2.3.7.2-r0
>>>>>>>> dovecot-fts-solr-2.3.7.2-r0
>>>>>>>> dovecot-ldap-2.3.7.2-r0
>>>>>>>> dovecot-pigeonhole-plugin-2.3.7.2-r0
>>>>>>>> dovecot-pigeonhole-plugin-ldap-2.3.7.2-r0
>>>>>>>>
>>>>>>>> Sieve rule is:
>>>>>>>> # rule:[test]
>>>>>>>> if header :contains "subject" "test"
>>>>>>>> {
>>>>>>>>         redirect "testemail at gmail.com";
>>>>>>>> }
>>>>>>>>
>>>>>>>> In host's dmesg we found the following:
>>>>>>>> [213184.882341] traps: dovecot-lda[6128] general protection 
>>>>>>>> ip:7ff6cf8144f7 sp:7fff5f800b30 error:0 in 
>>>>>>>> libdovecot.so.0.0.0[7ff6cf724000+360000]
>>>>>>>>
>>>>>>>> Sorry, not knowledgeable enough on how to do the GBD debug.
>>>>>>>> -----------------
>>>>>>>> We went back to previous version and issue disappeared.
>>>>>>>>
>>>>>>>> 8b45bb255b67:/# cat /etc/alpine-release
>>>>>>>> 3.8.4
>>>>>>>> 8b45bb255b67:/# apk info -v | grep dovecot
>>>>>>>> WARNING: Ignoring APKINDEX.adfa7ceb.tar.gz: No such file or 
>>>>>>>> directory
>>>>>>>> WARNING: Ignoring APKINDEX.efaa1f73.tar.gz: No such file or 
>>>>>>>> directory
>>>>>>>> dovecot-2.3.6-r0
>>>>>>>> dovecot-fts-solr-2.3.6-r0
>>>>>>>> dovecot-ldap-2.3.6-r0
>>>>>>>> dovecot-pigeonhole-plugin-2.3.6-r0
>>>>>>>> dovecot-pigeonhole-plugin-ldap-2.3.6-r0
>>>>>>>>
>>>>>>>> Anyone else already had this problem or you know how to fix it?
>>>>>>>
>>>>>>> I can't readily reproduce it with the information available so 
>>>>>>> far. Do you have the opportunity to obtain a GDB backtrace? You 
>>>>>>> can e.g. run LDA manually at the command line with the same 
>>>>>>> arguments and message input Postfix provides and wrap it in GDB 
>>>>>>> if you can reproduce the crash.
>>>>>>>
>>>>>>> Your configuration may also help (output from `dovecot -n`)
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Stephan.
>>>>>>>
>>>>>
>>>
>


More information about the dovecot mailing list