View Ticket
Not logged in
Ticket UUID: 6022b9f946b242d548af6da0a08a659b4ba546d0
Title: Tk when built against Tcl 9.0 broken
Type: Bug Version: 9.0
Submitter: jan.nijtmans Created on: 2023-05-17 15:22:04
Subsystem: 10. Objects Assigned To: pooryorick
Priority: 5 Medium Severity: Important
Status: Closed Last Modified: 2023-07-12 14:07:52
Resolution: Fixed Closed By: pooryorick
    Closed on: 2023-07-12 14:07:52
Description:

When running the Tk testsuite against Tcl 9.0, there are 3 test-failures:

See: https://github.com/tcltk/tk/actions/runs/5000425737/jobs/8962784135

But the build with 8.7 and 9.1 (unofficial) is OK. This points to a problem in the current trunk, not actually in Tk:

imgPhoto.test

==== imgPhoto-4.79 ImgPhotoCmd, transparency get: no option FAILED ==== Contents of test case:

set pixelCoords {{156 239} {76 207} {153 213} {139 43} {75 112}} foreach coord $pixelCoords { lappend result [photo1 transparency get {*}$coord] } set result

---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: can't read "coord": no such variable while executing "photo1 transparency get {*}$coord" ("foreach" body line 2) invoked from within "foreach coord $pixelCoords { lappend result [photo1 transparency get {*}$coord] }" ("uplevel" body line 3) invoked from within "uplevel 1 $script" ---- errorCode: TCL LOOKUP VARNAME coord ==== imgPhoto-4.79 FAILED

==== imgPhoto-4.81 ImgPhotoCmd, transparency get: -alpha FAILED ==== Contents of test case:

set pixelCoords {{156 239} {76 207} {153 213} {139 43} {75 112}} foreach coord $pixelCoords { lappend result [photo1 transparency get {*}$coord -alpha] } set result

---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: can't read "coord": no such variable while executing "photo1 transparency get {*}$coord -alpha" ("foreach" body line 2) invoked from within "foreach coord $pixelCoords { lappend result [photo1 transparency get {*}$coord -alpha] }" ("uplevel" body line 3) invoked from within "uplevel 1 $script" ---- errorCode: TCL LOOKUP VARNAME coord ==== imgPhoto-4.81 FAILED

imgSVGnano.test listbox.test main.test menu.test menuDraw.test menubut.test message.test msgbox.test obj.test oldpack.test option.test pack.test packgrid.test panedwindow.test

==== panedwindow-17.1 MoveSash, move right FAILED ==== Contents of test case:

panedwindow .p -showhandle false -borderwidth 0 -sashpad 0 -sashwidth 2 foreach w {.f1 .f2} c {red blue} { .p add [frame $w -height 20 -width 20 -bg $c] -sticky nsew }
# Get the requested width of the paned window lappend result [winfo reqwidth .p]
.p sash place 0 30 0
# Get the reqwidth again, to make sure it hasn't changed lappend result [winfo reqwidth .p]
# Check that the sash moved lappend result [.p sash coord 0]

---- Test generated error; Return code was: 1 ---- Return code should have been one of: 0 2 ---- errorInfo: unknown color name "3" (processing "-bg" option) invoked from within "frame $w -height 20 -width 20 -bg $c" ("foreach" body line 2) invoked from within "foreach w {.f1 .f2} c {red blue} { .p add [frame $w -height 20 -width 20 -bg $c] -sticky nsew }" ("uplevel" body line 3) invoked from within "uplevel 1 $script" ---- errorCode: TK LOOKUP COLOR 3 ==== panedwindow-17.1 FAILED

pkgconfig.test ...

Looking at the build history, this build was done using Tcl commit [427bc951fbcffe81], which the previous successfull build was done using Tcl commit [8181a7f089ec83e0].

There are 3 suspicious commits in this range:

* [427bc951fbcffe81] Fix memory leaks and remove unnecessary reference count bounce.

* [40af0258ecad67cd] New function, TclDuplicatePureObj(), ....

* [0785828c472b53ea] Add Tcl_DecrRefCount() missing from [4b1a20629e].

Which of those 3 commit's is the coolpit, I don't know.

User Comments: pooryorick added on 2023-07-12 14:07:52:

Note, the previous two messages belong on [a34733451b2cf189], not here.


pooryorick added on 2023-07-12 14:05:47:

Oops, please disregard the previous repeated message. Here is the new message:

The last trouble reported with TclDuplicatePureObj() was fixed almost two months ago, in [c405bdd1f0]. Since then there have been no test failures until the merge of TIP 636. That clearly indicates that the trouble is with the TIP 636 merge, and that's what should be reverted here.


pooryorick added on 2023-07-12 14:03:53:

The last trouble reported with TclDuplicatePureObj() was fixed almost two months ago, in [c405bdd1f0]. Since then there have been no test failures until the merge of TIP 636. That clearly indicates that the trouble is with the TIP 636 merge, and that's what should be reverted here.


pooryorick added on 2023-05-18 08:11:45:

Before committing to trunk I tested each commit both with a --enable-symbols=debug CFLAGS='-DPURIFY' build, along with a complete valgrind run, and also with a --enable-symbols=mem build. If the C/I system were currently testing branches other than the main lines of development, I would have let it run on a separate branch before merging it. I do what I can to make sure errors don't make it to trunk. I consider Tcl_DuplicatePureObj() a needed enhancement, not an experiment, but it did stem from an experimental branch, pyk-objinterface.

Maybe I'll start testing Tcl with Tk too before merging with trunk. On my platform hundreds of Tk tests fail every time, so I'll have to run the tests both before and after, and compare the differences.

I don't want spend time correcting other peoples' mistakes either, but I do it when necessary. You could have reproduced the failure using the latest commit to trunk before reporting it. That's what I always do.


jan.nijtmans added on 2023-05-17 20:12:28:

By the way, I like the Tcl_DuplicatePureObj() function and the error-checking that you added. But ... the proper way of "causing no harm" is testing it in a branch first. The "main" branch is not for experimenting, as you are doing.

My commit was not a fix, it was just backing out the harmful commit. I don't want to spend time correcting your mistakes


jan.nijtmans added on 2023-05-17 20:07:44:

It - indeed - appears that [c405bdd1f0] already fixed this. How could I have known that?


jan.nijtmans added on 2023-05-17 19:57:01:

Commit war starting again ....


pooryorick added on 2023-05-17 19:28:13:

Ooops,scratch that last comment. It should have read as follows:

Commit [1452a806b7] is the wrong fix for this issue, as it was already fixed in [c405bdd1f0]. Therefore, I've backed out [1452a806b7].


pooryorick added on 2023-05-17 19:26:20:

Commit [1452a806b7] is the wrong fix for this issue, as it was already fixed in [ [c405bdd1f0]. Therefore, I've backed out [c405bdd1f0].


jan.nijtmans added on 2023-05-17 15:55:13:

I did a bisect, in order to locate the problem. Fossil tells me:

bisect complete
  1 BAD     2023-05-16 06:25:19 8e4d8a60539e13a9
  4 BAD     2023-05-16 05:25:31 40af0258ecad67cd CURRENT
  3 GOOD    2023-05-15 20:49:43 0785828c472b53ea
  2 GOOD    2023-05-14 08:21:50 8181a7f089ec83e0

So, the problematic commit is: [40af0258ecad67cd]: New function, TclDuplicatePureObj(), doesn't duplicate the string ....