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.