retitle 206907 xserver-xfree86: [glint] endless loop in Permedia2Sync() while using xscreensaver tag 206907 + upstream thanks
On Sat, Aug 23, 2003 at 07:53:17PM +0200, David N. Welton wrote: > Package: xserver-xfree86 > Version: 4.2.1-10 > Severity: normal > > While running xscreensaver, X appears to hang, somewhat randomly. I > downloaded the debug server, and attached to it when the problem > occurred: [...] > (gdb) bt > #0 0x080826e7 in Permedia2Sync (pScrn=0x8942ec0) at pm2_accel.c:404 [...] > Let's try doing stepi: > > 404 in pm2_accel.c > (gdb) > 0x080826d3 404 in pm2_accel.c > (gdb) > 0x080826d6 404 in pm2_accel.c > (gdb) > 0x080826dc 404 in pm2_accel.c > (gdb) > 0x080826e2 404 in pm2_accel.c > (gdb) > 0x080826e5 404 in pm2_accel.c > (gdb) > 0x080826e7 404 in pm2_accel.c > (gdb) > 0x080826e9 404 in pm2_accel.c > (gdb) > 404 in pm2_accel.c > > Doesn't seem to want to exit from that. [...] > I don't have the source code, so I'm afraid that's where my digging > ends. I can look around some more if you tell me exactly what to do. Nah. I keep source trees around just for this sort of contingency. Let's have a look at our first contestant, shall we? 392 void 393 Permedia2Sync(ScrnInfoPtr pScrn) 394 { 395 GLINTPtr pGlint = GLINTPTR(pScrn); 396 397 CHECKCLIPPING; 398 399 while (GLINT_READ_REG(DMACount) != 0); 400 GLINT_WAIT(2); 401 GLINT_WRITE_REG(0x400, FilterMode); 402 GLINT_WRITE_REG(0, GlintSync); 403 do { 404 while(GLINT_READ_REG(OutFIFOWords) == 0); 405 } while (GLINT_READ_REG(OutputFIFO) != Sync_tag); 406 } Well, that certainly looks like a good way to fuck yourself. Whoever wrote this code has a lot of confidence in the underlying hardware. Since I happen to know that Sven Luther does a lot of glint driver work, I'm CCing him on this message. Sven, any ideas? -- G. Branden Robinson | We either learn from history or, Debian GNU/Linux | uh, well, something bad will [EMAIL PROTECTED] | happen. http://people.debian.org/~branden/ | -- Bob Church
pgpKkWDvHP7Mz.pgp
Description: PGP signature