Print this page
4785 mdb crashes in ::ldi_handle

*** 22,33 **** /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ - #pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/types.h> #include <sys/sysmacros.h> #include <sys/dditypes.h> #include <sys/ddi_impldefs.h> #include <sys/ddipropdefs.h> --- 22,31 ----
*** 364,389 **** ldi_handle(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) { int ident = 0; int refs = 1; - if (mdb_getopts(argc, argv, - 'i', MDB_OPT_SETBITS, TRUE, &ident) != argc) - return (DCMD_USAGE); - - if (ident) - refs = 0; - /* Determine if there is an ldi handle address */ if (!(flags & DCMD_ADDRSPEC)) { if (mdb_walk_dcmd("ldi_handle", "ldi_handle", argc, argv) == -1) { mdb_warn("can't walk ldi handles"); return (DCMD_ERR); } return (DCMD_OK); } /* display the header line */ if (DCMD_HDRSPEC(flags)) ldi_handle_header(refs, ident); /* display the ldi handle */ --- 362,387 ---- ldi_handle(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv) { int ident = 0; int refs = 1; /* Determine if there is an ldi handle address */ if (!(flags & DCMD_ADDRSPEC)) { if (mdb_walk_dcmd("ldi_handle", "ldi_handle", argc, argv) == -1) { mdb_warn("can't walk ldi handles"); return (DCMD_ERR); } return (DCMD_OK); } + if (mdb_getopts(argc, argv, + 'i', MDB_OPT_SETBITS, TRUE, &ident) != argc) + return (DCMD_USAGE); + + if (ident) + refs = 0; + /* display the header line */ if (DCMD_HDRSPEC(flags)) ldi_handle_header(refs, ident); /* display the ldi handle */