#515 md5 test suite causes tcl core dump!

closed-fixed
md5 (13)
9
2014-12-27
2004-08-26
No

platform: sparc sunblade 100 solaris 8, sun c compiler,
tcl 8.4.7, tcllib latest cvs snapshot - this has been
going on for a day or so now.

Module: md5
modules/md5/md5.test
- md5 1.4.3 (Trf based)
modules/md5/md5x.test
- md5 2.0.1 (Trf based)

Module: md5crypt
modules/md5crypt/md5crypt.test
- md5crypt 1.0.0 (pure Tcl)
child killed: bus error
while executing
"exec [info nameofexecutable] [file join $distribution
all.tcl] -modules $modules >@ stdout 2>@ s
tderr"
(procedure "__test" line 10)
invoked from within
"__$cmd"
(file "../sak.tcl" line 1593)
gmake: *** [test] Error 1

The stack trace is a bit peculiar:
$ dbx /usr/tcl84/bin/tclsh8.4 core
Reading tclsh8.4
core file header read successfully
Reading ld.so.1
Reading libtcl8.4g.so
Reading libdl.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading libm.so.1
Reading libc.so.1
Reading libmp.so.2
Reading libc_psr.so.1
Reading libtk8.4g.so
Reading libX11.so.4
Reading libXext.so.0
Reading libTrf2.1g.so
Reading libz.so
Reading libmemchan.so
program terminated by signal BUS (invalid address
alignment)
dbx: warning: can't find file
"/vol/tclsrcsol/tcl84/trf/md5.o"
dbx: warning: see `help finding-files'
0xfec5d4d8: md5_process_block+0x0130: ld [%l0], %l5
dbx: warning: can't find file
"/vol/tclsrcsol/tcl84/trf/md5dig.o"
dbx: warning: can't find file
"/vol/tclsrcsol/tcl84/trf/digest.o"
dbx: warning: can't find file
"/vol/tclsrcsol/tcl84/trf/registry.o"
Current function is FlushChannel
2078 &errorCode);
(dbx 1) where

[1] md5_process_block(0xff00, 0xd76aa478, 0xff00,
0xffbe80c0, 0x61, 0x5a71dc), at 0xfec5d4d8
[2] md5_process_bytes(0x5a93a0, 0xc8, 0x5a71c0,
0x5aa3b0, 0x719, 0x5aa3b8), at 0xfec5d324
[3] MDmd5_UpdateBuf(0x5a71c0, 0x5a93a0, 0xc8, 0x1030,
0x2234c, 0xfefc1ce4), at 0xfec45f7c
[4] EncodeBuffer(0x2453e0, 0x5a93a0, 0xc8, 0x0,
0xfec77ad8, 0x19e94c), at 0xfec44244
[5] TrfOutput(0x5a7128, 0x5a93a0, 0xc8, 0xffbe8330,
0x16ee4d, 0xff332b01), at 0xfec30d94
=>[6] FlushChannel(interp = (nil), chanPtr = 0x270560,
calledFromAsyncFlush = 0), line 2078 in "tclIO.c"
[7] CheckFlush(chanPtr = 0x270560, bufPtr = 0x5a9380,
newlineFlag = 0), line 3429 in "tclIO.c"
[8] WriteBytes(chanPtr = 0x270560, src = 0x5a2fa0
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
srcLen = 200), line 3040 in "tclIO.c"
[9] Tcl_WriteObj(chan = 0x34ecd0, objPtr = 0x1fdfa8),
line 2957 in "tclIO.c"
[10] Tcl_PutsObjCmd(dummy = (nil), interp = 0x1fa328,
objc = 4, objv = 0x19e9a4), line 132 in "tclIOCmd.c"
[11] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
objv = 0x19e9a4, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[12] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0xba750), line 1404 in "tclExecute.c"
[13] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x19a088), line 982 in "tclExecute.c"
[14] TclObjInterpProc(clientData = 0x1b3a70, interp =
0x1fa328, objc = 3, objv = 0x19e998), line 1100 in
"tclProc.c"
[15] InvokeImportedCmd(clientData = 0x110bc8, interp
= 0x1fa328, objc = 3, objv = 0x19e998), line 1476 in
"tclNamesp.c"
[16] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0x19e998, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[17] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x3551e8), line 1404 in "tclExecute.c"
[18] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x16aae0), line 982 in "tclExecute.c"
[19] TclObjInterpProc(clientData = 0x3562b8, interp =
0x1fa328, objc = 4, objv = 0xffbe9424), line 1100 in
"tclProc.c"
[20] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
objv = 0xffbe9424, command = 0xff35b5e4 "", length = 0,
flags = 524288), line 3087 in "tclBasic.c"
[21] Tcl_EvalObjv(interp = 0x1fa328, objc = 4, objv =
0xffbe9424, flags = 524288), line 3203 in "tclBasic.c"
[22] AliasObjCmd(clientData = 0x24aa10, interp =
0x1fa328, objc = 3, objv = 0xffbe95a8), line 1486 in
"tclInterp.c"
[23] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0xffbe95a8, command = 0x150b09
"::md5crypt::md5crypt $passwd $salt\n ", length =
35, flags = 0), line 3087 in "tclBasic.c"
[24] Tcl_EvalEx(interp = 0x1fa328, script = 0x150b00
"\n ::md5crypt::md5crypt $passwd $salt\n ",
numBytes = 48, flags = 262144), line 3683 in "tclBasic.c"
[25] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
0x1611e0, flags = 262144), line 4000 in "tclBasic.c"
[26] Tcl_UplevelObjCmd(dummy = (nil), interp =
0x1fa328, objc = 1, objv = 0x19e994), line 674 in
"tclProc.c" [27] TclEvalObjvInternal(interp =
0x1fa328, objc = 3, objv = 0x19e98c, command = (nil),
length = 0, flags = 0), line 3087 in "tclBasic.c"
[28] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x34f618), line 1404 in "tclExecute.c"
[29] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x2ae910), line 982 in "tclExecute.c"
[30] TclObjInterpProc(clientData = 0x247cb0, interp =
0x1fa328, objc = 3, objv = 0x304960), line 1100 in
"tclProc.c"
[31] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0x304960, command = 0xff35b5e4 "", length = 0,
flags = 262144), line 3087 in "tclBasic.c"
[32] Tcl_EvalObjv(interp = 0x1fa328, objc = 3, objv =
0x304960, flags = 262144), line 3203 in "tclBasic.c"
[33] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
0x96b98, flags = 262144), line 3997 in "tclBasic.c"
[34] Tcl_UplevelObjCmd(dummy = (nil), interp =
0x1fa328, objc = 1, objv = 0x19e988), line 674 in
"tclProc.c"
[35] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0x19e980, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[36] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x371de0), line 1404 in "tclExecute.c"
[37] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x1f9a68), line 982 in "tclExecute.c"
[38] TclObjInterpProc(clientData = 0x25fa80, interp =
0x1fa328, objc = 3, objv = 0x1a8348), line 1100 in
"tclProc.c"
[39] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0x1a8348, command = 0xff35b5e4 "", length = 0,
flags = 262144), line 3087 in "tclBasic.c"
[40] Tcl_EvalObjv(interp = 0x1fa328, objc = 3, objv =
0x1a8348, flags = 262144), line 3203 in "tclBasic.c"
[41] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
0x24f138, flags = 262144), line 3997 in "tclBasic.c"
[42] Tcl_UplevelObjCmd(dummy = (nil), interp =
0x1fa328, objc = 1, objv = 0x19e97c), line 674 in
"tclProc.c"
[43] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0x19e974, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[44] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x37ad00), line 1404 in "tclExecute.c"
[45] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x250c70), line 982 in "tclExecute.c"
[46] TclObjInterpProc(clientData = 0x12d048, interp =
0x1fa328, objc = 5, objv = 0x19e960), line 1100 in
"tclProc.c"
[47] InvokeImportedCmd(clientData = 0x2527d8, interp
= 0x1fa328, objc = 5, objv = 0x19e960), line 1476 in
"tclNamesp.c"
[48] TclEvalObjvInternal(interp = 0x1fa328, objc = 5,
objv = 0x19e960, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[49] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x8a6a0), line 1404 in "tclExecute.c" [50]
TclCompEvalObj(interp = 0x1fa328, objPtr = 0x98848),
line 982 in "tclExecute.c"
[51] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
0x98848, flags = 0), line 4012 in "tclBasic.c"
[52] Tcl_ForeachObjCmd(dummy = (nil), interp =
0x1fa328, objc = 4, objv = 0xffbeb750), line 1863 in
"tclCmdAH.c"
[53] TclEvalObjvInternal(interp = 0x1fa328, objc = 4,
objv = 0xffbeb750, command = 0x2a6408 "foreach {n salt
passwd expected} [list \\n 1 {a} {}
{$1$a$8CfZSfErbeskipdhZHtvu.} \\n 2 {a} {a}
{$1$a$44cUw6Nm5bX0muHWNIwub0} \\n 3 {a} [string
repeat a 100] {$1$a$vTAcWEblAgdUlX6KBz0NM.} \\n 4
{a} [string repeat a 200]
{$1$a$kC.K4D6mvUznpkjWJK8Tm0} \\n 5 {a} [string
repeat a 400] {$1$a$nBvNVTsAryOnHlW7L/gzf/} \\n 6
{a} [string repeat a 1000]
{$1$a$yhNnTV4IKHbl8oEB/eJaj0} \\n] {\n test
md5passwd-4.${n} {md5crypt check passwd} {\n
::md5crypt::md5crypt $passwd $s" ..., length = 800,
flags = 0), line 3087 in "tclBasic.c"
[54] Tcl_EvalEx(interp = 0x1fa328, script = 0x2a55c8
"# -*- tcl -*-\n# md5crypt.test: tests for the
md5crypt commands\n#\n# This file contains a collection
of tests for one or more of the Tcllib\n# commands.
Sourcing this file into Tcl runs the tests and
generates\n# output for errors. No output means no
errors were found.\n#\n# Copyright (C) 2003 Pat Thoyts
<patthoyts@users.sourceforge.net>\n#\n# RCS: @(#) $Id:
md5crypt.test,v 1.5 2004/02/14 05:59:21 andreas_kupries
Exp $\n\n#
-------------------------------------------------------------------------\n#
Initialize the " ..., numBytes = 5337, flags = 0), line
3683 in "tclBasic.c"
[55] Tcl_FSEvalFile(interp = 0x1fa328, pathPtr =
0x250628), line 1749 in "tclIOUtil.c"
[56] Tcl_SourceObjCmd(dummy = (nil), interp =
0x1fa328, objc = 2, objv = 0x19e958), line 1058 in
"tclCmdMZ.c"
[57] TclEvalObjvInternal(interp = 0x1fa328, objc = 2,
objv = 0x19e958, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[58] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x1c0a30), line 1404 in "tclExecute.c"
[59] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x2321c0), line 982 in "tclExecute.c"
[60] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
0x2321c0, flags = 0), line 4012 in "tclBasic.c"
[61] Tcl_CatchObjCmd(dummy = (nil), interp =
0x1fa328, objc = 3, objv = 0x19e94c), line 254 in
"tclCmdAH.c"
[62] TclEvalObjvInternal(interp = 0x1fa328, objc = 3,
objv = 0x19e94c, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[63] TclExecuteByteCode(interp = 0x1fa328, codePtr =
0x12ba00), line 1404 in "tclExecute.c"
[64] TclCompEvalObj(interp = 0x1fa328, objPtr =
0x163978), line 982 in "tclExecute.c"
[65] Tcl_EvalObjEx(interp = 0x1fa328, objPtr =
0x163978, flags = 0), line 4012 in "tclBasic.c"
[66] SlaveEval(interp = 0x23858, slaveInterp =
0x1fa328, objc = 1, objv = 0x254b4), line 2094 in
"tclInterp.c"
[67] SlaveObjCmd(clientData = 0x1fa328, interp =
0x23858, objc = 3, objv = 0x254ac), line 1933 in
"tclInterp.c"
[68] TclEvalObjvInternal(interp = 0x23858, objc = 3,
objv = 0x254ac, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"

[69] TclExecuteByteCode(interp = 0x23858, codePtr =
0x152030), line 1404 in "tclExecute.c"
[70] TclCompEvalObj(interp = 0x23858, objPtr =
0x4de78), line 982 in "tclExecute.c"
[71] Tcl_EvalObjEx(interp = 0x23858, objPtr =
0x4de78, flags = 0), line 4012 in "tclBasic.c"
[72] Tcl_ForeachObjCmd(dummy = (nil), interp =
0x23858, objc = 4, objv = 0x2549c), line 1863 in
"tclCmdAH.c"
[73] TclEvalObjvInternal(interp = 0x23858, objc = 4,
objv = 0x2549c, command = (nil), length = 0, flags =
0), line 3087 in "tclBasic.c"
[74] TclExecuteByteCode(interp = 0x23858, codePtr =
0xb2548), line 1404 in "tclExecute.c"
[75] TclCompEvalObj(interp = 0x23858, objPtr =
0x31300), line 982 in "tclExecute.c"
[76] Tcl_EvalObjEx(interp = 0x23858, objPtr =
0x31300, flags = 0), line 4012 in "tclBasic.c"
[77] Tcl_ForeachObjCmd(dummy = (nil), interp =
0x23858, objc = 4, objv = 0xffbecda8), line 1863 in
"tclCmdAH.c"
[78] TclEvalObjvInternal(interp = 0x23858, objc = 4,
objv = 0xffbecda8, command = 0x34c55 "foreach module
$modules {\n set ::tcltest::testsDirectory [file
join $root modules $module]\n\n if { ![file
isdirectory $::tcltest::testsDirectory] } {\n^Iputs
stdout "unknown module $module"\n }\n\n set
auto_path $old_apath\n set auto_path [linsert
$auto_path 0 $::tcltest::testsDirectory]\n\n #
foreach module, make a slave interp and source that
module's tests into\n # the slave. This isolates
the test suites from one another.\n puts stdout
"Module:\t[file tail $module]"\n set c [interp
creat" ..., length = 3554, flags = 0), line 3087 in
"tclBasic.c"
[79] Tcl_EvalEx(interp = 0x23858, script = 0x33de8 "#
all.tcl --\n#\n# This file contains a top-level script
to run all of the Tcl\n# tests. Execute it by invoking
"tclsh all.test" in this directory.\n#\n# To test a
subset of the modules, invoke it by 'tclsh all.test
-modules "<module list>"'\n#\n# Copyright (c) 1998-2000
by Ajuba Solutions.\n# All rights reserved.\n# \n# RCS:
@(#) $Id: all.tcl,v 1.19 2004/08/10 07:01:30
andreas_kupries Exp $\n\nset old_auto_path
$auto_path\n\nif {[lsearch [namespace children]
::tcltest] == -1} {\n namespace eval ::tcltest {}\n
proc " ..., numBytes = 7355, flags = 0), line 3683
in "tclBasic.c"
[80] Tcl_FSEvalFile(interp = 0x23858, pathPtr =
0x2c8f8), line 1749 in "tclIOUtil.c"
[81] Tcl_Main(argc = 3, argv = 0xffbed3f0,
appInitProc = 0x10820 = &Tcl_AppInit(Tcl_Interp
*interp)), line 292 in "tclMain.c"
[82] main(argc = 4, argv = 0xffbed3ec), line 90 in
"tclAppInit.c"
(dbx 2)

Discussion

  • Andreas Kupries

    Andreas Kupries - 2004-08-26
    • priority: 5 --> 9
     
  • Andreas Kupries

    Andreas Kupries - 2004-08-26

    Logged In: YES
    user_id=75003

    Larry, can you make Trf unavailable and check if the
    pure-Tcl version has the same problem ? It should not. The
    stacktrace shows the crash clearly in Trf's md5 implementation.

    This might be a bug in Trf. Except that Trf has not been
    changed in the last day, nor even week.

     
  • Andreas Kupries

    Andreas Kupries - 2005-09-30

    Logged In: YES
    user_id=75003

    Larry, what is the current status of this ?

     
  • Andreas Kupries

    Andreas Kupries - 2005-10-06
    • status: open --> closed-fixed
     
  • Andreas Kupries

    Andreas Kupries - 2005-10-06

    Logged In: YES
    user_id=75003

    Outside communication by mail ... Apparently we have no
    crashes anymore.

     

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks