이모티콘이 포함된 커밋을 볼 때 gitk가 충돌함: 오류로 인해 X 요청 실패: BadLength(여러 요청이 너무 크거나 내부 Xlib 길이 오류)

이모티콘이 포함된 커밋을 볼 때 gitk가 충돌함: 오류로 인해 X 요청 실패: BadLength(여러 요청이 너무 크거나 내부 Xlib 길이 오류)

열 수는 있지만 gitk변경 내용에 이모티콘(커밋 메시지 대신)이 포함된 커밋을 열자마자 충돌이 발생합니다.

실수

❯ gitk --all
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:  6687
  Current serial number in output stream:  6706

환경

❯ cat /etc/os-release --plain
NAME="Linux Mint"
VERSION="20 (Ulyana)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 20"
VERSION_ID="20"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=ulyana
UBUNTU_CODENAME=focal

자식

❯ git --version git 버전 2.25.1

6e05ecd v3->v4 마이그레이션 스크립트를 추가하여 변수 업데이트 https://github.com/rafaelrinaldi/pure/pull/271/commits/6e05ecdad0e4f623050e154e16c0af0315767940

질문

나는 다양한 접근 방식을 시도했습니다.

  • ~/.Xresources글꼴 관련 구성 삭제
  • 수정 후 삭제~/.config/fontconfig/conf.d/30-icons.conf

실패하면 대부분질문나는 그걸로 찾았어st단말기. 그런데 저는 사용하지 않고 있는데, 와 에서도 guake문제가 발생합니다.yakuakegnome-terminalhyper

이 문제를 어떻게 해결할 수 있나요?

답변1

제안대로https://bugs.launchpad.net/ubuntu/+source/git/+bug/1852985/comments/11, unifont를 설치하면 gitk 충돌을 방지할 수 있습니다.

sudo apt install unifont

댓글과 마찬가지로 이모티콘은 gitk에서 빈 사각형으로 표시되지만 gitk는 더 이상 충돌하지 않습니다.

답변2

플래그를 가지고 여기저기 뒤져보니 XFT_DEBUG이상한 점을 발견했습니다. 이 플래그를 사용하여 명령을 실행하고 문제의 커밋으로 이동합니다.

❯ XFT_DEBUG=1 gitk --all
XFT_DEBUG=1
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Medium.ttf: 0 (15.9999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Medium.ttf: 0 (15.9999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Medium.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSans-Bold.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: 2 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: 0 (17.5999 pixels)
XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: 0 (109 pixels)
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:  6687
  Current serial number in output stream:  6706

그런 다음 오류가 발생하기 전 마지막 행의 픽셀 크기가 중심에서 벗어난 것으로 확인되었습니다.

XftFontInfoFill: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf: 0(17.5999픽셀)

XftFontInfoFill: /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: 0 (109픽셀)

Noto-color-emoji글꼴을 제거하면 문제가 해결되었습니다.

apt remove --purge fonts-noto-color-emoji

더 이상 충돌이 발생하지 않으며 일관된 글꼴 크기로 렌더링됩니다.

XftFontInfoFill: /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: 2(17.5999픽셀)

버전

❯ apt show fonts-noto-color-emoji
Version: 0~20200408-1

답변3

내 연구에 따르면 이는 xorg 라이브러리 "libXft"의 버그인 것 같습니다(질문 참조).libxft#6보류 중인 병합 요청libxft!1).

관련 토론:

Édouard의 답변에 따르면 해결책은 패키지 fonts-noto-color-emoji( apt remove --purge fonts-noto-color-emoji)를 제거하는 것입니다.

답변4

git-guiFedora에서는 패키지를 제거하여 google-noto-emoji-color-fonts발생한 유사한 오류를 수정할 수 있었습니다 .

관련 정보