From: Donal K. Fellows on
On 11 Aug, 17:41, "tom.rmadilo" <tom.rmad...(a)gmail.com> wrote:
> I would think a failure due to [dict] would show up more randomly.

Or more consistently. The semantics of [dict] are deterministic (and
have been since 8.5.0 at least).

Donal.
From: Bruce on

>> too many nested evaluations (infinite loop?)
>> while executing
>> "dict exists $TimeZoneBad $timezone"
>> (procedure "GetSystemTimeZone" line 21)
>> invoked from within
>> "GetSystemTimeZone"
>> (procedure "::tcl::clock::format" line 13)
>> invoked from within
>> "clock format [clock seconds] -format "%H:%M:%S""
>> (procedure "mylog" line 2)
>> invoked from within
>> "mylog "> about to evaluate the jobline \"$buffer\"""
>> (procedure "readChannel" line 24)
>> invoked from within
>> "readChannel sock312"
>>
>> I am still of the opinion that it is something to do with the new dict
>> command, which is a TCL internal and I do not understand how to
>> diagnose!

an I am still pretty sure your wrong ;)
>
> Interesting that it fails at exactly the same sock iteration: sock312.
> Usually sock names are reused as they go away, or they used to be
> reused. But, regardless...this isn't failing on the first, second,
> third....invocation of [readChannel], but somewhere around the 312th
> time. I would think a failure due to [dict] would show up more
> randomly.

the sock312 is a filehandle returned from opening the socket
it doesn't count every time you read from it.

I would give a 99% chance the issue is there is and update somehwere
which re-enters the readChannel fileevent

for the OP

add this to your code

# at global level
set RecursionCounter 0

# very first line in readChannel proc
puts "Start readChannel: [incr ::RecursionCounter]"

# very lastst line in readChannel proc
puts "Finish readChannel: [incr ::RecursionCounter -1]"


when you run again I bet that whenever you see you problems
you will see Start with ever incrreasing numbers without
the finish parts - that'll prove the problem and then you
can hunt down you rogue updates

Bruce