LINUX.ORG.RU

Шрифты и ошибка сегментирования


0

0

День добрый.
Забавы ради,решил спросить. Почему при добавлении практический любого шрифта, все Х программы выпадают в segmentation fault.
Когда-то с времён ЛФС,установил в домашнюю директорию и существовали там они без проблем, теперь (gentoo 2006.1) понадобилось шрифт поставить и началось, пришлось всю локальную папку шрифтов потереть.
Если устанавливаю corefonts, та же история.
Делаю следующее:
закидываю в папку ~/.fonts шрифт (всё сразу же сегфолтится начинает)
потом в из этой директории mkfontdir, mkfontscake, fc-cache.
Вот например verdana получилось вернуть, от отсальных вываливаются Х-проги.
Помогите, а то без слёз смотреть/читать уже невозможно )

anonymous

В убунте\дебиане и федоре приходилось перед fc-cache делать touch <fontdirectory>. Там какой то баг был. Т.е. я делал так: sudo touch /usr/share/fonts/* sudo touch /usr/share/fonts/*/* и т. д. Попробуй

LokiAs2
()
Ответ на: комментарий от LokiAs2

Нет, не помогает ( fc-cache вылетает с ошибкой сегментирования

anonymous
()

вывод следующих команд в студию:

strace -e open buggyprorgam (последние 20 строк)

gdb buggyprogram (если segfault, набери bt)

AEP ★★★★★
()
Ответ на: комментарий от AEP

strace:
open("/home/t/.fonts/._fonts.scale", O_RDONLY) = -1 ENOENT (No such file o
r directory)
open("/home/t/.fonts/%fonts.scale", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/home/t/.fonts/.AppleDouble/fonts.scale", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/home/t/.fonts/fonts.scale/rsrc", O_RDONLY) = -1 ENOTDIR (Not a dire
ctory)
open("/home/t/.fonts/resource.frk/fonts.scale", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/t/.fonts/.resource/fonts.scale", O_RDONLY) = -1 ENOENT (No suc h file or directory)
open("/home/t/.fonts/fonts.dir", O_RDONLY) = 8
open("/home/t/.fonts/._fonts.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/t/.fonts/%fonts.dir", O_RDONLY) = -1 ENOENT (No such file or d irectory)
open("/home/t/.fonts/.AppleDouble/fonts.dir", O_RDONLY) = -1 ENOENT (No su ch file or directory)
open("/home/t/.fonts/fonts.dir/rsrc", O_RDONLY) = -1 ENOTDIR (Not a direct ory)
open("/home/t/.fonts/resource.frk/fonts.dir", O_RDONLY) = -1 ENOENT (No su ch file or directory)
open("/home/t/.fonts/.resource/fonts.dir", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/t/.fonts/verdana.ttf", O_RDONLY) = 8
open("/home/t/.fonts/21205___.ttf", O_RDONLY) = 8
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++



gdb:

(gdb) run
Starting program: /usr/bin/fc-cache
(no debugging symbols found)
Failed to read a valid object file image from memory.
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)

Program received signal SIGSEGV, Segmentation fault.
0x00000020 in ?? ()

anonymous
()
Ответ на: комментарий от anonymous

попробуй пересобрать freetype без оптимизации (или, самое большее, -O2 -fno-strict-aliasing). Кстати какая версия freetype?

AEP ★★★★★
()
Ответ на: комментарий от AEP

Было 2.3.2.
Переустановил на 2.3.4.
Проблему не решило. fc-cache -fsv выдаёт ошибки почти на каждую папку в /usr/share/fonts примерно такого же содержания, как приводил выше.
Честно говоря, я давно смотрю на изменения с версии 2006.1 в файле make.defaults, где в USE было указано unicode.

anonymous
()
Ответ на: комментарий от anonymous

Значит не freetype, а fontconfig. На LFS LiveCD freetype 2.3.4 и fontconfig 2.4.2 - вроде работают с содержимым /etc/fonts почти-по-умолчанию.

AEP ★★★★★
()
Ответ на: комментарий от AEP

Да, fontconfig.
обновился до 2.4.2, при установке ругалась всё теми же сообщениями.
Но теперь поехало )
Спасибо огромное за помощь )
Приятно, когда человек жертвует временем, чтобы помочь, а не чтобы херню всякую писать, как здесь любят )

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.