Tcl Source Code

View Ticket
Login
Ticket UUID: 977971f1f31797c4d82b4ef9e8af2e03c9c0fa4b
Title: Segfault after forget/require package TclOO
Type: Bug Version: 8.6.10
Submitter: erikleunissen Created on: 2020-02-08 14:21:42
Subsystem: 35. TclOO Package Assigned To: nobody
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2024-05-23 14:42:08
Resolution: Invalid Closed By: dkf
    Closed on: 2024-05-23 14:42:08
Description:
> tclsh
% set tcl_patchLevel
8.6.10
% parray tcl_platform
tcl_platform(byteOrder)     = littleEndian
tcl_platform(engine)        = Tcl
tcl_platform(machine)       = x86_64
tcl_platform(os)            = Linux
tcl_platform(osVersion)     = 4.12.14-lp150.12.82-default
tcl_platform(pathSeparator) = :
tcl_platform(platform)      = unix
tcl_platform(pointerSize)   = 8
tcl_platform(threaded)      = 1
tcl_platform(user)          = erik
tcl_platform(wordSize)      = 8
% package names
zlib TclOO tcl::tommath Tcl
% package forget TclOO
% package require TclOO
Segmentation fault (core dumped)

I'm unsure whether this is an issue with [package] or with TclOO.
User Comments: dkf added on 2024-05-23 14:42:08:

Checking the stack trace, and it definitely says that the fault is occurring in a separate package. Closing; not a Tcl bug technically.


dkf added on 2024-05-23 14:40:13:

I'm guessing that the problem is that the default package ifneeded script does nothing (it's contents are literally "# Already present, OK?") but removing it means that you're picking up the old TclOO implementation-as-a-package from your system, which is for Tcl 8.5 only and makes 8.6 explode.

I don't have much of a fix for that. I guess we could make the package index file for the "independent" package include a version check against Tcl to make sure it isn't going into 8.6 or later, but that would still leave the existing deployments of that package as a problem. If we were going to maintain that code for 8.5 then we'd need to do that, but we aren't.

By contrast, on this system which doesn't have that external package installed, we see this:

% package forget TclOO
% package require TclOO
can't find package TclOO

A loadable library being able to break Tcl? That was always possible.


erikleunissen added on 2020-02-08 14:24:27:
Attached a full back trace in "bt_full.txt".

Attachments: