When you are running Xfree86 as root, xscreensaver does not work for several reasons. First, it sets its uid/gid to nobody and then it can't access the screen; adding a xhost +nobody would be a very bad idea. It also has problems with the .xscreensaver file (according to xscreensaver-demo) because it will read ~nobody/.xscreensaver but xscreensaver-demo will modify ~root/.xscreensaver. I don't normally run X as root but was doing so while initially setting up a system. Also, some of the redhat system management tools are designed to be run as root. Also, when xscreensaver is run as an ordinary user, it does not lock the linux virtual console switching which makes it completely useless as a screen locker.
xscreensaver will not lock the screen as root; it's designed that way. Unfortunately, it can't catch the switch VC keycodes, so it can't prevent it.
*** Bug 11419 has been marked as a duplicate of this bug. ***
*** Bug 41108 has been marked as a duplicate of this bug. ***
*** Bug 54070 has been marked as a duplicate of this bug. ***
*** Bug 55442 has been marked as a duplicate of this bug. ***
*** Bug 74898 has been marked as a duplicate of this bug. ***
*** Bug 78370 has been marked as a duplicate of this bug. ***