Date: Mon, 11 Apr 2016 19:05:01 +0900 From: Jihyun Yu <yjh0502@gmail.com> To: freebsd-dtrace@freebsd.org Subject: [patch] Fix crash on userland fbt tracing Message-ID: <CALog5aJea4ZV8jJLNQPcDu1QFBTT65va-1MO7vidgyWFsnj92Q@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
How to reproduce crash (tested on 10.3) - Run `top` on a shell - List dtrace probes with following command: dtrace -p `pgrep top` -ln 'pid$target::clear:entry {} pid$target::clear:return {}' - Try to attach probes without specifing pid provider # dtrace -p `pgrep top` -n '::clear:entry {} ::clear:return {}' Assertion failed: (err == 0), file /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c, line 1131. The crash is caused by a deadlock, and here's a fix. --- dt_module.c 2016-04-11 18:53:05.812651961 +0900 +++ dt_module.fix.c 2016-04-11 18:52:01.068701543 +0900 @@ -693,6 +693,7 @@ arg.dpa_count = 0; if (Pobject_iter_resolved(p, dt_module_load_proc_count, &arg) != 0) { dt_dprintf("failed to iterate objects\n"); + dt_proc_unlock(dtp, p); dt_proc_release(dtp, p); return (dt_set_errno(dtp, EDT_CANTLOAD)); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALog5aJea4ZV8jJLNQPcDu1QFBTT65va-1MO7vidgyWFsnj92Q>