I figured it out. The big hint was that the above error happened with
my own Tcl built from source, but
not when I used the Tcl and
Naviserver built by
Gustaf's install-ns.sh script.
So there was something different about the two, although their output
mostly looked identical!
The difference was that I placed my nsf
source inside
Tcl's pkgs/
directory (along with thread, tdom, and
itcl). That apparently mostly works, but fails to set up
something that xotcl::serializer needs. Gustaf's script, on the other
hand, built nsf
separately, while pointing it to the
installed Tcl location. I switched my build to do it that way too,
and now xotcl::serializer works!