Date: Sat, 13 Jan 2001 15:43:57 +1030 From: Matthew Thyer <thyerm@camtech.net.au> To: current@FreeBSD.org Cc: ports@FreeBSD.org, jwz@jwz.org, jseger@FreeBSD.org Subject: Data corruption whilst debugging sonar module of ports/graphics/xscreensaver-gtk-3.26 ? Message-ID: <3A5FE415.514893C7@camtech.net.au>
next in thread | raw e-mail | index | archive | help
Both of my main FreeBSD-CURRENT machines cant seem to run the sonar module from xscreensaver-gtk-3.26 for very long. It crashes with a SIGBUS on line 1654 of xscreensaver-3.26/hacks/sonar.c when the sonar sweep gets back around to the first bogie that was ever displayed. Since my home box is XFree 3.3.6 and work is XFree 4.0.2, I assume this is a bug with the screensaver itself. Note both machines are recent -CURRENT (within 1 week of today). Today I had some spare time (wife and kids out of my hair) so I installed ports/devel/ddd to have a look at whats going on. To reproduce what I'm doing: - Install ports/devel/ddd - Set "CFLAGS=-g -pipe" in /etc/make.conf - cd /usr/ports/x11/xscreensaver ; sudo make install - Set your CFLAGS back to what they were - cd /usr/ports/x11/xscreensaver/work/xscreensaver-3.26/hacks - ddd & - File->Open Program... and choose "sonar" - Run until it dies with the SIGBUS on line 1654 (subroutine "Sonar") - Display "si", "*si", "*si->visable", all the "*si->visable{->next}*" (e.g. "*si->visable->next", "*si->visable->next->next" etc) and the local variables. I'm seeing the local variable "bp" with a value of 0xd0d0d0d0. I cant see how this happens when "bp" is initialised from si->visable in the for loop at line 1647 and thereafter follows the list (via ->next) where no members have an address of 0xd0d0d0d0. It seems that something in sonar.c is overwriting memory it shouldn't. I haven't done much debugging since Uni, so I was wonderring if others can reproduce this and does someone have some ideas how I can easily detect this data corruption with ddd or is it a compiler bug ? (I suspect not as it always happens when the sweep gets back around to the first bogie ever displayed). Does anyone recognise where 0xd0d0d0d0 may have come from ? 1635 static void 1636 Sonar(sonar_info *si, Bogie *bl) 1637 { 1638 1639 /* Local Variables */ 1640 1641 Bogie *bp, *prev; 1642 int i; 1643 1644 /* Check for expired tagets and remove them from the visable list */ 1645 1646 prev = NULL; 1647 for (bp = si->visable; bp != NULL; bp = bp->next) { 1648 1649 /* 1650 * Remove it from the visable list if it's expired or we have 1651 * a new target with the same name. 1652 */ 1653 1654 bp->age ++; 1655 Thanks To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A5FE415.514893C7>