Full back trace with Tcl 8.5.18:

#0  0x00007f59f3e184c9 in raise () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007f59f3e19958 in abort () from /lib64/libc.so.6
No symbol table info available.
#2  0x00007f59f3e11296 in __assert_fail_base () from /lib64/libc.so.6
No symbol table info available.
#3  0x00007f59f3e11342 in __assert_fail () from /lib64/libc.so.6
No symbol table info available.
#4  0x00007f59f475b72b in DoReadChars (chanPtr=0xacf290, objPtr=0xacea30, toRead=-11037, appendFlag=0)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclIO.c:5393
        statePtr = 0xacbcf0
        bufPtr = 0xad10f0
        copied = 11036
        copiedNow = -1
        result = 0
        encoding = 0xaa6f30
        binaryMode = 0
        factor = 1027
        __PRETTY_FUNCTION__ = "DoReadChars"
#5  0x00007f59f475b36b in Tcl_ReadChars (chan=0xacf290, objPtr=0xacea30, toRead=-1, appendFlag=0)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclIO.c:5219
        chanPtr = 0xacf290
        statePtr = 0xacbcf0
#6  0x00007f59f4762fcd in Tcl_ReadObjCmd (dummy=0x0, interp=0xaa89a0, objc=2, objv=0xaaaee0)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclIOCmd.c:462
        chan = 0xacf290
        newline = 0
        i = 2
        toRead = -1
        charactersRead = 0
        mode = 2
        resultPtr = 0xacea30
        chanObjPtr = 0xac8120
#7  0x00007f59f46d1995 in TclEvalObjvInternal (interp=0xaa89a0, objc=2, objv=0xaaaee0, command=0xacf1dd "read $fd]\n", 
    length=8, flags=0) at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclBasic.c:3727
        cmdPtr = 0xab1630
        iPtr = 0xaa89a0
        newObjv = 0xac81e0
        i = 0
        savedVarFramePtr = 0x0
        varFramePtr = 0xaaa770
        code = 0
        traceCode = 0
        checkTraces = 1
        traced = 0
        savedNsPtr = 0x0
        lookupNsPtr = 0x0
        commandPtr = 0x0
#8  0x00007f59f46d2e5d in TclEvalEx (interp=0xaa89a0, script=0xacf1dd "read $fd]\n", numBytes=8, flags=0, line=4, 
    clNextOuter=0x0, outerScript=0xacf1a0 "#! /usr/local/bin/tclsh\n\nset fd [open ./workfile r]\nset txt [read $fd]\n")
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclBasic.c:4426
        wordLine = 4
        wordCLNext = 0x0
        objectsNeeded = 2
        wordStart = 0xacf1e2 "$fd]\n"
        numWords = 2
        iPtr = 0xaa89a0
        p = 0xacf1dd "read $fd]\n"
        next = 0xaaac30 "Ы\252"
        minObjs = 20
        objv = 0xaaaee0
        objvSpace = 0xaaaee0
        expand = 0xaaaf90
        lines = 0xaaaff0
        lineSpace = 0xaaaff0
        tokenPtr = 0xaaad18
        commandLength = 0
        bytesLeft = 8
        expandRequested = 0
        code = 0
        savedVarFramePtr = 0xaaa770
        allowExceptions = 0
        gotParse = 1
        i = 202723952
        objectsUsed = 2
        parsePtr = 0xaaac40
        eeFramePtr = 0xaaae90
        stackObjArray = 0xaaaee0
        expandStack = 0xaaaf90
        linesStack = 0xaaaff0
        clNext = 0x0
#9  0x00007f59f478702d in TclSubstTokens (interp=0xaa89a0, tokenPtr=0xaaa908, count=1, tokensLeftPtr=0x0, line=4, 
    clNextOuter=0x0, outerScript=0xacf1a0 "#! /usr/local/bin/tclsh\n\nset fd [open ./workfile r]\nset txt [read $fd]\n")
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclParse.c:2320
        theline = 4
        iPtr = 0xaa89a0
        appendObj = 0x0
        append = 0x0
        appendByteLength = 0
        utfCharBytes = "\320", <incomplete sequence \351\254>
        result = 0x0
        code = 0
        isLiteral = 0
        maxNumCL = 0
        numCL = 0
        i = 0
        adjust = 0
        clPosition = 0x0
        iPtr = 0xaa89a0
        inFile = 2
