diff --git a/src/i830_accel.c b/src/i830_accel.c index 953a73b..e868c37 100644 --- a/src/i830_accel.c +++ b/src/i830_accel.c @@ -90,6 +90,21 @@ intel_get_pixmap_pitch(PixmapPtr pPix) #endif } +#include + +static __inline__ void intel_backtrace(void) +{ + void *array[32]; /* deeper nesting than this means something's wrong */ + size_t size, i; + char **strings; + ErrorF("\nBacktrace:\n"); + size = backtrace(array, 32); + strings = backtrace_symbols(array, size); + for (i = 0; i < size; i++) + ErrorF("%d: %s\n", i, strings[i]); + free(strings); +} + int I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis) { @@ -130,6 +145,7 @@ I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis) } else if (now - start > timeout_millis) { ErrorF("Error in I830WaitLpRing(), timeout for %d seconds\n", timeout_millis/1000); + intel_backtrace(); if (IS_I965G(pI830)) i965_dump_error_state(pScrn); else