gitk crashes if the diff contains certain unicode characters
- From
- Glax <glax@dragon.best>
- Date
- Apr 19, 2020, 12:15 UTC
- Message-ID
- <edace460-d252-2742-7576-e7601b6e959c@dragon.best>
Looks like certain characters cause gitk to crash when it tries to render a diff.
How to repro:
git init echo foo >foo git add foo git commit -m foo # The following assumes bash builtin echo echo -e '\u2754' >foo gitk
Now `foo` should contain the character U+2754 encoded as utf-8.
If on gitk you click on "Local uncommitted changes", it'll crash with the following message:
X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 139 (RENDER) Minor opcode of failed request: 20 (RenderAddGlyphs) Serial number of failed request: 4220 Current serial number in output stream: 4247
Note that if I now commit, gitk will crash at startup because the diff with the character are on the last commit (which gitk selects by default)
git commit -am crash gitk # crashes gitk HEAD^ # works fine
After that, you can add a couple more commits and gitk works fine, unless you click on one of the commits whose diff contain the character. eg:
echo foo >foo git commit -am foo echo bar >foo git commit -am bar gitk
Version / System:
$ git --version git version 2.20.1 $ lsb_release -d Description: Ubuntu 19.10