After letting the screensaver run overnight (set to Random), I noticed there was a core file in my home directory, which was dumped by 'distort -root'. I am running the SVGA X server, on a Riva128 card. I just ran "distort" manually and did not see the coredump, so I'm wondering if this is something that can happen after it's been running for awhile.
It's been running for about 5 hours here with no segfaults so far.
I'll run it some more on my machine and see what happens. Unfortunately, I deleted the core file, otherwise I would at least have a backtrace.
The coredump happened again, here is a backtrace: #0 0x400b8ffa in _XGetPixel32 () from /usr/X11R6/lib/libX11.so.6 #1 0x804ada7 in XMapRaised () #2 0x804b360 in XMapRaised () #3 0x804c239 in XMapRaised () #4 0x4017e9cb in __libc_start_main (main=0x804ba90 <XMapRaised+8148>, argc=2, argv=0xbffffa04, init=0x80494bc <_init>, fini=0x804fcac <_fini>, rtld_fini=0x4000ae60 <_dl_fini>, stack_end=0xbffff9fc) at ../sysdeps/generic/libc-start.c:92 I'll admit this probably isn't all that helpful. Maybe I'll compile an xscreensaver RPM with debugging symbols.
Yeah, unfortunately, unless we know where in distort it core dumped, it's *really* hard to track down.
Ok, here's the backtrace gdb gives me with a debug version of xscreensaver: (gdb) bt #0 0x400b8ffa in _XGetPixel32 () from /usr/X11R6/lib/libX11.so.6 #1 0x804add7 in reflect_draw (k=3) at distort.c:584 #2 0x804b2a0 in screenhack (dpy=0x8058ad0, window=79691784) at distort.c:739 #3 0x804c0b5 in main (argc=1, argv=0xbffff9c4) at screenhack.c:574 Does this help at all?
Hm, will check ; you're running at 32bpp, correct?
Yes, and 800x600.
What does xdpyinfo say under 'supported pixmap formats'?
supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32
I'm experiencing an identical problem with distort, I've not traced it yet. Please let me know if I can supply additional details.
Does this still happen with the version of distort included with xscreensaver 4.05? If so: Does it happen every time? When it does happen, what are the values of these variables: radius, number, speed, vortex, magnify, blackhole, effect; What are all the local vars inside the function (reflect_draw, probably) where it crashed? What are the contents of the orig_map structure? Thanks...
Yes, distort that comes with xscreensaver-4.0.5 crashes as well )-: and yes, I think it happens every time (at least when you run it with the -root option) although it might take a while... let's see here, the variables... radius=80 number=1 speed=2 vortex=0 magnify=0 blackhole=0 effect=(void (*)()) 0x804b630 <move_lense> yes, It did crash in reflect_draw, on hte line XPutPixel( buffer_map, j, i,XGetPixel( orig_map, xy_coo[k].x + j, ny )); to be specific Why don't I just attach the core file from the crash of the debug-build I've done Tell me if you need any more info (-:
Created attachment 69850 [details] coredump from distort suplied with xscreensaver-4.05-2 from rawhide
I think I've fixed it -- can you try this patch and let me know how it works for you? diff -u -2 -r1.15 distort.c --- distort.c 24 Nov 2001 03:38:08 -0000 1.15 +++ distort.c 23 Sep 2002 00:31:41 -0000 @@ -569,4 +569,5 @@ lysq = ly * ly; ny = xy_coo[k].y + i; + if (ny >= orig_map->height) ny = orig_map->height-1; for(j = 0 ; j < 2*radius+speed+2 ; j++) { lx = j - cx;
Seems to work now (-: