Tcl Source Code

View Ticket
Login
Ticket UUID: 707174
Title: stub entry != function --> infinite loop
Type: Bug Version: obsolete: 8.4.2
Submitter: dgp Created on: 2003-03-20 22:23:44
Subsystem: 01. Notifier Assigned To: dgp
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2003-03-21 23:36:41
Resolution: Fixed Closed By: dkf
    Closed on: 2003-03-21 09:35:38
Description:
On RedHat Linux 6.2 on Alpha, using the compiler:

$ ccc -V
Compaq C V6.2-504 on Linux 2.2.18 alpha
Compiler Driver V6.2-504 (Linux) cc Driver

And using the default configuration options
(--enable-shared in particular), I see:

$ make test
...
TCL_LIBRARY="/home/dgp/itl/tcl/library"; export
TCL_LIBRARY; \
./tcltest ./../tests/all.tcl  
make: *** [test] Error 139

Just trying to run the tcltest executable:
$ ./tcltest
Segmentation fault

The problem is an infinite loop in Tcl_DeleteFileHandler.
Lines 489-492:

    if (tclStubs.tcl_DeleteFileHandler !=
Tcl_DeleteFileHandler) {
        tclStubs.tcl_DeleteFileHandler(fd);
        return;
    }

With this platform/compiler/linker, the two addresses
compared
are in fact not the same, yet calling each of them lead
(eventually)
to the same routine, Tcl_DeleteFileHandler executing. 
Perhaps
these are some unwise shenanigans by this linker, but
it would
be best if Tcl were not broken out of the box.

Strangely, the tclsh executable works fine, and everything
is fine if built with --disable-shared.
User Comments: nobody added on 2003-03-21 23:36:41:
Logged In: NO 

well the code is used in
Tcl_SetNotifier, and that's
apparently to allow the
XtNotifier to go in, which
I think supported some version
of the Netscape plugin.

dkf added on 2003-03-21 16:35:38:
Logged In: YES 
user_id=79902

Just a follow-up note to say that (IIRC) this strange piece
of code is there to deal with the requirements of making Tk
a loadable package on MacOS (or is it OSX?)  I thought it
was odd code then, and I was right...

dgp added on 2003-03-21 10:36:52:
Logged In: YES 
user_id=80530

patch fixes problem on original
platform, and tests well on
four different OS/Compiler combinations
in the Unix world.

Commtting to core-8-4-branch and HEAD.

kennykb added on 2003-03-21 09:51:04:

File Added - 45585: 707174bis.patch

Logged In: YES 
user_id=99768

Original patch fails to compile on Windows, because tclStubLib.c refers to 
the Unix-only functions Tcl_CreateFileHandler and Tcl_DeleteFileHandler.
Revised patch (attached) compiled and tests correctly; please verify that
it hasn't broken the Unix build.

dgp added on 2003-03-21 06:32:59:

File Deleted - 45577: 



File Added - 45578: 707174.patch

Logged In: YES 
user_id=80530

corrected patch to work
on alternative platforms.

dgp added on 2003-03-21 06:17:50:

File Added - 45577: 707174.patch

Logged In: YES 
user_id=80530

here's a patch to test

Attachments: