Bug 456399

Summary: New xscreensaver update aborts immediately
Product: [Fedora] Fedora Reporter: Bill Crawford <billcrawford1970>
Component: xscreensaverAssignee: Mamoru TASAKA <mtasaka>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: low Docs Contact:
Priority: low    
Version: 8CC: jwz
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 5.06-2.fc8 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-07-29 15:26:24 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Log output from xscreensaver
none
Output from test-randr
none
patch none

Description Bill Crawford 2008-07-23 11:06:16 UTC
Description of problem:
xscreensaver daemon aborts immediately after launch.

Version-Release number of selected component (if applicable):
5.06-1.fc8

How reproducible:
Start xscreensaver on my system. Possibly the issue is due to my having two 
screens but NOT spanning, they're separate heads / protocol screens. Also 
possible that Xrandr features are being relied on that aren't fully supported 
in the F8 version of the X server. Just guessing, though.

Steps to Reproduce:
1. Push an inessential experimental xscreensaver update to a stable distro.
2. ...
3. PROFIT!
  
Actual results:
It aborts, like so:

[bill@bill ~]$ xscreensaver -sync -verbose -log log.txt
xscreensaver: 12:05:00: logging to file log.txt
Aborted

Expected results:
Should not fail.

Additional info:
Attaching the log file in a moment ...

Comment 1 Bill Crawford 2008-07-23 11:06:16 UTC
Created attachment 312461 [details]
Log output from xscreensaver

Comment 2 Mamoru TASAKA 2008-07-23 11:11:15 UTC
CCing to jwz.

Comment 3 Jamie Zawinski 2008-07-23 16:34:46 UTC
Need a stack trace.

Comment 4 Bill Crawford 2008-07-23 16:55:13 UTC
Yeah, will try to capture a trace in a moment ...


Comment 5 Bill Crawford 2008-07-23 17:02:56 UTC
Pasting in here 'cause it's fairly short

#0  0x0011e402 in __kernel_vsyscall ()
#1  0x00149690 in raise () from /lib/libc.so.6
#2  0x0014af91 in abort () from /lib/libc.so.6
#3  0x08051b65 in saver_exit (si=0xbf945244, status=-1, 
    dump_core_reason=0x806aff8 "because of synchronous X Error") at
../../driver/windows.c:904
#4  0x0804d5c8 in saver_ehandler (dpy=0x99a6430, error=0xbf944de8)
    at ../../driver/xscreensaver.c:336
#5  0x0030e71e in _XError (dpy=0x99a6430, rep=0x99ae160) at XlibInt.c:2905
#6  0x00316263 in _XReply (dpy=0x99a6430, rep=0xbf944f10, extra=0, discard=0) at
xcb_io.c:417
#7  0x0066f77b in XRRGetScreenResources (dpy=0x99a6430, window=0) at XrrScreen.c:81
#8  0x080538b3 in update_screen_layout (si=0xbf945244) at ../../driver/screens.c:386
#9  0x0804d893 in main (argc=Cannot access memory at address 0x6
) at ../../driver/xscreensaver.c:784
#10 0x00136390 in __libc_start_main () from /lib/libc.so.6
#11 0x0804bbc1 in _start ()


Comment 6 Bill Crawford 2008-07-23 17:04:39 UTC
As the error appears within XRRGetScreenResources I'm assuming this is probably
a bug in libXrandr or in the X server rather than xscreensaver, feel free to
reassign it if you like.

Comment 7 Jamie Zawinski 2008-07-23 17:26:34 UTC
I don't know how RootWindow(dpy,i) is returning 0, unless you have both A) multiple real X screens 
(ScreenCount > 0) and B) RANDR stuff happening at the same time.  I wasn't even sure that was possible.  
But I can't tell whether that's the case because it died before it was able to print out a debug log of your 
screens and geometry.

Also, update_screen_layout does not call XRRGetScreenResources, so that stack trace is garbled. I suspect 
you're not compiled with -g.



Comment 8 Bill Crawford 2008-07-23 17:58:15 UTC
I do indeed have multiple real X screens, and was running from a terminal on
screen 1, although I wouldn't have expected that to matter ...

Anyway, it appears that randr_scan_monitors() has been inlined, which gcc likes
to do these days; repeated backtrace is the same. I double checked that I have
the correct version of the debuginfo package installed.

