[Pdns-users] [recursor] Segmentation fault at startup

bert hubert bert.hubert at netherlabs.nl
Wed May 26 09:17:25 UTC 2010


On Wed, May 26, 2010 at 11:01:38AM +0200, Stephane Bortzmeyer wrote:
> [BTW, it would be better to do so on a ticketing system but I cannot
> find a way to create a new ticket in the PowerDNS Trac.]

There is some anti-spam trickery:
TO FILE BUGS, OR CHANGE THE WIKI, CLICK 'LOGIN' ABOVE, USERNAME anon
PASSWORD "No Spam" without quotes or the space in between '

So the password is NoSpam 

> > Could you split line 1508 as follows:
> > 
> > NetmaskGroup* oldAllowFrom = t_allowFrom;
> > NetmaskGroup* allowFrom = new NetmaskGroup;
> 
> (gdb) run
> Starting program: /home/stephane/Programmation/DNS/pdns-recursor-3.2/pdns_recursor 
> May 26 10:59:56 PowerDNS recursor 3.2 (C) 2001-2010 PowerDNS.COM BV (May 26 2010, 10:58:27, gcc 4.1.3 20080704 prerelease (NetBSD nb2 20081120)) starting up
> May 26 10:59:56 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
> May 26 10:59:56 Operating in 32 bits mode
> May 26 10:59:56 Reading random entropy from '/dev/urandom'
> 
> Program received signal SIGSEGV, Segmentation fault.
> parseACLs () at pdns_recursor.cc:1508
> 1508      NetmaskGroup* oldAllowFrom = t_allowFrom;

We could probably boil this issue down to a tiny testcase that would crash
on NetBSD. This could then lead to a bugreport to NetBSD.

Can you try to compile this (g++ t.cc -o t):
#include <stdio.h>


class Bogo
{
public:

  explicit Bogo(char a)
  {
    d_a = a;
  }

  char d_a;
};

__thread Bogo* t_a;

int main()
{
  t_a = new Bogo('a');
  
  Bogo* b = t_a;
  
  printf("%c\n", b->d_a);
}

It is unlikely that PowerDNS will remove the __thread variables since they
work very well on all other relevant platforms ;-(

	Bert



More information about the Pdns-users mailing list