In wish 8.6.8 on Windows, the 2nd, 3rd, and 4th files that are opened within a thread return the channel names stdin, stdout, and stderr. This does not happen in the main thread, in tclsh 8.6.8, in wish 8.5.*, or on Linux.

For example, the following script writes the first 5 opened channel names to a log file:

    package require Thread
    set tid [::thread::create]
    ::thread::send $tid {
        set chan1 [open w]
        set chan2 [open nul w]
        set chan3 [open nul w]
        set chan4 [open nul w]
        set chan5 [open nul w]
        puts $chan1 "chan1 = $chan1"
        puts $chan1 "chan2 = $chan2"
        puts $chan1 "chan3 = $chan3"
        puts $chan1 "chan4 = $chan4"
        puts $chan1 "chan5 = $chan5"
        close $chan1
        close $chan2
        close $chan3
        close $chan4
        close $chan5
    }
    exit

The file will contain something like:

    chan1 = file303b0c0
    chan2 = stdin
    chan3 = stdout
    chan4 = stderr
    chan5 = file3033160

I don't know if the problem is in Tcl, wish, or the Thread package, but I'm reporting it here.