Bug 73862 - pdns_recursor related issues fixed
Summary: pdns_recursor related issues fixed
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Norikatsu Shigemura
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-11-12 11:00 UTC by Ralf van der Enden
Modified: 2004-11-19 16:41 UTC (History)
0 users

See Also:


Attachments
pdns-2.9.16_5.diff (2.89 KB, patch)
2004-11-12 11:00 UTC, Ralf van der Enden
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ralf van der Enden 2004-11-12 11:00:51 UTC
There seems to be a problem running the pdns_recursor on FreeBSD 5.3 systems.
In order to workaround the coredump I've added a fix which adds a few lines to
/etc/libmap.conf
Second, I've added some checks when compiling the recursor since it only seems
to run on FBSD 5.0+
Comment 1 Tilman Keskinoz freebsd_committer freebsd_triage 2004-11-12 20:34:14 UTC
Class Changed
From-To: sw-bug->maintainer-update

This is a maintainer-update
Comment 2 Pav Lucistnik freebsd_committer freebsd_triage 2004-11-12 21:58:51 UTC
Are you sure this is a correct thing to do? Don't you somehow ended with
a pdns_recursor binary linked to both libc_r and libpthread? That's
invalid state pointing at local problem and a recompile of affected
binary and all libraries it links should fix it.

I'm almost certain that solving this local problem by global libmap.conf
hackage is a bad thing.

-- 
Pav Lucistnik <pav@oook.cz>
              <pav@FreeBSD.org>

What luck - a dagger!  This is your holder.  Rest there and let me die.
Comment 3 Ralf van der Enden 2004-11-14 23:38:29 UTC
Hello freebsd-gnats-submit,

  I've recompiled all my ports since my upgrade to 5.3 and this has
  been the only way for me to fix the pdns_recursor issue. It's linked
  to libpthread and by adding those lines to libmap.conf I make sure
  that's remapped to libc_r instead. I've notified the author of
  powerdns about this issue and hope he'll fix it in the new release.
  Until then this is the best I can do.

  Any other suggestions are welcome.

-- 
Best regards,
 Ralf                          mailto:tremere@cainites.net
Comment 4 Ralf van der Enden 2004-11-14 23:41:49 UTC
Hello freebsd-gnats-submit,

  By the way... I've not added a global remapping of libpthread to
  libc_r. As you might have noticed it only remaps those libraries for
  the pdns_recursor (I've followed the syntax as stated by the manpage
  for libmap.conf).

-- 
Best regards,
 Ralf                          mailto:tremere@cainites.net
Comment 5 Ralf van der Enden 2004-11-16 22:10:24 UTC
Hello freebsd-gnats-submit,

  Okay. I found the problem. Had to remove some manually added imports
  from the pthread + semaphore library and add the pthread.h and
  semaphore.h include files. Everything works smoothly again (I didn't
  even break it on versions prior to 5.3).

  Here's the new patch:

--- pdns-2.9.16_5.diff begins here ---
diff -ruN powerdns.orig/Makefile powerdns/Makefile
--- powerdns.orig/Makefile      Mon Nov  8 00:29:43 2004
+++ powerdns/Makefile   Tue Nov 16 21:41:44 2004
@@ -7,7 +7,7 @@
 
 PORTNAME=      powerdns
 PORTVERSION=   2.9.16
-PORTREVISION=  4
+PORTREVISION=  5
 CATEGORIES=    dns ipv6
 MASTER_SITES=  http://downloads.powerdns.com/releases/
 DISTNAME=      pdns-${PORTVERSION}
@@ -29,6 +29,7 @@
                POWERDNS_OPTIONS="${POWERDNS_OPTIONS}"
 MAN8=          pdns_control.8 pdns_server.8 zone2sql.8
 STARTUP_SCRIPT=        ${PREFIX}/etc/rc.d/pdns.sh.sample
+LIBMAP_CONF=   /etc/libmap.conf
 
 # use user config if possible
 .if exists(${WRKDIRPREFIX}${.CURDIR}/Makefile.inc)
@@ -63,7 +64,6 @@
 USE_OPENLDAP?=         YES
 USE_LIBTOOL_VER=       13
 INSTALLS_SHLIB=                YES
