If you define unknown to call _unknown but there is no _unknown command, what happens? Easy! Tcl calls unknown to try to fix things. With a simplistic unknown definition, this can result in a recursive loop of trying to handle an absent _unknown by calling _unknown but that is absent so we call _unknown but that is absent so we call _unknown and so on…
acbsv --> "no such command; call unknown"
unknown acbsv --> "I can do this..."
_unknown acbsv --> "no such command; call unknown"
unknown _unknown --> "I can do this..."
_unknown _unknown --> "no such command; call unknown"
unknown _unknown --> "I can do this..."
_unknown _unknown --> "no such command; call unknown"
unknown _unknown --> "I can do this..."
_unknown _unknown --> "no such command; call unknown"
unknown _unknown --> "I can do this..."
...
Tcl imposes a limit on the maximum stack depth to prevent this sort of thing causing real problems. You can raise the stack depth limit (e.g., with interp recursionlimit {} 1500) if you need it, but you are advised to only do that if you do need it. Most code doesn't, as Tcl programmers tend to write imperative iterative code, not functional code. (The hard limit is fairly low in Tcl 8.4 and 8.5, as recursive Tcl calls result in recursive C calls and some of the things in there have substantial activation records. Tcl 8.6 has no such limits due to using a “stackless” implementation; you can go as deep as your heap memory allows if you want.)
unknownand have you also usedrename unknown unknown_earlier in the script? My guess is that theproc unknownthat you used will have the answer there.