The colors are defined in /usr/X11R6/lib/X11/rgb If the file is not installed, broken or somehow the xserver tries to use a different file then the colors are not defined.
I have a /usr/X11R6/lib/X11/rgb.txt. I also created a symbolic link, rgb->rgb.txt.
showrgb should print a lot of entries if everything is ok.
It does.
$ showrgb | grep black 0 0 0 black
Still, I get Warning: Color name "black" is not defined.
Attention Thomas Dickey: By the way, there's a wrap-around error when that message is printed; it double-backs onto itself. TERM=xterm, latest Xorg, xterm, and terminfo.
Despite the warning, the colors do take effect! That is, my .Xdefaults contains
xterm*Foreground: white
xterm*Background: black
and the xterm gets the colors appropriately, although when it just starts, the background is washed white, and only turns to black after I do /usr/bin/clear.