



An Interrupt handler under windows is doing a callback to a function that is in the same memory space as the Tcl interpreter. Inside the callback procedure a Tcl_Eval(interp, "puts Hello") is done. The word "Hello" appears on the console when tcl 8.3 is used. When tcl 8.4 is used however, "Hello" does not appear on the console. What can I do to make "puts" work from a callback routine under tcl 8.4
There really isn't enough information in this post to help determine the problem. Are these ActiveTcl installs? Is it perhaps a threading issue?
This is an ActiveTcl install. This is apparently a threading issue. It seems that when I do a Tcl_Eval(interp, "puts Hello") from a thread callback, I get an error that the stdout handle can not be found. I understand that this is a problem under Windows. Still its odd that it works under 8.3 and not 8.4. Is there a reasonable workaround?
8.3 was not built threaded, so that may be the issue. However, you also need to ensure that you are initializing the interpreter correctly to even get std channels (which should only exist in non-gui apps). If threading is the issue, then you just need to ensure that you are marshalling it to the correct thread.