Menu

#1879 Sample Extension not 64-bit Aware

obsolete: 8.5a0
closed-fixed
5
2003-12-08
2002-05-10
Don Porter
No

OK, the main point of the sampleextension
is the TEA config/build/install stuff, but
the extension still ought to actually work.
It does not work on 64-bit Linux/Alpha:

$ make test
TCL_LIBRARY=`echo /local/src/tcl/library`
LD_LIBRARY_PATH=".:/local/src/tcl/unix:/home/dgp/alpha/linux/lib:/usr/local/lib:/usr/lib"
LIBPATH=".:/local/src/tcl/unix:"
SHLIB_PATH=".:/local/src/tcl/unix:"
PATH=".:/local/src/tcl/unix:/home/dgp/alpha/linux/bin:/home/dgp/Tcl:/home/dgp/Perl:/home/dgp/bin:/home/dgp/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11:/usr/openwin/bin:/usr/games:."
TCLLIBPATH="." "/local/src/tcl/unix/tclsh" `echo
./tests/all.tcl`
Tests running in interp:
/local/src/tcl/unix/tclsh
Tests running with pwd:
/local/src/sampleextension
Tests running in working dir:
/local/src/sampleextension/tests
Only sourcing test files that match: *.test
Tests began at Thu May 09 22:24:44 EDT 2002
sample.test

==== sha-1.1 Use of -string operand FAILED
==== Contents of test case:

set result [sha1 -string foo]

---- Result was:
b0b801b1bf5f29352b10094e72d6842b9676a1f8
---- Result should have been (exact matching):
0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
==== sha-1.1 FAILED

make: *** [test] Segmentation fault

My guess is that there's an implicit assumption
of 32-bit "registers".

Discussion

  • Mo DeJong

    Mo DeJong - 2002-05-21
    • assigned_to: mdejong --> hobbs
     
  • Mo DeJong

    Mo DeJong - 2002-05-21

    Logged In: YES
    user_id=90858

    I don't have access to a 64 bit system. Sending back to
    hobbs in the hope that he can find someone with a 64 bit
    system.

     
  • Don Porter

    Don Porter - 2002-06-21
    • assigned_to: hobbs --> dgp
    • priority: 5 --> 9
     
  • Don Porter

    Don Porter - 2002-06-21

    Logged In: YES
    user_id=80530

    I'll try to look into this.

     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    Ooer! SHA1Transform (in sample.c) is absolutely not
    portable to 64-bit systems (it assumes that
    sizeof(long)==4*sizeof(char) and that
    sizeof(long[16])==sizeof(char[64]), neither of which is
    guaranteed to be true, and both of which could fail
    independently.) Maybe the rest of that file is better, but
    I somehow doubt it...

    Fixing this bug requires a hefty rewrite of that file, so
    I'm dropping the priority.

     
  • Donal K. Fellows

    • priority: 9 --> 5
     
  • Don Porter

    Don Porter - 2002-06-25

    Logged In: YES
    user_id=80530

    that's enough to scare me away.

     
  • Don Porter

    Don Porter - 2002-06-25
    • assigned_to: dgp --> dkf
     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    Well, it's already scared *me* off for a while! ;^)

    Perhaps if I was to start by working from the tcllib
    version!

     
  • Donal K. Fellows

    • summary: 64-bit segfault --> Sample Extension not 64-bit Aware
     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    Could someone try this possible fix?

     
  • Donal K. Fellows

    Potential Fix (Unified Diff)

     
  • Don Porter

    Don Porter - 2002-07-27
    • assigned_to: dkf --> dgp
     
  • Don Porter

    Don Porter - 2002-07-27

    Logged In: YES
    user_id=80530

    assigning to myself so I'll remember to test this when I get
    home

     
  • Don Porter

    Don Porter - 2002-07-31

    Logged In: YES
    user_id=80530

    Problem 1: The shared library produced with
    an --enable-symbols configuration will not
    [load]. This means that generation of
    pkgIndex.tcl also fails -- silently. Neither is good.

    % load libsample0.4g.so
    couldn't load file "libsample0.4g.so":
    /local/src/sampleextension/libsample0.4g.so: undefined
    symbol: assert

    Same problem without --enable-symbols actually:

    % load libsample0.4.so
    couldn't load file "libsample0.4.so":
    /local/src/sampleextension/libsample0.4.so: undefined
    symbol: assert

     
  • Don Porter

    Don Porter - 2002-07-31

    Logged In: YES
    user_id=80530

    After commenting out the assert(), I get
    a [load]-able shared library; thus a valid
    pkgIndex.tcl file, and after installing a
    `make test` runs successfully with 0 failures.

    So, good 64-bit fix (modulo assert-removal),
    but new build/install issues discovered.

     
  • Don Porter

    Don Porter - 2002-07-31
    • assigned_to: dgp --> dkf
     
  • Don Porter

    Don Porter - 2003-03-05

    Logged In: YES
    user_id=80530

    status on this one?

     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    Status: I was busy (and still am, alas.)

     
  • Don Porter

    Don Porter - 2003-11-13
    • milestone: --> obsolete: 8.5a0
     
  • Don Porter

    Don Porter - 2003-12-08
    • assigned_to: dkf --> hobbs
     
  • Don Porter

    Don Porter - 2003-12-08

    Logged In: YES
    user_id=80530

    With the recent changes (TEA 3)
    this slightly modified patch seems
    to be all we need for 64-bit support.
    Thanks, dkf. tclguy, please test and
    apply.

     
  • Don Porter

    Don Porter - 2003-12-08
     
  • Jeffrey Hobbs

    Jeffrey Hobbs - 2003-12-08

    Logged In: YES
    user_id=72656

    2nd patch applied for sample0.5.

     
  • Jeffrey Hobbs

    Jeffrey Hobbs - 2003-12-08
    • status: open --> closed-fixed