Reproducible SIGSEGV when Dovecot 2.3 compiled against glibc-2.28

Aki Tuomi aki.tuomi at dovecot.fi
Wed Aug 8 12:47:05 EEST 2018



On 08.08.2018 10:55, Reuben Farrelly wrote:
>
> On 8/08/2018 5:29 pm, Thore Bödecker wrote:
>> Hey,
>>
>> you mentioned that dovecot builds fine, but does "make check" also
>> complete successfully with a glibc-2.28 build on a glibc-2.28 system?
>>
>> We have been seeing segfaults during "make check" and it seems the
>> following
>> patch was able to make the testsuite run successfully.
> >
>> Just out of curiosity, could you try this patch and see if this fixes
>> the issues you're experiencing?
>>
>>
>> include-crypt-h.patch:
>> --------8<--------
>> diff -up dovecot-2.3.0.1/src/auth/mycrypt.c.libxcrypt
>> dovecot-2.3.0.1/src/auth/mycrypt.c
>> --- dovecot-2.3.0.1/src/auth/mycrypt.c.libxcrypt       2018-02-28
>> 15:28:58.000000000 +0100
>> +++ dovecot-2.3.0.1/src/auth/mycrypt.c 2018-03-27 10:57:38.447769201
>> +0200
>> @@ -14,6 +14,7 @@
>>   #  define _XPG6 /* Some Solaris versions require this, some break
>> with this */
>>   #endif
>>   #include <unistd.h>
>> +#include <crypt.h>
>>
>>   #include "mycrypt.h"
>>
>> -------->8--------
>
> Ok, well....after running 'make check' I also saw a failure due to a
> segfault.  It's the same crash Thore is seeing:
>
> /bin/sh ../../libtool  --tag=CC   --mode=link x86_64-pc-linux-gnu-gcc
> -std=gnu99 -O0 -g -pipe -march=native -mtune=native -ggdb
> -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
> -mfunction-return=thunk -mindirect-branch=thunk -Wall -W
> -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith
> -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime
> -Wstrict-aliasing=2   -module -avoid-version  -Wl,-O1 -Wl,--as-needed -o
> libauthdb_imap.la -rpath /usr/lib64/dovecot/auth
> libauthdb_imap_la-passdb-imap.lo ../lib-imap-client/libimap_client.la
> ../../src/lib-dovecot/libdovecot.la -export-dynamic -ldl
> libtool: link: x86_64-pc-linux-gnu-gcc -shared  -fPIC -DPIC
> .libs/libauthdb_imap_la-passdb-imap.o  -Wl,--whole-archive
> ../lib-imap-client/.libs/libimap_client.a -Wl,--no-whole-archive
> -Wl,-rpath
> -Wl,/home/portage/portage/net-mail/dovecot-9999_p20180807/work/dovecot-9999_p20180807/src/lib-dovecot/.libs
> -Wl,-rpath -Wl,/usr/lib64/dovecot -Wl,--as-needed
> ../../src/lib-dovecot/.libs/libdovecot.so -ldl  -O0 -g -march=native
> -mtune=native -ggdb -fstack-protector-strong -mfunction-return=thunk
> -mindirect-branch=thunk -Wl,-O1   -Wl,-soname -Wl,libauthdb_imap.so -o
> .libs/libauthdb_imap.so
> libtool: link: ( cd ".libs" && rm -f "libauthdb_imap.la" && ln -s
> "../libauthdb_imap.la" "libauthdb_imap.la" )
> make  check-local
> make[3]: Entering directory
> '/home/portage/portage/net-mail/dovecot-9999_p20180807/work/dovecot-9999_p20180807/src/auth'
> for bin in test-libpassword test-auth-cache test-auth; do \
>   if !  ./$bin; then exit 1; fi; \
> done
> /bin/sh: line 1: 31821 Segmentation fault      ./$bin
> make[3]: *** [Makefile:1924: check-local] Error 1
> make[3]: Leaving directory
> '/home/portage/portage/net-mail/dovecot-9999_p20180807/work/dovecot-9999_p20180807/src/auth'
> make[2]: *** [Makefile:1579: check-am] Error 2
>
>
> However by applying the patch to include crypt.h (as above) it not
> only fixed the make test but also has fixed the glibc runtime problem
> too.
>
> In other words - rebuild on glibc-2.28 just now and executed on
> glibc-2.28 based system resulted in a successful and usable auth binary.
>
> Thanks Thore!
>
> Reuben
>

I can also confirm that the patch fixes things, thank you!

Aki


More information about the dovecot mailing list