Compiling Dovecot on Solaris 11 fails
Hi,
Tried to build dovecot-2.3.4 on Solaris 11 x86 and it fails at configure part. I just went checked and it last version it works on is v2.3.2.1
Version 2.3.2.1 (OK) # ./configure .... checking Linux compatible mremap()... no checking whether shared mmaps get updated by write()s... yes checking whether fd passing works... yes ...
Version 2.3.4 (FAIL) .... checking Linux compatible mremap()... no checking whether shared mmaps get updated by write()s... no checking whether fd passing works... no configure: error: fd passing is required for Dovecot to work ....
config.log shows: configure:22538: checking whether shared mmaps get updated by write()s configure:22585: gcc -o conftest -std=gnu99 -g -O2 -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 conftest.c >&5 configure:22585: $? = 0 configure:22585: ./conftest ./configure[2026]: eval: line 1: 29183: Memory fault(coredump) .... onfigure:22610: checking whether fd passing works configure:22685: gcc -o conftest -std=gnu99 -g -O2 -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 -I./src/lib ./src/lib/fdpass.c conftest.c >&5 configure:22685: $? = 0 configure:22685: ./conftest ./configure[2026]: eval: line 1: 29206: Memory fault(coredump) ...
$ ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited open files (-n) 512 pipe size (512 bytes, -p) 10 stack size (kbytes, -s) unlimited cpu time (seconds, -t) unlimited max user processes (-u) 29995 virtual memory (kbytes, -v) unlimited
Any ideas and thanks.
Andrew
-- Andrew Watkins * Birkbeck, University of London * Computer Science *
- http://notallmicrosoft.blogspot.com *
- UKOUG Systems SIG Chair *
- UKOUG Tech committee *
- tel: 020 7631 6720 *
::e-mails are only read & actioned between 0900 and 1800 hours (Monday - Friday)
On 03 January 2019 at 18:45 Andrew Watkins andrew@dcs.bbk.ac.uk wrote:
Hi,
Tried to build dovecot-2.3.4 on Solaris 11 x86 and it fails at configure part. I just went checked and it last version it works on is v2.3.2.1
Version 2.3.2.1 (OK) # ./configure .... checking Linux compatible mremap()... no checking whether shared mmaps get updated by write()s... yes checking whether fd passing works... yes ...
Version 2.3.4 (FAIL) .... checking Linux compatible mremap()... no checking whether shared mmaps get updated by write()s... no checking whether fd passing works... no configure: error: fd passing is required for Dovecot to work ....
config.log shows: configure:22538: checking whether shared mmaps get updated by write()s configure:22585: gcc -o conftest -std=gnu99 -g -O2 -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 conftest.c >&5 configure:22585: $? = 0 configure:22585: ./conftest ./configure[2026]: eval: line 1: 29183: Memory fault(coredump) .... onfigure:22610: checking whether fd passing works configure:22685: gcc -o conftest -std=gnu99 -g -O2 -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 -I./src/lib ./src/lib/fdpass.c conftest.c >&5 configure:22685: $? = 0 configure:22685: ./conftest ./configure[2026]: eval: line 1: 29206: Memory fault(coredump) ...
$ ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited open files (-n) 512 pipe size (512 bytes, -p) 10 stack size (kbytes, -s) unlimited cpu time (seconds, -t) unlimited max user processes (-u) 29995 virtual memory (kbytes, -v) unlimited
Any ideas and thanks.
Andrew
-- Andrew Watkins * Birkbeck, University of London * Computer Science *
- http://notallmicrosoft.blogspot.com *
- UKOUG Systems SIG Chair *
- UKOUG Tech committee *
- tel: 020 7631 6720 *
::e-mails are only read & actioned between 0900 and 1800 hours (Monday - Friday)
Backtrace from the core dump could help.
Aki
On 03/01/2019 16:45, Andrew Watkins wrote:
Tried to build dovecot-2.3.4 on Solaris 11 x86 and it fails at configure part. I just went checked and it last version it works on is v2.3.2.1
...
.... checking Linux compatible mremap()... no checking whether shared mmaps get updated by write()s... no checking whether fd passing works... no configure: error: fd passing is required for Dovecot to work ....
In think it's thunk (but I forget exactly what aspect).
Try: ./configure --disable-hardening ...
Or build with cc.
(Sorry, it's too late for me to do another test today.)
On 03 January 2019 at 21:07 James list@xdrv.co.uk wrote:
On 03/01/2019 16:45, Andrew Watkins wrote:
Tried to build dovecot-2.3.4 on Solaris 11 x86 and it fails at configure part. I just went checked and it last version it works on is v2.3.2.1
...
.... checking Linux compatible mremap()... no checking whether shared mmaps get updated by write()s... no checking whether fd passing works... no configure: error: fd passing is required for Dovecot to work ....
In think it's thunk (but I forget exactly what aspect).
Try: ./configure --disable-hardening ...
Or build with cc.
(Sorry, it's too late for me to do another test today.)
It seems we need to improve the thunk code to check that the binaries generated are actually able to run, and not just check that the flag is accepted by compiler.
Aki
On 3 Jan 2019, at 18.45, Andrew Watkins andrew@dcs.bbk.ac.uk wrote:
Hi,
Tried to build dovecot-2.3.4 on Solaris 11 x86 and it fails at configure part. I just went checked and it last version it works on is v2.3.2.1
does work just fine on my solaris 11 x86 box.
configure:22610: checking whether fd passing works configure:22685: gcc -o conftest -std=gnu99 -g -O2 -fstack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I./src/lib ./src/lib/fdpass.c conftest.c -lsocket -lnsl -lresolv >&5 configure:22685: $? = 0 configure:22685: ./conftest configure:22685: $? = 0 configure:22708: result: yes
What is your Solaris release and which version of gcc you are using?
my test system is solaris 11.3 and I have gcc 4.5.2.
Sami
On 01/ 4/19 09:40 AM, James wrote:
my test system is solaris 11.3 and I have gcc 4.5.2.
Old versions of gcc do not have -mfunction-return=thunk
7 and 8 have it.
Thanks for all this information and you have all pointed me in the right direction. The reason I get this error now is that I have upgraded to Solaris 11.4 and GCC 7.3 (Solaris 11.4 does not come with gcc 4 any more)
Solaris 11.3 and gcc 4.x all works OK.
Solaris 11.3 & 11.4 and gcc 7.3 fails with the given error.
Solaris 11.3 & 11.4 and gcc 7.3 add "./configure --disable-hardening" and it all works.
Thanks,
Andrew
-- Andrew Watkins * Birkbeck, University of London * Computer Science *
- http://notallmicrosoft.blogspot.com *
- UKOUG Systems SIG Chair *
- UKOUG Tech committee *
- tel: 020 7631 6720 *
::e-mails are only read & actioned between 0900 and 1800 hours (Monday - Friday)
participants (4)
-
Aki Tuomi
-
Andrew Watkins
-
James
-
Sami Ketola