Bug 3420 - Segfaults if no XFree locales available
: Segfaults if no XFree locales available
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/xorg-x11)
: unstable
: all Linux
: P2 major
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2003-12-30 08:49 by
Modified: 2008-06-13 12:15 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2003-12-30 08:49:58
vim-X11-* (все версии кроме gtk+, тестировалось на Master 2.2) падают по
SIGSEGV
при запуске на удалённом терминале если не установлен пакет XFree86-locales.
gtk+ версия выдаёт warning и успешно запускается.

По всей видимости, удалённый терминал это есдинственный вариант, когда пакет
XFree86-locales не установлен (присутствуют только XFree86-libs и
XFree86-utils), при наличии XFree86-servers он вытягивается по зависимостям.
------- Comment #1 From 2004-05-13 17:39:52 -------
Исправлена ли ошибка ? или мне стоит поставить зависимость у libs на locales ?
------- Comment #2 From 2004-05-14 08:20:20 -------
Я пока не могу найти площадку чтобы это проверить.  Есть стойкое подозрение,
что
падает не сам vim, а кто-то из X'овых библиотек.  В любом случае зависимость
лишней не будет.
------- Comment #3 From 2004-05-14 08:23:07 -------
Буду разбираться с этим позже...
------- Comment #4 From 2004-05-17 15:46:26 -------
Зависимость будет лишней, если локали реально не нужны никаким библиотекам. В
любом случае - надо знать точно ;-)
------- Comment #5 From 2004-07-02 12:48:06 -------
Воспроизводится на Master 2.4beta2.
Тестовый полигон есть, разбираюсь...
------- Comment #6 From 2004-07-02 14:43:29 -------
athena и neXtaw версии падают внутри lib{neXtaw,Xaw}. Это точно проблема не
VIm.

static void SetTextWidthAndHeight(lw)
{
...
      XFontSet    fset = lw->label.fontset;
      XFontSetExtents *ext = XExtentsOfFontSet(fset);

      lw->label.label_height = ext->max_ink_extent.height;
...

lw->label.fontset - NULL (из-за отсутствия локали), XExtentsOfFontSet(NULL)
пытается что-то возвращать (в моём случае это было 0x28). Выпадаем на ext->...

Я также склоняюсь к мысли, что это не проблема Xaw/neXtaw, а дело в самой libXt
(XFree86-libs)...
------- Comment #7 From 2004-07-03 16:25:04 -------
Не знаю точно чья именно проблема, но виноват XFree86-libs.

Если локалей нет, не использутся fontset'ы и аттрибут fontSet у всех виджетов
выставляется в NULL. Если у виджета аттрибут international установлен в True,
подразумевается что использутся fontSet. Далее на этот fontSet (NULL!)
вызывается функция XExtentsOfFontSet (libX11), которая выглядит следующим
образом:

XFontSetExtents *
XExtentsOfFontSet(font_set)
    XFontSet        font_set;
{
    return &font_set->core.font_set_extents;
}

т.е. возвращается (font_set + некое_смещение) без проверки валидности
аргумента.

Таким образом будут падать все Xaw/neXtaw приложения (в библиотеке) а также
xfontsel (в своей реализации виджета ULabel).

Самы простой вариант всё исправить - прописать зависимость -locales от -libs
или
внести -locales в состав -libs (с соответствующим Obsoletes).
------- Comment #8 From 2005-06-20 18:23:41 -------
reassign to xorg
------- Comment #9 From 2005-06-20 18:26:51 -------
это первое что я исправил