From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7426 invoked by alias); 12 Nov 2009 00:22:08 -0000 Received: (qmail 7416 invoked by uid 22791); 12 Nov 2009 00:22:06 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from smtp-outbound-1.vmware.com (HELO smtp-outbound-1.vmware.com) (65.115.85.69) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Nov 2009 00:22:02 +0000 Received: from jupiter.vmware.com (mailhost5.vmware.com [10.16.68.131]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id ED8EF13B66 for ; Wed, 11 Nov 2009 16:22:00 -0800 (PST) Received: from [10.20.94.141] (msnyder-server.eng.vmware.com [10.20.94.141]) by jupiter.vmware.com (Postfix) with ESMTP id E2582DC05D for ; Wed, 11 Nov 2009 16:22:00 -0800 (PST) Message-ID: <4AFB54CA.9090900@vmware.com> Date: Thu, 12 Nov 2009 01:09:00 -0000 From: Michael Snyder User-Agent: Thunderbird 1.5.0.12 (X11/20090624) MIME-Version: 1.0 To: gdb@sourceware.org Subject: real world reverse debugging success story Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2009-11/txt/msg00130.txt.bz2 Hey guys, Just wanted to make note that I used reverse debugging to solve a real world gdb bug (the recently submitted one for dcache.c). First I found where the lists were cross-linked, then I put watchpoints on the list elements that were crossed, and ran backwards. One watchpoint took me to dcache_alloc, and the other to dcache_invalidate. Then I used some bookmarks to look at the state of the list before and after, and close in on the actual problem (which was in fact in another function). Doug rewrote my patch (thanks Doug), but he verified that the actual bug was exactly what process record revealed it to be. Whee! Michael Stats: used an 8 million instruction cache, running as a ring buffer. Had to record over 80 million instructions before I tripped the bug. Saved core file with record log was 250 megabytes, and reloaded fine.