Tcl Source Code

Check-in [29535daab1]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Tame deadlocks in broken refchan tests [Bug 3522560]
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 29535daab164e8739e600dfa6fa4a640f6b119e5
User & Date: ferrieux 2012-04-30 21:53:55
Context
2012-05-02
06:50
TclWinCPUID now respects -fPIC compilation on 32-bit Linux check-in: cf269b5da3 user: jan.nijtmans tags: trunk
2012-05-01
12:21
merge trunk Leaf check-in: 18b67ecc84 user: dgp tags: tip-401
04:51
merge trunk check-in: f0310da009 user: dkf tags: tip-400-impl
2012-04-30
21:53
Tame deadlocks in broken refchan tests [Bug 3522560] check-in: 29535daab1 user: ferrieux tags: trunk
12:55
Revert introduction of non-portable asm snippet in function TclWinCPUID, to restore compilability on... check-in: 2e93a2feb3 user: ferrieux tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.





1
2
3
4
5
6
7
8




2012-14-28  Alexandre Ferrieux  <[email protected]>

	IMPLEMENTATION OF TIP#398

	* generic/tclIO.c: Quickly Exit with Non-Blocking Blocked Channels
	* tests/io.test  : *** POTENTIAL INCOMPATIBILITY ***
	* doc/close.n    : (compat flag available)

>
>
>
>
|







1
2
3
4
5
6
7
8
9
10
11
12
2012-04-30  Alexandre Ferrieux  <[email protected]>

	* tests/ioCmd.test: Tame deadlocks in broken refchan tests [Bug 3522560]

2012-04-28  Alexandre Ferrieux  <[email protected]>

	IMPLEMENTATION OF TIP#398

	* generic/tclIO.c: Quickly Exit with Non-Blocking Blocked Channels
	* tests/io.test  : *** POTENTIAL INCOMPATIBILITY ***
	* doc/close.n    : (compat flag available)

Changes to tests/ioCmd.test.

2571
2572
2573
2574
2575
2576
2577

2578
2579
2580
2581
2582
2583
2584
	note [puts -nonewline $c ABC ; flush $c]
	close $c
	notes
    } c]
    set res
} -cleanup {
    proc foo {args} {onfinal; set ::done-24.15 1; return 3}

    vwait done-24.15
    rename foo {}
    unset res
} -result {{write rc* ABC} {watch rc* write} {}} \
    -constraints {testchannel thread}

test iocmd.tf-24.16 {chan write, note the background flush setup by close due to the EAGAIN leaving data in buffers.} -match glob -setup {







>







2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
	note [puts -nonewline $c ABC ; flush $c]
	close $c
	notes
    } c]
    set res
} -cleanup {
    proc foo {args} {onfinal; set ::done-24.15 1; return 3}
    after 1000 {set ::done-24.15 2}
    vwait done-24.15
    rename foo {}
    unset res
} -result {{write rc* ABC} {watch rc* write} {}} \
    -constraints {testchannel thread}

test iocmd.tf-24.16 {chan write, note the background flush setup by close due to the EAGAIN leaving data in buffers.} -match glob -setup {
2599
2600
2601
2602
2603
2604
2605

2606
2607
2608
2609

2610
2611
2612
2613
2614
2615
2616
	notes
    } c]
    # Replace handler with all-tracking one which doesn't error.
    # This will tell us if a write-due-flush is there.
    proc foo {args} { onfinal; note BG ; track ; set ::endbody-24.16 1}
    # Flush (sic!) the event-queue to capture the write from a
    # BG-flush.

    vwait endbody-24.16
    set res
} -cleanup {
    proc foo {args} {onfinal; set ::done-24.16 1; return 3}

    vwait done-24.16
    rename foo {}
    unset res
} -result {{write rc* ABC} {watch rc* write} {} BG {write rc* ABC}} \
    -constraints {testchannel thread}

# --- === *** ###########################







>




>







2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
	notes
    } c]
    # Replace handler with all-tracking one which doesn't error.
    # This will tell us if a write-due-flush is there.
    proc foo {args} { onfinal; note BG ; track ; set ::endbody-24.16 1}
    # Flush (sic!) the event-queue to capture the write from a
    # BG-flush.
    after 1000 {set ::endbody-24.16 2}
    vwait endbody-24.16
    set res
} -cleanup {
    proc foo {args} {onfinal; set ::done-24.16 1; return 3}
    after 1000 {set ::done-24.16 2}
    vwait done-24.16
    rename foo {}
    unset res
} -result {{write rc* ABC} {watch rc* write} {} BG {write rc* ABC}} \
    -constraints {testchannel thread}

# --- === *** ###########################