Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Jun 2011 18:43:20 +0400
From:      Pan Tsu <inyaoo@gmail.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/158431: [dtrace] crash in dt_proc_lookup when attaching to PID, assert(dpr != NULL)
Message-ID:  <86r56cu29j.fsf@gmail.com>
Resent-Message-ID: <201106291450.p5TEo8qw007127@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         158431
>Category:       bin
>Synopsis:       [dtrace] crash in dt_proc_lookup when attaching to PID, assert(dpr != NULL)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 29 14:50:08 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Pan Tsu
>Release:        FreeBSD 9.0-CURRENT r223641M amd64
>Organization:
>Environment:
include GENERIC
option KDTRACE_HOOKS
option KDTRACE_FRAME
option DDB_CTF
makeoption WITH_CTF=1
>Description:
Tracing of an already running process doesn't seem to work, e.g.

  $ dtruss -p 1234
  $ dtrace -P pid1234

also without any probes

  $ dtrace -p 1234

or when no PID is specified explicitly

  $ dtrace -P 'syscall { @[probefunc,ustack()] = count(); }'
>How-To-Repeat:
# kldload dtraceall
# sleep 60 &
# gdb -q --args dtrace -p $!
(gdb) r
Starting program: /usr/sbin/dtrace -p 31535
[New LWP 100977]
[New Thread 80b807400 (LWP 100977/dtrace)]
[New Thread 80b80f800 (LWP 100513/dtrace)]
dtrace: no probes specified
Assertion failed: (dpr != NULL), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c, line 751.

Program received signal SIGABRT, Aborted.
[Switching to Thread 80b807400 (LWP 100977/dtrace)]
0x00000008101429dc in thr_kill () at thr_kill.S:3
3       thr_kill.S: No such file or directory.
        in thr_kill.S
Current language:  auto; currently asm
(gdb) bt
#0  0x00000008101429dc in thr_kill () at thr_kill.S:3
#1  0x00000008101e3fd3 in abort () at /usr/src/lib/libc/stdlib/abort.c:65
#2  0x0000000808d8a031 in __assert (expr=Could not find the frame base for "__assert".
) at assert.h:56
#3  0x0000000808d8af2d in dt_proc_lookup (dtp=0x80b841000, P=0x80d7ffb40, remove=0)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:751
#4  0x0000000808d8af92 in dt_proc_destroy (dtp=0x80b841000, P=0x80d7ffb40)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:763
#5  0x0000000808d8bc6e in dt_proc_hash_destroy (dtp=0x80b841000)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:1162
#6  0x0000000808daa4b5 in dtrace_close (dtp=0x80b841000)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c:1554
#7  0x0000000000402775 in dfatal (fmt=0x408572 "no probes %s\n")
    at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:236
#8  0x0000000000406b2c in main (argc=3, argv=0x7ffffffed9c0)
    at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:1825
(gdb) bt f
#0  0x00000008101429dc in thr_kill () at thr_kill.S:3
No locals.
#1  0x00000008101e3fd3 in abort () at /usr/src/lib/libc/stdlib/abort.c:65
        act = {
  __sigaction_u = {
    __sa_handler = 0,
    __sa_sigaction = 0
  },
  sa_flags = 0,
  sa_mask = {
    __bits = {4294967263, 4294967295, 4294967295, 4294967295}
  }
}
#2  0x0000000808d8a031 in __assert (expr=Could not find the frame base for "__assert".
) at assert.h:56
No locals.
#3  0x0000000808d8af2d in dt_proc_lookup (dtp=0x80b841000, P=0x80d7ffb40, remove=0)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:751
        dph = (dt_proc_hash_t *) 0x80b894300
        pid = 0
        dpr = (dt_proc_t *) 0x0
        dpp = (dt_proc_t **) 0x80b894338
#4  0x0000000808d8af92 in dt_proc_destroy (dtp=0x80b841000, P=0x80d7ffb40)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:763
        dpr = (dt_proc_t *) 0x80b841000
        dph = (dt_proc_hash_t *) 0xfefefefefefefeff
        npr = (dt_proc_notify_t *) 0x7ffffffed028
        npp = (dt_proc_notify_t **) 0x0
        rflag = -2139062144
#5  0x0000000808d8bc6e in dt_proc_hash_destroy (dtp=0x80b841000)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:1162
        dph = (dt_proc_hash_t *) 0x80b894300
        dpr = (dt_proc_t *) 0x80bbea800
#6  0x0000000808daa4b5 in dtrace_close (dtp=0x80b841000)
    at /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c:1554
        idp = (dt_ident_t *) 0x7ffffffed9c0
        ndp = (dt_ident_t *) 0x206
        dmp = (dt_module_t *) 0xa
        pvp = (dt_provider_t *) 0xff0100001f000001
        pgp = (dtrace_prog_t *) 0x6
        dxp = (dt_xlator_t *) 0x8080808080808080
        dirp = (dt_dirpath_t *) 0x80b841000
        i = 8
#7  0x0000000000402775 in dfatal (fmt=0x408572 "no probes %s\n")
    at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:236
        ap = {{
    gp_offset = 16,
    fp_offset = 48,
    overflow_arg_area = 0x7ffffffed750,
    reg_save_area = 0x7ffffffed680
  }}
#8  0x0000000000406b2c in main (argc=3, argv=0x7ffffffed9c0)
    at /usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:1825
        buf = {
  dtbd_size = 0,
  dtbd_cpu = 0,
  dtbd_errors = 0,
  dtbd_drops = 0,
  dtbd_data = 0x0,
  dtbd_oldest = 0
}
        act = {
  __sigaction_u = {
    __sa_handler = 0x7ffffffed900,
    __sa_sigaction = 0x7ffffffed900
  },
  sa_flags = -75296,
  sa_mask = {
    __bits = {32767, 4294891968, 32767, 0}
  }
}
        oact = {
  __sigaction_u = {
    __sa_handler = 0x1,
    __sa_sigaction = 0x1
  },
  sa_flags = 6363853,
  sa_mask = {
    __bits = {8, 4294891632, 32767, 4294891608}
  }
}
        status = {{
    dtst_dyndrops = 0,
    dtst_dyndrops_rinsing = 0,
    dtst_dyndrops_dirty = 0,
    dtst_specdrops = 0,
    dtst_specdrops_busy = 0,
    dtst_specdrops_unavail = 0,
    dtst_errors = 0,
    dtst_filled = 0,
    dtst_stkstroverflows = 0,
    dtst_dblerrors = 0,
    dtst_killed = 0 '\0',
    dtst_exiting = 0 '\0',
    dtst_pad = "\000\000\000\000\000"
  }, {
    dtst_dyndrops = 0,
    dtst_dyndrops_rinsing = 0,
    dtst_dyndrops_dirty = 0,
    dtst_specdrops = 0,
    dtst_specdrops_busy = 0,
    dtst_specdrops_unavail = 0,
    dtst_errors = 0,
    dtst_filled = 0,
    dtst_stkstroverflows = 0,
    dtst_dblerrors = 0,
    dtst_killed = 0 '\0',
    dtst_exiting = 0 '\0',
    dtst_pad = "\000\000\000\000\000"
  }}
        opt = -2
        dcp = (dtrace_cmd_t *) 0x3
        done = 0
        mode = 0
        err = 32767
        i = 0
        c = -1
        p = 0x7ffffffedd81 ""
        v = (char **) 0x0
        P = (struct proc_handle *) 0x80d7ffb40
        pid = 31535
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86r56cu29j.fsf>