Hi, I'm writing because I'm wondering if people out there have had problems with the 4.6 version of Berkeley DB in ports, and I'm wondering if I'm the only one. The reason is this. I'm the author of a DNS server that uses Berkeley DB as a backend and I've stumbled on some database weirdness a few months ago. In particular the query function seems to have stuck after some usage whereas the AXFR function which is on the same descriptor is not stuck. What I've done is I've pulled my DNS server away from answering queries and it does only AXFR as a hidden master, but I do plan on bringing it back some day. I don't have any old core files currently with me so this report is based only on my memory. When I gdb'ed a stuck process by attaching gdb to it I noticed that the query engine was in berkeley db and probably not returning possibly a dead-lock situation.
The way I use berkeley db is across several forked childs, there is a child that does solely AXFR (using a cursor on the db and walking the zones) and there is a child that does queries to port 53. Since the database was opened before the fork() the descriptor is shared among the childs. I always saw this as no problem in terms of how the program was designed. Has anyone else seen possible dead-locks in berkeley db 4.6 as provided by the OpenBSD ports? If not there is a chance it's my program meaning I'll never figure out what is causing this because I have planned on replacing berkeley db altogether, however if it's a known bug it would save me the effort next year. The DNS server was built with OpenBSD as the development machine and is now also running in a strict OpenBSD environment on my VPS's. Thanks in advance for your sharing, -peter