Brian, do you have the DebugP or LogDebugP ACS Kernel parameters set
to true? If so, turn them off, and those Notice messages from
rp_handler should go away.
tcl_url2file is a per-thread global array variable, so given that you
get it that "no such variable" error at all, getting it more than once
makes sense. AFAICT, tcl_url2file is only used 3 times total anywhere
in the OpenACS code, all of them in
rp_handler.
And there, the ONLY time it is read from, is inside a catch. However,
it does call rp_debug with any of the error messages caught, which
logs the Tcl error as a Notice (not an Error), but only if the DebugP
or parameters were true at NaviServer startup time. (If they were
false, the rp_debug proc is defined to do nothing.)
Gustaf made some fixes to that rp_handler code in 2016 and 2017, but
it looks like the same basic design, including the catch, had been
present at least since OpenACS 5.2.3 10+ years ago, and probably
longer than that. I don't understand why rp_handle is (apparently)
designed to rely upon that catch, but it's been that way a long time.