I’ve been using my own modification of bahamut (solid-ircd) for a while now, and a user pointed out an issue to us, that applies to bahamut as well (1.8.6) included.

 

The issue is that initconf never closes the ircd.conf file descriptor, so its essentially a memory leak as well.

 

I checked out the latest bahamut via git-clone to test it out, and make the patch that’s attached on this email.

 

IRCd started under PID 31402

linux-cx9m:/home/jason # lsof -p 31402 | grep "ircd.conf"

 

No file descriptors are open.  So I sent out a SIGHUP.

 

linux-cx9m:/home/jason # kill -HUP 31402

linux-cx9m:/home/jason # lsof -p 31402 | grep "ircd.conf"

ircd    31402 jason    7r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

 

Let’s send out 11 mores just for kicks.

 

linux-cx9m:/home/jason # lsof -p 31402 | grep "ircd.conf"

ircd    31402 jason    7r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason    8r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason    9r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   10r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   11r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   12r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   13r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   14r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   15r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   16r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   17r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

ircd    31402 jason   18r   REG                8,3     4636  66269 /home/jason/ircd/ircd.conf

 

linux-cx9m:/home/jason # ls -l /proc/31402/fd | grep "ircd.conf" | wc -l

12

 

This is a pretty easy fix, attach is a patch that fixes this.  With the patch applied:

 

linux-cx9m:/home/jason # kill -HUP 31761

linux-cx9m:/home/jason # kill -HUP 31761

linux-cx9m:/home/jason # kill -HUP 31761

 

linux-cx9m:/home/jason # lsof -p 31761 | grep "ircd.conf"

 

No file descriptors are open.  I don’t see this being a “big issue,” since flock is never called and the file is only open for reading. 

 

We’ve done quite a few rehashes ourselves and never really noticed this issue until it was pointed out. 

 

[root@vortex ~]# ls -l /proc/5047/fd | grep "ircd.conf" | wc -l

21

 

-

Server Up 632 days, 2:30:22

End of /STATS report.

-

 

I seriously doubt that anyone will keep rehashing the ircd until the maximum number of file descriptors is reached.

 

 

Can anyone else confirm this issue on their server(s)?

 

Juan Baez