Tcl package Thread source code

View Ticket
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.
Ticket UUID: c72c2eb54b644dc5e5b44b6a410311fca1b7a3e
Title: Invalid channel names in thread
Type: Bug Version: 2.8.2
Submitter: tomkiti Created on: 2018-03-03 18:49:02
Subsystem: 80. Thread Package Assigned To: nobody
Priority: 5 Medium Severity: Important
Status: Closed Last Modified: 2018-03-05 13:48:55
Resolution: Invalid Closed By: sebres
    Closed on: 2018-03-05 13:48:55
Description:
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 c:/temp/log.txt 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 c:/temp/log.txt 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.
User Comments: sebres added on 2018-03-05 13:48:55:
I've reopened it in tcl-repository (belongs to windows channel subsystem of tcl)...
See https://core.tcl.tk/tcl/tktview/1873ea0ee4f01b264620f89621b98bd8895ce886.