#10 0x00007f59f46d2886 in TclEvalEx (interp=0xaa89a0, 
    script=0xacf1a0 "#! /usr/local/bin/tclsh\n\nset fd [open ./workfile r]\nset txt [read $fd]\n", numBytes=71, flags=0, 
    line=4, clNextOuter=0x0, 
    outerScript=0xacf1a0 "#! /usr/local/bin/tclsh\n\nset fd [open ./workfile r]\nset txt [read $fd]\n")
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclBasic.c:4314
        wordLine = 4
        wordCLNext = 0x0
        objectsNeeded = 2
        wordStart = 0xacf1dc "[read $fd]\n"
        numWords = 3
        iPtr = 0xaa89a0
        p = 0xacf1d4 "set txt [read $fd]\n"
        next = 0xacf1d4 "set txt [read $fd]\n"
        minObjs = 20
        objv = 0xaaaad0
        objvSpace = 0xaaaad0
        expand = 0xaaab80
        lines = 0xaaabe0
        lineSpace = 0xaaabe0
        tokenPtr = 0xaaa8f0
        commandLength = 0
        bytesLeft = 19
        expandRequested = 0
        code = 0
        savedVarFramePtr = 0xaaa770
        allowExceptions = 0
        gotParse = 1
        i = 3
        objectsUsed = 2
        parsePtr = 0xaaa830
        eeFramePtr = 0xaaaa80
        stackObjArray = 0xaaaad0
        expandStack = 0xaaab80
        linesStack = 0xaaabe0
        clNext = 0x0
#11 0x00007f59f46d21e7 in Tcl_EvalEx (interp=0xaa89a0, 
    script=0xacf1a0 "#! /usr/local/bin/tclsh\n\nset fd [open ./workfile r]\nset txt [read $fd]\n", numBytes=71, flags=0)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclBasic.c:4083
No locals.
#12 0x00007f59f476b07d in Tcl_FSEvalFileEx (interp=0xaa89a0, pathPtr=0xac83f0, encodingName=0x0)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclIOUtil.c:1859
        length = 71
        result = 1
        statBuf = {st_dev = 2055, st_ino = 226703, st_nlink = 1, st_mode = 33261, st_uid = 1000, st_gid = 100, 
          __pad0 = 0, st_rdev = 0, st_size = 71, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1429451988, 
            tv_nsec = 733091879}, st_mtim = {tv_sec = 1429451980, tv_nsec = 908031747}, st_ctim = {tv_sec = 1429451980, 
            tv_nsec = 924031870}, __unused = {0, 0, 0}}
        oldScriptFile = 0x0
        iPtr = 0xaa89a0
        string = 0xacf1a0 "#! /usr/local/bin/tclsh\n\nset fd [open ./workfile r]\nset txt [read $fd]\n"
        chan = 0xacf290
        objPtr = 0xace940
#13 0x00007f59f477415d in Tcl_Main (argc=-1, argv=0x7fff0c155a48, appInitProc=0x4009ae <Tcl_AppInit>)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../generic/tclMain.c:440
        path = 0xac83f0
        resultPtr = 0x7fff0c155a30
        argvPtr = 0xac8330
        commandPtr = 0x0
        encodingName = 0x0
        prompt = PROMPT_START
        code = 0
        length = 12
        tty = 1
        exitCode = 0
        inChannel = 0x4009ae <Tcl_AppInit>
        outChannel = 0x7f59f4a11c67 <_dl_fixup+247>
        errChannel = 0x7fff0c155950
        interp = 0xaa89a0
        appName = {string = 0x7fff0c155780 "", length = 0, spaceAvl = 200, 
          staticSpace = "\000xercise.tcl\000\000\000\000\001\000\000\000Y\177\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000HQ\302\364Y\177\000\000(m\336\363Y\177\000\000\250\061\337\363Y\177\000\000\360X\025\f\377\177\000\000\070\365\330\003", '\000' <repeats 12 times>, "\240T\302\364Y\177\000\000\020X\025\f\377\177\000\000\000X\025\f\377\177\000\000\f\302\342\310\000\000\000\000\067\006@\000\000\000\000\000\377\377\377\377\000\000\000\000\360\003@\000\000\000\000\000@\365i\364Y\177\000\000H'\302\364Y\177\000\000PY\025\f\377\177\000\000\300\217\277\364Y\177\000\000\200Y\025\f\377\177\000\000\240T\302\364Y\177\000\000\250Y\025\f\377\177\000"}
#14 0x00000000004009a7 in main (argc=2, argv=0x7fff0c155a38)
    at /usr/local/src/SOURCES/tcl8.5.18/unix/../unix/tclAppInit.c:85
No locals.
-- end of message --
