#43 Bus error on HP-UX with Expect 5.43

closed-out-of-date
nobody
None
5
2010-08-28
2007-07-27
Matthias Kraft
No

Hi *,

Expect 5.43 is statically linked into a Tcl wish 8.4.14. The construct is running an application's test suite on HP-UX 11.11 parisc. When the test suite exits and Expect's exit handler runs, it dumps core as can be seen below:

----
#0 0x139d4c in Tcl_DeleteHashEntry (entryPtr=0x0) at .../openSrc/tcl8.4/unix/../generic/tclHash.c:548
#1 0x50a5c in exp_close (interp=0x4006b570, esPtr=0x45c6d068) at .../openSrc/Expect/exp_command.c:360
#2 0x670c4 in exp_close_all (interp=0x4006b570) at .../openSrc/Expect/exp_chan.c:506
#3 0x4e5cc in exp_exit_handlers (clientData=0x4006b570) at .../openSrc/Expect/exp_main_sub.c:144
#4 0x132e80 in Tcl_Finalize () at .../openSrc/tcl8.4/unix/../generic/tclEvent.c:803
#5 0x132afc in Tcl_Exit (status=0) at .../openSrc/tcl8.4/unix/../generic/tclEvent.c:576
#6 0x54f08 in Exp_ExitCmd (clientData=0x0, interp=0x4006b570, argc=1, argv=0x7f7f1b58) at .../openSrc/Expect/exp_command.c:2264
#7 0x11a4dc in TclInvokeStringCommand (clientData=0x4006e6b8, interp=0x4006b570, objc=1, objv=0x7f7f187c)
at .../openSrc/tcl8.4/unix/../generic/tclBasic.c:1789
#8 0x11c5b8 in TclEvalObjvInternal (interp=0x4006b570, objc=1, objv=0x7f7f187c, command=0x4010128c "exit\n", length=5, flags=0)
at .../openSrc/tcl8.4/unix/../generic/tclBasic.c:3101
#9 0x11d4d8 in Tcl_EvalEx (interp=0x4006b570,
script=0x400fdd88 "# ", '-' <repeats 76 times>, "\n# all.tcl --\n#\n# This file is a top-level script to run all test scripts. Execute it, e.g. by\n# invoking \"source all.tcl\""...,
numBytes=13577, flags=0) at .../openSrc/tcl8.4/unix/../generic/tclBasic.c:3703
#10 0x14dd78 in Tcl_FSEvalFile (interp=0x4006b570, pathPtr=0x400ac238) at .../openSrc/tcl8.4/unix/../generic/tclIOUtil.c:1765
#11 0x14c130 in Tcl_EvalFile (interp=0x4006b570, fileName=0x40073a18 ".../tests/all.tcl")
at .../openSrc/tcl8.4/unix/../generic/tclIOUtil.c:291
#12 0x253d84 in Tk_MainEx (argc=-1, argv=0x7f7f11b4, appInitProc=0x4005f002 <InstAppInit>, interp=0x4006b570)
at .../openSrc/tk8.4/unix/../generic/tkMain.c:249
#13 0x3d590 in main (argc=6, argv=0x7f7f119c) at .../src/instsh.c:274
----

As you will see the immediate reason is in exp_command.c:359-360

----
entry = Tcl_FindHashEntry(&slaveNames,esPtr->slave_name);
Tcl_DeleteHashEntry(entry);
----

entry is not checked for NULL.

As it seems this code is only compiled on HP-UX. Also my application is not crashing, the crash only occurs after running the complete test suite only. So it might be possible that something else is the root cause why this slave name is not available anymore.

I don't know, but it certainly won't hurt to check for NULL here nevertheless.

kind regards -- Matthias Kraft

Discussion

  • Jeffrey Hobbs
    Jeffrey Hobbs
    2010-08-28

    • status: open --> closed-out-of-date