TCL and NaviServer let you solve almost every requirement fast, reliable and straightforward. This is one reason (not the only one) the field of integration with other (scripting) languages is sometimes a little bit untouched.
Of course there are good reasons for a native integration beyond the limitations of the Common Gateway Interface. Take a look at the pages of this section to verify the current status of integration. (Note: For now you may have to ask the Mailing List as this summary/documentation is at the early stages)
Apart from the specific details of integration of your favoured language you may have to take a look at the stacksize parameter of your config file.
In general, the default C-stack size is operating system dependent. The provide sample config files (nsd-config.tcl) contains the following stacksize (in bytes)
# # Thread library (nsthread) parameters # ns_section "ns/threads" ns_param stacksize [expr 512*1024] ;# Per-thread stack size.
which might not ne sufficient for deeper tcl call stacks (note that this depends on the tcl version and the used tcl modules). In general, it is recommended to use multiples of page sizes (e.g. Mac OS X enforces this). To increase the C stacksize to 1 Megabyte use:
# # Thread library (nsthread) parameters # ns_section "ns/threads" ns_param stacksize [expr 128 * 8192] ;# Per-thread stack size.
If the size of the stack is not enough you may encounter crashes without real explanation.