2019-02-25 15:09:40 |
Justin Willmert |
description |
With default Tcl/Tk versions installed, tkcvs reliably freezes up after launching as soon as you move the mouse cursor over any of the files listed in the main panel. If you carefully avoid crossing that area, menus and other buttons do continue to function.
Running `strace` wasn't too insightful on its own, but the fact that the font in the file list attempted to update when the UI froze was a clue. Launching with `FC_DEBUG=1 tkcvs`, you can see font lookups get stuck in an infinite loop as soon as the UI freezes.
Finally, digging through the Tcl source a bit looking for hints, I came across a code region which works around a bug in Tk v8.5.0 through v8.5.7, but the version check isn't written robustly enough to avoid taking effect for v8.6. On a guess, I applied the attached patch, and that seems to fix the issue.
$ lsb_release -rd
Description: Ubuntu 18.04.2 LTS
Release: 18.04
$ tkcvs:
Installed: 8.2.3-1.1
Candidate: 8.2.3-1.1
Version table:
*** 8.2.3-1.1 500
500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
tcl:
Installed: 8.6.0+9
Candidate: 8.6.0+9
Version table:
*** 8.6.0+9 500
500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
tk:
Installed: 8.6.0+9
Candidate: 8.6.0+9
Version table:
*** 8.6.0+9 500
500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status |
With default Tcl/Tk versions installed, tkcvs reliably freezes up after launching as soon as you move the mouse cursor over any of the files listed in the main panel. If you carefully avoid crossing that area, menus and other buttons do continue to function.
Running `strace` wasn't too insightful on its own, but the fact that the font in the file list attempted to update when the UI froze was a clue. Launching with `FC_DEBUG=1 tkcvs`, you can see font lookups get stuck in an infinite loop as soon as the UI freezes.
Finally, digging through the Tcl source a bit looking for hints, I came across a code region which works around a bug in Tk v8.5.0 through v8.5.7, but the version check isn't written robustly enough to avoid taking effect for v8.6. On a guess, I applied the attached patch, and that seems to fix the issue.
$ lsb_release -rd
Description: Ubuntu 18.04.2 LTS
Release: 18.04
$ apt-cache policy tkcvs tcl tk
tkcvs:
Installed: 8.2.3-1.1
Candidate: 8.2.3-1.1
Version table:
*** 8.2.3-1.1 500
500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
tcl:
Installed: 8.6.0+9
Candidate: 8.6.0+9
Version table:
*** 8.6.0+9 500
500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status
tk:
Installed: 8.6.0+9
Candidate: 8.6.0+9
Version table:
*** 8.6.0+9 500
500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
100 /var/lib/dpkg/status |
|