#0  0x0011e402 in __kernel_vsyscall ()
#1  0x00149690 in raise () from /lib/libc.so.6
#2  0x0014af91 in abort () from /lib/libc.so.6
#3  0x08051b65 in saver_exit (si=0xbf86f264, status=-1, 
    dump_core_reason=0x806aff8 "because of synchronous X Error") at
../../driver/windows.c:904
#4  0x0804d5c8 in saver_ehandler (dpy=0x973e450, error=0xbf86ee08)
    at ../../driver/xscreensaver.c:336
#5  0x0030e71e in _XError (dpy=0x973e450, rep=0x9746188) at XlibInt.c:2905
#6  0x00316263 in _XReply (dpy=0x973e450, rep=0xbf86ef30, extra=0, discard=0) at
xcb_io.c:417
#7  0x0066f77b in XRRGetScreenResources (dpy=0x973e450, window=0) at XrrScreen.c:81
#8  0x080538b3 in update_screen_layout (si=0xbf86f264) at ../../driver/screens.c:386
#9  0x0804d893 in main (argc=Cannot access memory at address 0x6
) at ../../driver/xscreensaver.c:784
#10 0x00136390 in __libc_start_main () from /lib/libc.so.6
#11 0x0804bbc1 in _start ()


Comment 9 Bill Crawford 2008-07-23 17:59:35 UTC
Lemme know if there's anything else I can do (have the exploded source here, can
add printf()s or whatever tomorrow).

Comment 10 Jamie Zawinski 2008-07-23 18:17:08 UTC
Please build and run "test-randr" from the xscreensaver-5.06/driver/ src.

Also, xdpyinfo.



Comment 11 Jamie Zawinski 2008-07-23 18:19:00 UTC
Also, by "real X screens" I mean you address them with $DISPLAY :0.0 and :0.1.  Just because you have 
mutliple monitors doesn't mean you have real X screens.  That's kind of the whole point of 
RANDR/Xinerama.

Comment 12 Mamoru TASAKA 2008-07-24 02:41:38 UTC
(In reply to comment #10)
> Please build and run "test-randr" from the xscreensaver-5.06/driver/ src. 
> Also, xdpyinfo.
> 

Hi, Bill:
For now I created a subpackage "xscreensaver-tests" which contains some binaries
for testing like "/usr/libexec/xscreensaver/test-randr" or so. Would you try this
from the following?
http://kojipkgs.fedoraproject.org/packages/xscreensaver/5.06/1.fc8.1/

xdpyinfo is in xorg-x11-utils package.

For Jamie:
Do you want me to ship test-* binaries under driver/ directory for Fedora
xscreensaver rpms
from next time?


Comment 13 Bill Crawford 2008-07-24 09:26:16 UTC
No, they're separate protocol screens (.0 and .1) - I have two cards, and this
way I get DRI on both heads, hence nice fast 3d screensavers :o)

Comment 14 Bill Crawford 2008-07-24 09:41:27 UTC
Created attachment 312539 [details]
Output from test-randr

The "event" I sent it was just changing the refresh rate on one screen, hence
the lack of apparent change.

Comment 15 Jamie Zawinski 2008-07-24 16:01:32 UTC
Created attachment 312575 [details]
patch

Ok, I think I just fixed this -- but the other folks weren't getting crashes. 
(Congratulations, I think you're the first person ever to try and use real
multi-screen on a system with randr 1.2 available...)

Comment 16 Bill Crawford 2008-07-24 16:23:37 UTC
Jamie: you wouldn't believe how many people tell me "don't do that" ;o)

Thanks for patch, building now ...


Comment 17 Bill Crawford 2008-07-24 18:00:18 UTC
... fixed, thanks.

Comment 18 Mamoru TASAKA 2008-07-24 18:12:17 UTC
Good news, thanks!

Comment 19 Jamie Zawinski 2008-07-24 18:19:58 UTC
> For Jamie:
> Do you want me to ship test-* binaries under driver/ directory for Fedora
> xscreensaver rpms
> from next time?


Nah, they're almost never needed...

Comment 20 Fedora Update System 2008-07-24 18:54:05 UTC
xscreensaver-5.06-2.fc9 has been submitted as an update for Fedora 9

Comment 21 Fedora Update System 2008-07-24 18:55:13 UTC
xscreensaver-5.06-2.fc8 has been submitted as an update for Fedora 8

Comment 22 Mamoru TASAKA 2008-07-29 15:26:24 UTC
It seems the update packages are already pushed.

If the bug still exists, please feel free to reopen this bug.
Thank you, Bill and Jamie. Closing.