Forum OpenACS Q&A: Re: error in rp_handler: can't read "tcl_url2file
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.