Summary: | xscreensaver не запускается | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Renat Sabitov <r_sabitov> | ||||||||
Component: | xorg-x11-libs | Assignee: | Valery Inozemtsev <shrek> | ||||||||
Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus | ||||||||
Severity: | major | ||||||||||
Priority: | P2 | ||||||||||
Version: | unstable | ||||||||||
Hardware: | all | ||||||||||
OS: | Linux | ||||||||||
Attachments: |
|
Description
Renat Sabitov
2004-10-29 11:57:12 MSD
Created attachment 624 [details]
xorg.conf
В свете того что xlockmore не собирается в сизифе, приоритет этой ошибки высок. Не подтверждается. xorg-x11-server-6.8.1-alt11, xscreensaver-4.18-alt2 Created attachment 628 [details]
лог gdb
У меня те же версии. Прилагаю лог gdb сессии.
xscreensaver: 10:52:23: disabling server builtin screensaver: xscreensaver: 10:52:23: (xset s 43200 0; xset s noblank; xset s expose) Пропробуйте в терминале выполнить последовательность команд: xset s 43200 0; xset s noblank; xset s expose Также попробуйте временно убрать ~/.xscreensaver, если проблема решилась, прикрепите конфиг к ошибке. Что говорит rpm -V xscreensaver ? $ xset s 43200 0; xset s noblank; xset s expose X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 107 (X_SetScreenSaver) Value in failed request: 0xffffa8c0 Serial number of failed request: 8 Current serial number in output stream: 9 $ rpm -V xscreensaver ..?..... c /etc/pam.d/xscreensaver ..?..... /usr/X11R6/bin/xscreensaver переименование .xscreensaver помогло. Сейчас прикреплю Created attachment 629 [details]
.xscreensaver
Ещё хочу вывод xset q: 1. До любой попытки запуска xscreensaver 2. После _удачного_ запуска xscreensaver (без конфига) 3. После неудачного запуска xscreensaver Зпускать xscreensaver оба раза с -verbose и сказать, видны ли строки насчёт "disabling server builtin screensaver" и xset в stderr. Охохо... Ужыс какой, xscreensaver не виноват: Из мана: SYNTAX XSetScreenSaver(display, timeout, interval, prefer_blanking, allow_exposures) Display *display; int timeout, interval; int prefer_blanking; int allow_exposures; Из кода: int desired_server_timeout, desired_server_interval; [...] XSetScreenSaver (si->dpy, desired_server_timeout, desired_server_interval, desired_prefer_blank, desired_allow_exp); Из лога: xscreensaver: 10:52:23: disabling server builtin screensaver: xscreensaver: 10:52:23: (xset s 43200 0; xset s noblank; xset s expose) 43200 - значение desired_server_timeout (параметр timeout) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 107 (X_SetScreenSaver) Value in failed request: 0xffffa8c0 Значение 0xffffa8c0 соответсвует числу 43200, которое пытается обрабытываться как signed short int с преобразованием в int. Ренат, временным решением Вашей проблемы может быть указание таймаута меньше девяти часов (32767 секунд). Перевешиваю баг на xorg-X11-libs... Ну вот оно: xc/include/Xproto.h: typedef struct { CARD8 reqType; BYTE pad; CARD16 length B16; INT16 timeout B16, interval B16; BYTE preferBlank, allowExpose; CARD16 pad2 B16; } xSetScreenSaverReq; xc/lib/X11/SetSSaver.c: int XSetScreenSaver(dpy, timeout, interval, prefer_blank, allow_exp) register Display *dpy; int timeout, interval, prefer_blank, allow_exp; { register xSetScreenSaverReq *req; LockDisplay(dpy); GetReq(SetScreenSaver, req); req->timeout = timeout; req->interval = interval; req->preferBlank = prefer_blank; req->allowExpose = allow_exp; UnlockDisplay(dpy); SyncHandle(); return 1; } int vs. INT16... Определение INT16 и B16 находится в xc/include/Xmd.h полагаю этого будет достаточно --- xc/lib/X11/SetSSaver.c.orig 2004-12-15 17:56:28 +0300 +++ xc/lib/X11/SetSSaver.c 2004-12-15 17:54:14 +0300 @@ -31,7 +31,7 @@ int XSetScreenSaver(dpy, timeout, interval, prefer_blank, allow_exp) register Display *dpy; - int timeout, interval, prefer_blank, allow_exp; + short signed int timeout, interval, prefer_blank, allow_exp; { register xSetScreenSaverReq *req; (In reply to comment #11) > полагаю этого будет достаточно > - int timeout, interval, prefer_blank, allow_exp; > + short signed int timeout, interval, prefer_blank, allow_exp; Нет. Есть мнение, что на эту функцию ссылаются некоторое количество стандартов и менять тип передаваемых аргументов будет не очень хорошо. Вместо этого можно в самом XSetScreenSaver устроить sanity check для переданных данных (например по & 0x7FFF)... в таком случае я закрываю быгу как инвалид. как определитесь что фиксить делайте reopen Я думаю, что стОит перевесить эту багу в XOrg'овскую багзиллу. Пусть они сами думаю что и где фиксить. У кого в этом смысле кунг-фу сильнее? (кто вешать будет?) у меня с ангельским нелады... bugs.freedesktop.org, компонент xorg замечательно. ребята там вменяемые, исправят быстро |