-USE_GCC=3.2
 CONFIGURE_MODULES+=    "ldap"
 PLIST_SUB+=            WITHLDAP=""
 .else
@@ -80,7 +80,6 @@
 .endif
 
 .if defined(POWERDNS_WITH_RECURSOR)
-USE_GCC=3.2
 CONFIGURE_ARGS+=       --enable-recursor
 PLIST_SUB+=            RECURSOR=""
 .else
@@ -90,13 +89,19 @@
 .include <bsd.port.pre.mk>
 
 .if defined(POWERDNS_WITH_RECURSOR)
-.if exists(/usr/include/ucontext.h)
+.if exists(/usr/include/ucontext.h) && ${OSVERSION} >= 500000
 UCONTEXT!=     ${AWK} '/setcontext/ { print "YES" }' \
                /usr/include/ucontext.h
 .if ${UCONTEXT} == ""
-BROKEN=                setcontext for recursor not found
+BROKEN=                setcontext for recursor not found or FreeBSD version lower than 5.0
+.endif
 .endif
 .endif
+
+.if defined(POWERDNS_WITH_RECURSOR) || defined(WITH_LDAP)
+.if ${OSVERSION} < 500039
+USE_GCC=3.2
+.endif
 .endif
 
 .if defined(NO_DESCRIBE)
@@ -134,7 +139,7 @@
 .endfor
 .endif
 .if !exists(${STARTUP_SCRIPT})
-       ${ECHO_MSG} "Installing ${STARTUP_SCRIPT} startup file."
+       @${ECHO_MSG} "Installing ${STARTUP_SCRIPT} startup file."
        ${SED} -e "s=%%PREFIX%%=${PREFIX}=" \
                ${FILESDIR}/pdns.sh.sample  \
                > ${WRKSRC}/pdns.sh.sample
diff -ruN powerdns.orig/files/patch-pdns_pdns_recursor_cc powerdns/files/patch-pdns_pdns_recursor_cc
--- powerdns.orig/files/patch-pdns_pdns_recursor_cc     Thu Jan  1 01:00:00 1970
+++ powerdns/files/patch-pdns_pdns_recursor_cc  Tue Nov 16 21:34:51 2004
@@ -0,0 +1,33 @@
+--- pdns/pdns_recursor.cc.orig Tue Nov 16 21:21:59 2004
++++ pdns/pdns_recursor.cc      Tue Nov 16 21:22:31 2004
+@@ -22,6 +22,8 @@
+ #include <errno.h>
+ #include <map>
+ #include <set>
++#include <semaphore.h>
++#include <pthread.h>
+ #ifndef WIN32
+ #include <netdb.h>
+ #endif // WIN32
+@@ -42,21 +44,6 @@
+ MemRecursorCache RC;
+ 
+ string s_programname="pdns_recursor";
+-
+-#ifndef WIN32
+-extern "C" {
+-  int sem_init(sem_t*, int, unsigned int){return 0;}
+-  int sem_wait(sem_t*){return 0;}
+-  int sem_trywait(sem_t*){return 0;}
+-  int sem_post(sem_t*){return 0;}
+-  int sem_getvalue(sem_t*, int*){return 0;}
+-  pthread_t pthread_self(void){return (pthread_t) 0;}
+-  int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr){ return 0; }
+-  int pthread_mutex_lock(pthread_mutex_t *mutex){ return 0; }
+-  int pthread_mutex_unlock(pthread_mutex_t *mutex) { return 0; }
+-
+-}
+-#endif // WIN32
+ 
+ StatBag S;
+ ArgvMap &arg()
--- pdns-2.9.16_5.diff ends here ---


-- 
Best regards,
 Ralf                          mailto:tremere@cainites.net
Comment 6 Norikatsu Shigemura freebsd_committer freebsd_triage 2004-11-19 16:14:02 UTC
Responsible Changed
From-To: freebsd-ports-bugs->nork

I'll handle this.
Comment 7 Norikatsu Shigemura freebsd_committer freebsd_triage 2004-11-19 16:41:01 UTC
State Changed
From-To: open->closed

Committed, thanks!