Hi,

It turns out that on sparc64, doing something like
  show map /f *kernel_map
in ddb, makes you crash with a nullpointer exception.
Diff below makes sure we read all bytes of the pointer. The int in the
original code also explains why amd64 (little-endian arch) never had a
problem.

To test this, drop into ddb and type
  show map /f *kernel_map
Without this diff, any big-endian 64-bit arch should have a null-pointer
excepction.
With this diff applied, the kernel allocation map should be printed.

Please test the above to confirm this (I don't have the hardware here).
PS, unmount your filesystems before testing!

Ok?
-- 
Ariane


Index: ddb/db_expr.c
===================================================================
RCS file: /cvs/src/sys/ddb/db_expr.c,v
retrieving revision 1.8
diff -u -d -p -r1.8 db_expr.c
--- ddb/db_expr.c       13 Mar 2006 06:23:20 -0000      1.8
+++ ddb/db_expr.c       18 May 2011 22:26:31 -0000
@@ -118,7 +118,7 @@ db_unary(db_expr_t *valuep)
                db_error("Syntax error\n");
                /*NOTREACHED*/
            }
-           *valuep = db_get_value((db_addr_t)*valuep, sizeof(int), FALSE);
+           *valuep = db_get_value((db_addr_t)*valuep, sizeof(db_addr_t), 
FALSE);
            return (TRUE);
        }
        db_unread_token(t);

Reply via email to