Index: xc/ChangeLog =================================================================== RCS file: /cvs/xorg/xc/ChangeLog,v retrieving revision 1.794 diff -u -2 -0 -r1.794 ChangeLog --- xc/ChangeLog 4 Mar 2005 22:21:41 -0000 1.794 +++ xc/ChangeLog 5 Mar 2005 20:41:42 -0000 @@ -1,20 +1,29 @@ +2005-03-05 Roland Mainz + * xc/programs/Xserver/hw/xfree86/common/xf86Events.c + Bugzilla #2543 (https://bugs.freedesktop.org/show_bug.cgi?id=2543) + attachment #xxx (https://bugs.freedesktop.org/attachment.cgi?id=xxx): + Fix |xf86SignalHandler()| which resets the signal handler + before setting the flag indicating a signal has been caught, + theoretically allowing the possibility of infinite recursion. + Patch by Andrew Church . + 2005-03-04 Vladimir Dergachev Modified: * programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c Let through all chips R300 and above - presumably the filtering should take place at the DRM driver level. Correct cut'n'paste position misprint. Big thanks for Michel Danzer for pointing out both improvements. 2005-03-04 Vladimir Dergachev Modified: * programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c Turns out Radeon R420 chips work fine with R300 microcode. Thanks go to Rune Petersen for careful investigation. 2005-03-03 Alan Hourihane * xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_modes.c * xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c Index: xc/programs/Xserver/hw/xfree86/common/xf86Events.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/common/xf86Events.c,v retrieving revision 1.6 diff -u -2 -0 -r1.6 xf86Events.c --- xc/programs/Xserver/hw/xfree86/common/xf86Events.c 28 Jan 2005 16:12:58 -0000 1.6 +++ xc/programs/Xserver/hw/xfree86/common/xf86Events.c 5 Mar 2005 20:42:05 -0000 @@ -1271,43 +1271,43 @@ xf86InterceptSigIll(void (*sigillhandler)(void)) { xf86SigIllHandler = sigillhandler; } /* * xf86SigHandler -- * Catch unexpected signals and exit or continue cleanly. */ void xf86SigHandler(int signo) { if ((signo == SIGILL) && xf86SigIllHandler) { (*xf86SigIllHandler)(); /* Re-arm handler just in case we unexpectedly return here */ (void) signal(signo, xf86SigHandler); return; } if (xf86SignalIntercept && (*xf86SignalIntercept < 0)) { + *xf86SignalIntercept = signo; /* Re-arm handler just in case */ (void) signal(signo, xf86SigHandler); - *xf86SignalIntercept = signo; return; } signal(signo,SIG_IGN); xf86Info.caughtSignal = TRUE; #ifdef XF86BIGFONT XF86BigfontCleanup(); #endif #if defined(XFree86LOADER) if (xf86Initialising) LoaderCheckUnresolved(LD_RESOLV_IFDONE); ErrorF("\n" " *** If unresolved symbols were reported above, they might not\n" " *** be the reason for the server aborting.\n"); #endif FatalError("Caught signal %d. Server aborting\n", signo); } #ifdef MEMDEBUG void