| Summary: | Segfaults if no XFree locales available | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Sir Raorn <raorn> |
| Component: | xorg-x11 | Assignee: | Valery Inozemtsev <shrek> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | major | ||
| Priority: | P2 | CC: | ldv, rider |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
|
Description
Sir Raorn
2003-12-30 08:49:58 MSK
Исправлена ли ошибка ? или мне стоит поставить зависимость у libs на locales ? Я пока не могу найти площадку чтобы это проверить. Есть стойкое подозрение, что падает не сам vim, а кто-то из X'овых библиотек. В любом случае зависимость лишней не будет. Буду разбираться с этим позже... Зависимость будет лишней, если локали реально не нужны никаким библиотекам. В любом случае - надо знать точно ;-) Воспроизводится на Master 2.4beta2. Тестовый полигон есть, разбираюсь... 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)...
Не знаю точно чья именно проблема, но виноват 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).
reassign to xorg это первое что я исправил |