Ticket UUID: | e3f4a8b78dec4bdb549333f5373eee97c1020350 | |||
Title: | Empty error message when interp limits are exceeded | |||
Type: | Bug | Version: | 8.6.6 | |
Submitter: | apnadkarni | Created on: | 2017-04-26 13:31:59 | |
Subsystem: | 20. [interp] | Assigned To: | dkf | |
Priority: | 5 Medium | Severity: | Minor | |
Status: | Open | Last Modified: | 2017-05-02 10:50:59 | |
Resolution: | None | Closed By: | nobody | |
Closed on: | ||||
Description: |
See the following console session % interp create slave slave % set cmdlimit [slave eval {info cmdcount}] 280 % slave limit command -value [incr cmdlimit 5] % slave limit time -seconds 600 % slave eval [list expr 1+3] % set errorInfo while executing "expr 1+3" invoked from within "slave eval [list expr 1+3]" ("uplevel" body line 1) invoked from within "uplevel #0 {slave eval [list expr 1+3]}" % set errorCode NONE The time limit is in the past (it was actually a programming error, should have been absolute time, not relative). An error was generated as expected. However the error message is empty and error code is NONE (expected to be TCL LIMIT) resulting in my trap handler not firing. | |||
User Comments: |
dkf added on 2017-05-02 10:50:59:
I reproduced this with the tip of the 8.6 branch: interp create slave set cmdlimit [slave eval {info cmdcount}] slave limit command -value $cmdlimit catch {slave eval [list expr 1+3]} msg1 opt1 puts «$msg1» puts $opt1 catch {slave eval [list expr 1+3]} msg2 opt2 puts «$msg2» puts $opt2Output: «command count limit exceeded» -errorstack {INNER push1} -errorcode {TCL LIMIT COMMANDS} -errorinfo {command count limit exceeded while executing "expr 1+3" invoked from within "slave eval [list expr 1+3]"} -errorline 1 -code 1 -level 0 «» -errorstack {INNER {expr 1+3}} -errorcode NONE -errorinfo { while executing "expr 1+3" invoked from within "slave eval [list expr 1+3]"} -errorline 1 -code 1 -level 0Looks like it is a failure due to trying to run code in an environment where the trap has already fired. |