| 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: |
|
||||||||||
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 замечательно. ребята там вменяемые, исправят быстро |
$ xscreensaver ############################################################################## xscreensaver: 11:33:39: X Error! PLEASE REPORT THIS BUG. xscreensaver: 11:33:39: screen 0/0: 0x8e, 0x0, 0x1400001 ############################################################################## 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: 205 Current serial number in output stream: 206 ############################################################################## If at all possible, please re-run xscreensaver with the command line arguments `-sync -verbose -no-capture', and reproduce this bug. That will cause xscreensaver to dump a `core' file to the current directory. Please include the stack trace from that core file in your bug report. *DO NOT* mail the core file itself! That won't work. http://www.jwz.org/xscreensaver/bugs.html explains how to create the most useful bug reports, and how to examine core files. The more information you can provide, the better. But please report this bug, regardless! ##############################################################################