View Ticket
Not logged in
Ticket UUID: 9d19af7adb1b539f1330a7adfb121d05d76071ca
Title: iocmd.tf-24.17.bug3522560 error
Type: Bug Version: trunk
Submitter: dgp Created on: 2014-06-16 14:21:28
Subsystem: 24. Channel Commands Assigned To: dgp
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2014-07-24 17:18:38
Resolution: Fixed Closed By: dgp
    Closed on: 2014-07-24 17:18:38
Description:
Occasionally when running the Tcl test suite, I see:

ioCmd.test
Test file error: tried to post events channel "rc158" is not interested in
    while executing
"chan postevent $hi read"
    (procedure "POST" line 3)
    invoked from within
"POST rc158"
    ("after" script)

Examining ioCmd.test, it is clear that something can go
wrong with test iocmd.tf-24.17.bug3522560
User Comments: dgp added on 2014-07-24 17:18:38:
fixed on trunk.

dgp added on 2014-07-24 17:06:38:
Ok, I think I see the problem here.

The "watch" handler needs to [after cancel]
and existing stream of read timer events in
the $::timer variable before it creates one.
If it doesn't then we lose the handle to the
existing one, and it continues on rescheduling
itself, until it fails because the channel has gone
away.

The failure isn't reliable, because it's all a matter
of timing.  Whether the watch handler is called
more than once.  Whether when it is called a 2nd
time $::timer holds something active, etc.

Another fix might be for the watch handler to
just notice whether $::timer is already set and
if so let the existing stream of read event pings
continue to play out.