From owner-freebsd-current@freebsd.org Sun Sep 13 13:23:38 2015 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 79CB6A03508 for ; Sun, 13 Sep 2015 13:23:38 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from forward13.mail.yandex.net (forward13.mail.yandex.net [IPv6:2a02:6b8:0:801::3]) by mx1.freebsd.org (Postfix) with ESMTP id 38BFF163D for ; Sun, 13 Sep 2015 13:23:38 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from web6j.yandex.ru (web6j.yandex.ru [IPv6:2a02:6b8:0:1619::306]) by forward13.mail.yandex.net (Yandex) with ESMTP id 751C0140080 for ; Sun, 13 Sep 2015 16:23:24 +0300 (MSK) Received: from 127.0.0.1 (localhost [127.0.0.1]) by web6j.yandex.ru (Yandex) with ESMTP id D967137006E6; Sun, 13 Sep 2015 16:23:23 +0300 (MSK) Received: by web6j.yandex.ru with HTTP; Sun, 13 Sep 2015 16:23:23 +0300 From: Alexander V. Chernikov Envelope-From: melifaro@ipfw.ru To: FreeBSD CURRENT Subject: kernel dtrace and current MIME-Version: 1.0 Message-Id: <738721442150603@web6j.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Sun, 13 Sep 2015 16:23:23 +0300 Content-Transfer-Encoding: 7bit Content-Type: text/plain X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Sep 2015 13:23:38 -0000 Hello all, I keep running in "dtrace: failed to compile script: "/usr/lib/dtrace/psinfo.d", line 39: failed to copy type of 'pr_uid': Type information is in parent and unavailable" message more and more often while trying to trace different -current kernels. Typically the reason besides that is the number of types embedded in kernel CTF: ctfdump -S /boot/kernel/kernel | awk '$0~/of types/{print$6}' 37160 We are bound to 32k of types by CTF format (and numbers above 32k (e.g.w/ highest bit set) are considered "child" types with the information stored in "parent"). ctfmerge ignores this fact and instead of yelling emits type indices above 32k. On the other hand, libctf sees such indices while parsing sections and since there is no "parent" for kernel, it emits the error above and stops. Thankfully, r287234 really improved the situation for ctfmerge, but there are still several thousands of identical structures and the total number is close to 32k. Personally I solved this by removing unneeded devices from GENERIC-inherited configs. I wonder, however if this can be handled better. E.g. either show better error in dtrace(1) or make ctfmerge fail causing kernel build to stop (since we asked for dtrace but in reality it wouldn't work), or remove some stale devices from GENERIC, or .something totally different?