Sometimes, on my Linux server /var/run/utmp becomes corrupted for no apparent reason. It doesn't happen that often and I always forget the procedure to reinitialize it, even though it's simple:

cd /var/run
rm utmp
touch utmp
chown root.utmp utmp
chmod 0664 utmp
telinit q

The call to telinit ensures that utmp is properly reinitialized.