Subject: pkg/30647: gcc bug from PR 23737 in db4 kills netatalk and cyrus-imapd
To: None <,,>
From: Ian Spray <>
List: pkgsrc-bugs
Date: 07/01/2005 10:39:00
>Number:         30647
>Category:       pkg
>Synopsis:       gcc bug from PR 23737 in db4 kills netatalk and cyrus-imapd
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 01 10:39:00 +0000 2005
>Originator:     Ian Spray
>Release:        NetBSD 3.0_BETA (2005-06-18)
System: NetBSD 3.0_BETA NetBSD 3.0_BETA (BLUE) #3: Fri Jun 3 19:33:53 UTC 2005 macppc
Architecture: powerpc
Machine: macppc
The build of pkgsrc/databases/db4 on macppc still encounters the bug mentioned
in PR 23737, and this causes netatalk and cyrus-imapd to fail as they depend
upon db4.  The databases/db4/ file indicates that this is fixed in
gcc 3.3, but although the db4 build completes with 3.3.3, the resulting binary
is not fully working.

I am using the stock gcc that came with the CVS snapshot of 3.0_BETA:

$ gcc -v
Using built-in specs.
Configured with: /home/nick/work/netbsd/src/tools/gcc/../../gnu/dist/gcc/configure
--enable-long-long --disable-multilib --enable-threads --disable-symvers
--build=i386-unknown-netbsdelf2.0. --host=powerpc--netbsd --target=powerpc--netbsd
Thread model: posix
gcc version 3.3.3 (NetBSD nb3 20040520)

Using the above version of gcc on macppc, make sure that db4, cyrus-imapd and
or netatalk are not installed and the pkgsrc build directory for each is clean.

Build and install either cyrus-imapd or netatalk, let the system build and
install the depandancies and then attempt to use either program.

With netatalk it will appear to start, but trying to connect from a remote machine
(in this case running OS X) will cause the program to quit after a few bytes
have been transferred.

With cyrus-imapd it will appear to start, and the cyrus/bin/master program is
shown running by ps -ax, but trying to telnet to port 110 or 143 will fail.
Running cyradm will appear to function until the command 'connect' is issued,
when it will fail to find the daemon.

Ensure the db4, cyrus-imap and netatalk packages are removed and the build
directories cleaned, then edit the databases/db4/ file to change the
gcc version number used to test to something greater than the current gcc
(I used 3.4) and then rebuild and install everything again.

Try either program and it will now work exactly as expected.

RCS file: /cvsroot/pkgsrc/databases/db4/,v
retrieving revision 1.2
diff -u -r1.2
---    27 Dec 2004 04:27:49 -0000      1.2
+++    1 Jul 2005 10:36:45 -0000
@@ -1,4 +1,4 @@
-# $NetBSD:,v 1.2 2004/12/27 04:27:49 jlam Exp $
+# $NetBSD:,v 1.1 2004/11/16 23:45:25 jlam Exp $
 ### [Sun Mar 14 19:32:40 UTC 2004 : jlam]
 ### Pre-3.3 GCC has an optimization bug on powerpc that's tickled by
@@ -10,7 +10,7 @@
 .  if !empty(CC_VERSION:Mgcc*)
 .    if !defined(_GCC_IS_TOO_OLD)
 _GCC_IS_TOO_OLD!=      \
-       if ${PKG_ADMIN} pmatch 'gcc<3.3' ${CC_VERSION}; then            \
+       if ${PKG_ADMIN} pmatch 'gcc<3.4' ${CC_VERSION}; then            \
                ${ECHO} "yes";                                          \
        else                                                            \
                ${ECHO} "no";                                           \