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