Overview
Artifact ID: | 38f6a2b0a2f32b654e1d1943c39d5f23abd3a74b |
---|---|
Ticket: | 3439728fffffffffffffffffffffffffffffffff
Leave execution trace created in the same proc doesn't fire |
User & Date: | dkf 2013-11-12 12:33:43 |
Changes
- assignee changed to: "aku"
- closedate changed to: "2456609.02341696"
- closer changed to: "dkf"
- comment changed to:
Script to reproduce: ------------- proc LTrace {args} { puts "LTrace: $args" #Hardcoded: trace remove execution test leave LTrace } proc GTrace {args} {puts "This is global trace: $args"} proc localproc {pname arglist body} { set caller [lindex [info level 1] 0] trace add execution $caller leave LTrace puts "Active traces on $caller: [trace info execution $caller]" proc $pname $arglist "uplevel 1 [list $body]" return } proc test {a b} { localproc lproc {} {puts "a=$a, b=$b"} lproc set a "A" ; set b "B" lproc } #trace add execution test leave GTrace test a 4 puts "---------" test a 5 ------------------ In tcl 8.4.19 it gives: Active traces on test: {leave LTrace} a=a, b=4 a=A, b=B LTrace: {test a 4} 0 {} leave --------- Active traces on test: {leave LTrace} a=a, b=5 a=A, b=B LTrace: {test a 5} 0 {} leave But in tcl 8.6b2 and 8.5.10: Active traces on test: {leave LTrace} a=a, b=4 a=A, b=B --------- Active traces on test: {leave LTrace} {leave LTrace} a=a, b=5 a=A, b=B LTrace: {test a 5} 0 {} leave ----- So, LTrace isn't called first time. Also, if I uncomment the line "#trace add execution test leave GTrace", then in all tcl versions result becomes: --- Active traces on test: {leave LTrace} {leave GTrace} a=a, b=4 a=A, b=B This is global trace: {test a 4} 0 {} leave LTrace: {test a 4} 0 {} leave --------- Active traces on test: {leave LTrace} {leave GTrace} a=a, b=5 a=A, b=B This is global trace: {test a 5} 0 {} leave LTrace: {test a 5} 0 {} leave
- login: "dkf"
- mimetype: "text/plain"
- severity changed to: "Minor"
- status changed to: "Closed"