2020-11-17
| ||
09:16 | • Closed ticket [3001677f64]: TCL fails on Check phase (test failure: socket_inet-13.1: Testing use of shared socket between two threads FAILED) plus 7 other changes artifact: 9e8768fdf0 user: oehhar | |
2017-04-29
| ||
04:33 | • Ticket [3001677f64]: 3 changes artifact: 3399114b95 user: aspect | |
2017-02-23
| ||
08:47 | • New ticket [3001677f64]. artifact: 2af10e6704 user: oehhar | |
Ticket UUID: | 3001677f646fbff8637c82c9932954ce5d497234 | |||
Title: | TCL fails on Check phase (test failure: socket_inet-13.1: Testing use of shared socket between two threads FAILED) | |||
Type: | Bug | Version: | 8.6.4 | |
Submitter: | oehhar | Created on: | 2017-02-23 08:47:37 | |
Subsystem: | 25. Channel System | Assigned To: | nobody | |
Priority: | 5 Medium | Severity: | Minor | |
Status: | Closed | Last Modified: | 2020-11-17 09:16:20 | |
Resolution: | Later | Closed By: | oehhar | |
Closed on: | 2020-11-17 09:16:20 | |||
Description: |
Hello, I´m trying to build 'tcl' version 8.6.4 on GNU/Hurd system through Guix package manager, in the 'Check' phase stops. Any ideas about what's going on? /------------------------------------------------/ socket.test ==== socket_inet-13.1 Testing use of shared socket between two threads FAILED ==== Contents of test case: # create a thread set serverthread [thread::create -preserved [string map [list @localhost@ $localhost] { set f [socket -server accept -myaddr @localhost@ 0] set listen [lindex [fconfigure $f -sockname] 2] proc accept {s a p} { fileevent $s readable [list echo $s] fconfigure $s -buffering line } proc echo {s} { global i set l [gets $s] if {[eof $s]} { global x close $s set x done } else { incr i puts $s $l } } set i 0 vwait x close $f }]] set port [thread::send $serverthread {set listen}] set s [socket $localhost $port] fconfigure $s -buffering line catch { puts $s "hello" gets $s result } close $s thread::release $serverthread append result " " [llength [thread::names]] ---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: thread "tid0x4" does not exist while executing "thread::release $serverthread" ("uplevel" body line 34) invoked from within "uplevel 1 $script" ---- errorCode: NONE ==== socket_inet-13.1 FAILED ==== socket_inet6-3.1 socket conflict FAILED ==== Contents of test case: socket -server accept -myaddr $localhost $listen ---- Test completed normally; Return code was: 0 ---- Return code should have been one of: 1 ==== socket_inet6-3.1 FAILED ==== socket_inet6-11.6 socket conflict FAILED ==== Contents of test case: set s2 [socket -server accept -myaddr $localhost [getPort $s1]] list [getPort $s2] [close $s2] ---- Test completed normally; Return code was: 0 ---- Return code should have been one of: 1 ==== socket_inet6-11.6 FAILED /------------------------------------------------/ | |||
User Comments: |
oehhar added on 2020-11-17 09:16:20:
no follow-up closing aspect added on 2017-04-29 04:33:26: It looks to me like the serverthread script needs [thread::wait] at the end. This could also be documented better in thread.man: $ cat tt.tcl package require Thread set t1 [thread::create -preserved {after 50}] after 100 thread::release $t1 $ tclsh tt.tcl thread "tid0x7f5e3ca2b700" does not exist while executing "thread::release $t1" (file "tt.tcl" line 5) Even more stark: % thread::create -preserved {} thread "tid0x7f177c7d8700" does not exist |