Maintained by: NLnet Labs

[Unbound-users] segfault when using dnstap at high load

Robert Edmonds
Wed Apr 8 05:43:32 CEST 2015


Hi, Rogerio:

Thanks for these details, I can easily spin up a dual core amd64 VM
running Debian jessie soon and try to replicate the problem.

Do you get a segfault immediately, or does it only occur after running
for some time under load?

Can you try testing with "num-threads: 1"?  (This will still result in
multiple threads running in the Unbound process, but the dnstap I/O
thread will only be consuming data from a single worker thread.)

Also, can you compile your unbound package with debugging symbols and
obtain a backtrace from a crash?  You should be able to build a
debugging enabled package with:

    DEB_BUILD_OPTIONS='nostrip debug' dpkg-buildpackage -b -uc -us

Then, run "gdb --args unbound -d" until it crashes, and at the gdb
prompt run:

    thread apply all bt full

Thanks!

Rogerio Bastos wrote:
> On 2015-04-06 22:44, Robert Edmonds wrote:
> >Rogerio Bastos wrote:
> >>I'm trying to test unbound witk dnstap. It works fine with low load, but
> >>exists with segfault at high load. The segfault only happens when dnstap
> >>is
> >>enabled in configuration.
> >>
> >>I am using the debian package (version 1.5.3) avaible in [1] and
> >>recompiled
> >>with dnstap enabled.
> >>I'm following instruction descripted in [2] and using fstrm version
> >>0.2.0.
> >>
> >>To test the server, I'm using dnsblast [3] with the follow command:
> >>
> >>./dnsblast <server address> 50000 500
> >
> >Hi, Rogerio:
> >
> >Sorry to hear that.  I would be happy to help debug dnstap (I wrote the
> >dnstap patchset for Unbound).  Can I get some information about your
> >environment?
> >
> >Can you show the "dnstap:" block of settings from your config, and the
> >"num-threads" server setting?
> 
> I'm using optimisation settings based on [1] (the Debian version is compiled
> with libevent):
> 
> server:
>     num-threads: 2
> 
>     msg-cache-slabs: 2
>     rrset-cache-slabs: 2
>     infra-cache-slabs: 2
>     key-cache-slabs: 2
> 
>     rrset-cache-size: 100m
>     msg-cache-size: 50m
> 
>     outgoing-range: 8192
>     num-queries-per-thread: 4096
> 
>     so-rcvbuf: 4m
>     so-sndbuf: 4m
> 
> 
> I'm using the example from dnstap's site [2]:
> 
> dnstap:
>     dnstap-enable: yes
>     dnstap-socket-path: "/var/run/unbound/dnstap.sock"
>     dnstap-send-identity: yes
>     dnstap-send-version: yes
>     dnstap-log-resolver-response-messages: yes
>     dnstap-log-client-query-messages: yes
> 
> >Does fstrm's "make check" test suite succeed?
> 
> Yes, all tests is ok.
> 
> >What version of protobuf-c are you using?  (Did you compile from source,
> >or did you use a packaged version?)
> 
> The packaged version from Debian Jessie (version 1.0.2).
> 
> >What OS version are you using?  (Based on your mention of the Debian
> >package from experimental, I would guess Debian or Ubuntu.)
> 
> Debian Jessie, the next-stable version.
> 
> >Are you using a uniprocessor or SMP machine?  Also, since there are some
> >architecture-specific parts in fstrm, what architecture are you using?
> 
> I'm using a amd64 virtual machine with a two core CPU.
> 
> [1] https://www.unbound.net/documentation/howto_optimise.html
> [2] http://dnstap.info/Examples/
> 
> -- 
> 
> My email was sent by May First/People Link
> https://mayfirst.org
> _______________________________________________
> Unbound-users mailing list
> Unbound-users at unbound.net
> http://unbound.nlnetlabs.nl/mailman/listinfo/unbound-users

-- 
Robert Edmonds
edmonds at debian.org