kgdb unuseable with cores on current (for some people)

Alan Cox alc at cs.rice.edu
Fri May 14 17:39:59 UTC 2010


On 5/14/2010 1:44 AM, Benjamin Kaduk wrote:
> On Fri, 14 May 2010, Kostik Belousov wrote:
>
>> On Fri, May 14, 2010 at 12:55:35AM -0400, Benjamin Kaduk wrote:
>>> Hi all,
>>>
>>> As was revealed in a recent thread here [1], several people have been
>>> unable to use kgdb on coredumps for the past few months (but 
>>> possibly not
>>> everyone).
>>>
>>> I am one of those affected, and have narrowed the breakage with a 
>>> binary
>>> search to between SVN revisions 202883 and 202954 (that is, Jan 23 
>>> 1200h
>>> and Jan 25 0000h).  Looking at the changes, alc's revision 202897 and
>>> attilio's revision 202933 look to be the most plausible culprits in 
>>> terms
>>> of what they touched.  I will continue with my bisection, but with 
>>> only 36
>>> revisions in play, it is probably worth looking for the bug in parallel
>>> with the bisection.
>>
>> Try reverting r202897 on fresh HEAD. I very much doubt that r202933
>> can be responsible.
>>
>
> Indeed, 202933 was cleared of blame in the latest bisection.  I'm 
> currently pulling up to HEAD and will try reverting 202897.

I suspect the following is needed:

Index: vm/vm_page.c
===================================================================
--- vm/vm_page.c        (revision 207823)
+++ vm/vm_page.c        (working copy)
@@ -108,6 +108,7 @@ __FBSDID("$FreeBSD$");
  #include <sys/kernel.h>
  #include <sys/limits.h>
  #include <sys/malloc.h>
+#include <sys/msgbuf.h>
  #include <sys/mutex.h>
  #include <sys/proc.h>
  #include <sys/sysctl.h>
@@ -375,6 +376,14 @@ vm_page_startup(vm_offset_t vaddr)
             new_end + vm_page_dump_size, VM_PROT_READ | VM_PROT_WRITE);
         bzero((void *)vm_page_dump, vm_page_dump_size);
  #endif
+#ifdef __amd64__
+       pa = DMAP_TO_PHYS((vm_offset_t)msgbufp);
+       last_pa = pa + round_page(MSGBUF_SIZE);
+       while (pa < last_pa) {
+               dump_add_page(pa);
+               pa += PAGE_SIZE;
+       }
+#endif
         /*
          * Compute the number of pages of memory that will be available for
          * use (taking into account the overhead of a page structure per



More information about the freebsd-current mailing list