Posted to tcl by miguel at Sat Nov 21 10:41:26 GMT 2015view pretty
Index: generic/tclExecute.c ================================================================== --- generic/tclExecute.c +++ generic/tclExecute.c @@ -2035,10 +2035,29 @@ int size = sizeof(TEBCdata) - 1 + (codePtr->maxStackDepth + codePtr->maxExceptDepth) * sizeof(void *); int numWords = (size + sizeof(Tcl_Obj *) - 1) / sizeof(Tcl_Obj *); + /* + * Shortcut for compiled empty scripts + */ + + if (!codePtr->source) { + if (0) { + Tcl_ResetResult(interp); + return TCL_OK; + } else { + Tcl_Panic("Bytecode without source: precompiled? %i", + !!(codePtr->flags & TCL_BYTECODE_PRECOMPILED)); + } + } + + if (codePtr->source && (*codePtr->source == '\0')) { + Tcl_ResetResult(interp); + return TCL_OK; + } + codePtr->refCount++; /* * Reserve the stack, setup the TEBCdataPtr (TD) and CallFrame *
Comments
Posted by mig at Sat Nov 21 10:45:20 GMT 2015 [text] [code]
At ease, false alarm: #3 0x00000000005818d0 in Tcl_Panic (format=0x617580 "Bytecode without source: precompiled? %i") at /home/mig/DEVEL/tcl-core/trunk/generic/tclPanic.c:160 #4 0x000000000050a1b7 in TclNRExecuteByteCode (interp=0x13db450, codePtr=0x151e9f0) at /home/mig/DEVEL/tcl-core/trunk/generic/tclExecute.c:2049 #5 0x00000000004dbf8d in ExecConstantExprTree (interp=0x13db450, nodes=0x1509510, index=1, litObjvPtr=0x7ffc56e71b90) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2203 #6 0x00000000004ddc0b in CompileExprTree (interp=0x13db450, nodes=0x1509510, index=0, litObjvPtr=0x7ffc56e71b90, funcObjv=0x0, tokenPtr=0x14f83f0, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2472 #7 0x00000000004dbd38 in TclCompileExpr (interp=0x13db450, script=0x150b0f3 "-1 !=[set pos [string last \"_\" $locale]]} {\n\tset locale [string range $locale 0 $pos-1]\n\tif { \"_\" ne [string index $locale end] } {\n\t lappend loclist $locale\n\t}\n }\n if {\"\" ne [lindex $loclist"..., numBytes=40, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2143 #8 0x00000000004e3ea3 in TclCompileExprWords (interp=0x13db450, tokenPtr=0x7ffc56e71f60, numWords=1, envPtr=0x7ffc56e72190) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompile.c:2614 #9 0x00000000004d2396 in TclCompileWhileCmd (interp=0x13db450, parsePtr=0x7ffc56e71ed0, cmdPtr=0x13e3ab0, envPtr=0x7ffc56e72190)
Posted by mig at Sat Nov 21 10:46:36 GMT 2015 [text] [code]
(try again) <p>#3 0x00000000005818d0 in Tcl_Panic (format=0x617580 "Bytecode without source: precompiled? %i") at /home/mig/DEVEL/tcl-core/trunk/generic/tclPanic.c:160 <p>#4 0x000000000050a1b7 in TclNRExecuteByteCode (interp=0x13db450, codePtr=0x151e9f0) at /home/mig/DEVEL/tcl-core/trunk/generic/tclExecute.c:2049 <p>#5 0x00000000004dbf8d in ExecConstantExprTree (interp=0x13db450, nodes=0x1509510, index=1, litObjvPtr=0x7ffc56e71b90) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2203 <p>#6 0x00000000004ddc0b in CompileExprTree (interp=0x13db450, nodes=0x1509510, index=0, litObjvPtr=0x7ffc56e71b90, funcObjv=0x0, tokenPtr=0x14f83f0, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2472 <p>#7 0x00000000004dbd38 in TclCompileExpr (interp=0x13db450, script=0x150b0f3 "-1 !=[set pos [string last \"_\" $locale]]} {\n\tset locale [string range $locale 0 $pos-1]\n\tif { \"_\" ne [string index $locale end] } {\n\t lappend loclist $locale\n\t}\n }\n if {\"\" ne [lindex $loclist"..., numBytes=40, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2143 <p>#8 0x00000000004e3ea3 in TclCompileExprWords (interp=0x13db450, tokenPtr=0x7ffc56e71f60, numWords=1, envPtr=0x7ffc56e72190) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompile.c:2614 <p>#9 0x00000000004d2396 in TclCompileWhileCmd (interp=0x13db450, parsePtr=0x7ffc56e71ed0, cmdPtr=0x13e3ab0, envPtr=0x7ffc56e72190)
Posted by mig at Sat Nov 21 10:47:54 GMT 2015 [text] [code]
no cigar ... that is a gdb stacktrace, showing that we are running a cosntant expression tree - ok, it is a compiler optimisation