How to get information from BIND coredumps with bind-dyndb-ldapΒΆ

  • Install debuginfo packages:

    $ debuginfo-install bind bind-dyndb-ldap
    
    • Package versions have to match precisely. Pull older versions from Koji as necessary:

      $ koji download-build --arch={x86_64,noarch} bind-9.9.3-14.P2.fc19``
      $ yum downgrade bind*.rpm``
      
  • Use GDB to read coredumps as usual: http://stackoverflow.com/questions/5115613/core-dump-file-analysis

    $ gdb `which named` coredump
    
  • Find the thread where it crashed:

    (gdb) thread apply all bt
    Thread 1 (Thread 0x7fedd7f75700 (LWP 1383)):
    #0  0x00007fedd92999e9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    ---Type <return> to continue, or q <return> to quit---
    #1  0x00007fedd929b0f8 in __GI_abort () at abort.c:90
    #2  0x00007feddc2da4a6 in assertion_failed (file=<optimized out>, line=<optimized out>, type=<optimized out>, cond=<optimized out>) at ./main.c:219
    #3  0x00007fedda4d910a in isc_assertion_failed (file=file@entry=0x7feddbc2238f "db.c", line=line@entry=636, type=type@entry=isc_assertiontype_require,
        cond=cond@entry=0x7feddbc1d8c0 "nodep != ((void *)0) && *nodep != ((void *)0)") at assertions.c:57
    #4  0x00007feddbaeeedf in dns_db_detachnode (db=<optimized out>, nodep=nodep@entry=0x7fedd7f71a18) at db.c:636
    #5  0x00007feddc2e8f9f in query_find (client=0x7fedd0047190, event=event@entry=0x0, qtype=<optimized out>, qtype@entry=28) at query.c:6507
    #6  0x00007feddc2ef2a9 in ns_query_start (client=client@entry=0x7fedd0047190) at query.c:7790
    #7  0x00007feddc2cf8d3 in client_request (task=<optimized out>, event=<optimized out>) at client.c:1970
    #8  0x00007fedda4faf46 in dispatch (manager=0x7feddc252010) at task.c:1116
    #9  run (uap=0x7feddc252010) at task.c:1286
    #10 0x00007fedda0b0c53 in start_thread (arg=0x7fedd7f75700) at pthread_create.c:308
    #11 0x00007fedd9359dbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
    
  • And now find out why ... :-)

  • In the example above, frame 5 shows some code related to DNS64 which was never tested with bind-dyndb-ldap...