Bugs item #2175411, was opened at 2008-10-17 13:02
Message generated for change (Settings changed) made by jenglish
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=112997&aid=2175411&group_id=12997
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: 88. Themed Tk
Group: current: 8.5.5
>Status: Closed
>Resolution: Fixed
Priority: 5
Private: No
Submitted By: Don Porter (dgp)
Assigned to: Joe English (jenglish)
Summary: test ttk-6.3 lacks important control
Initial Comment:
test ttk-6.3 "Test package cleanup" -body {
interp create foo
foo eval { if {[catch {package require Tk}]} { load {} Tk } }
foo eval { destroy . }
interp delete foo
}
The [package require Tk] is influenced
by so many factors, there's no telling
what this test will actually be testing.
The versions and variants of Tk that
happen to be installed as well as the
value of environment variables like
TCLLIBPATH fill this test with uncertainties.
If the aim is to test the same Tk library
that the test suite is already testing,
it's simpler and more predictable to
replace the line
foo eval { if {[catch {package require Tk}]} { load {} Tk } }
with
load {} Tk foo
The particular failure I encountered
that led me to file this report, is
that I was testing in a --enable-symbols=mem
--enable-threads Tcl interpreter, and the
uncontrolled [package require Tk] in this
test brought in a libtk that was not a
--enable-symbols=mem build, and that
combination leads to panics.
----------------------------------------------------------------------
Comment By: Joe English (jenglish)
Date: 2008-10-24 13:01
Message:
Found the cause of the problem when loading Tile into an 8.6 interp: both
Ttk and Tile are using the same Tcl_AssocData key. When Tile is loaded, it
overwrites Ttk's AssocData, so Ttk's copy of StylePkgFree() is never
called; and if there is a pending call to ThemeChanged() at interp deletion
time it never gets cancelled, leading to a crash at the next [update].
Fixed in CVS; also removed test ttk-6.3.
----------------------------------------------------------------------
Comment By: Joe English (jenglish)
Date: 2008-10-24 11:28
Message:
The original intent of this test (inherited from Tile) was to excercise the
cleanup path when loading the extension into a slave interp then deleting
the interp. Original test has:
foo eval { if {[catch {package require Tk}]} { load {} Tk } }
foo eval [package ifneeded tile [package provide tile]]
(which BTW is currently causing segfaults when loading tile.so into an
8.6a3 wish. Still trying to figure this one out).
Anyway, test ttk-6.3 doesn't seem to be testing anything useful in the
context of Ttk; it should be safe to just nuke this entirely.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=112997&aid=2175411&group_id=12997
|