From nobody@FreeBSD.org  Sun Feb 16 17:29:09 2014
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115])
	(using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by hub.freebsd.org (Postfix) with ESMTPS id 388327F5
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 16 Feb 2014 17:29:09 +0000 (UTC)
Received: from newred.freebsd.org (cgiserv.freebsd.org [IPv6:2001:1900:2254:206a::50:4])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by mx1.freebsd.org (Postfix) with ESMTPS id 0AB7D1E40
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 16 Feb 2014 17:29:09 +0000 (UTC)
Received: from cgiserv.freebsd.org ([127.0.1.6])
	by newred.freebsd.org (8.14.7/8.14.7) with ESMTP id s1GHT8C2075364
	for <freebsd-gnats-submit@FreeBSD.org>; Sun, 16 Feb 2014 17:29:08 GMT
	(envelope-from nobody@cgiserv.freebsd.org)
Received: (from nobody@localhost)
	by cgiserv.freebsd.org (8.14.7/8.14.7/Submit) id s1GHT84q075356;
	Sun, 16 Feb 2014 17:29:08 GMT
	(envelope-from nobody)
Message-Id: <201402161729.s1GHT84q075356@cgiserv.freebsd.org>
Date: Sun, 16 Feb 2014 17:29:08 GMT
From: Fedor Indutny <fedor@indutny.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: dtrace_dof_init() crashes when there is no probes section
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         186821
>Category:       kern
>Synopsis:       [dtrace] [patch] dtrace_dof_init() crashes when there is no probes section
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    markj
>State:          patched
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Feb 16 17:30:00 UTC 2014
>Closed-Date:    
>Last-Modified:  Sun Mar  2 11:40:09 UTC 2014
>Originator:     Fedor Indutny
>Release:        11.0-CURRENT
>Organization:
Voxer Inc.
>Environment:
FreeBSD freebsd-64 11.0-CURRENT FreeBSD 11.0-CURRENT #22 b38a080(master)-dirty: Mon Feb 17 01:04:21 MSK 2014     root@freebsd-64:/usr/obj/usr/home/indutny/freebsd/sys/GENERIC  amd64
>Description:
FreeBSD contains hack to resolve string symbols after loading DOF from elf sections. It assumes that probes section is always available, but this doesn't always hold.
>How-To-Repeat:
1. git clone git://github.com/joyent/node.git
2. ./configure
3. edit `config.gypi` changing `node_use_dtrace` to `true` and `uv_use_dtrace` to `true` too.
4. gmake -j24
5. sudo DTRACE_DOF_INIT_DEBUG=1 ./node
6. Watch it crash

>Fix:
Check if the probes section was found and skip fixing symbols if it wasn't.

Patch attached with submission follows:

commit 6140bd93bec286d5ec6648affb43e4fd4766c6eb
Author: Fedor Indutny <fedor.indutny@gmail.com>
Date:   Mon Feb 17 01:16:13 2014 +0400

    dtrace: fix SEGFAULT in drti.c
    
    Do not attempt to fix any symbols when DFO has no probes section.

diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c b/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
index 3b4a38c..e0b65f1 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
@@ -20,6 +20,7 @@
  */
 /*
  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2013 Voxer Inc. All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -299,6 +300,8 @@ dtrace_dof_init(void)
 			break;
 	
 	}
+	if (i == dof->dofh_secnum)
+		goto no_probes;
 	nprobes = sec->dofs_size / sec->dofs_entsize;
 	fixsymbol(e, symtabdata, symtabidx, nprobes, buf, sec, &fixedprobes,
 	    dofstrtab);
@@ -319,6 +322,7 @@ dtrace_dof_init(void)
 		fprintf(stderr, "WARNING: some probes might "
 		    "not fire or your program might crash\n");
 	}
+no_probes:
 #endif
 	if ((gen = ioctl(fd, DTRACEHIOC_ADDDOF, &dh)) == -1)
 		dprintf(1, "DTrace ioctl failed for DOF at %p", dof);


>Release-Note:
>Audit-Trail:

From: Fedor Indutny <fedor@indutny.com>
To: bug-followup@freebsd.org, fedor@indutny.com
Cc:  
Subject: Re: misc/186821: dtrace_dof_init() crashes when there is no probes section
Date: Thu, 20 Feb 2014 16:10:27 +0400

 --089e0153673e53437b04f2d565b7
 Content-Type: text/plain; charset=ISO-8859-1
 
 Sorry, initial version of patch was very superficial. And it was only
 covering the actual problem, submitting proper patch as an attachment
 here.
 
 --089e0153673e53437b04f2d565b7
 Content-Type: application/octet-stream; name="proper-drti.patch"
 Content-Disposition: attachment; filename="proper-drti.patch"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_hrvzmzvo0
 
 Y29tbWl0IGM0Njc4NmY0NzQ4M2U3ZmMyMTg3MjdhYTUyY2Y2YjIyNzhhNDUwNTMKQXV0aG9yOiBG
 ZWRvciBJbmR1dG55IDxmZWRvci5pbmR1dG55QGdtYWlsLmNvbT4KRGF0ZTogICBNb24gRmViIDE3
 IDAxOjE2OjEzIDIwMTQgKzA0MDAKCiAgICBkdHJhY2U6IHByb3BlciBzeW1ib2wgZml4dXAgYW5k
 IGltcG9ydCBpbiBkcnRpCiAgICAKICAgIEFwcGxpY2F0aW9uIG1heSBjb250YWluIG11bHRpcGxl
 IERPRnMsIG1lcmdlZCBpbnRvIG9uZSAuX1NVTldfZG9mIEVMRgogICAgc2VjdGlvbi4gUHJvY2Vz
 cyBhbGwgb2YgdGhlbSBhbmQgZml4IHN5bWJvbHMgb25seSBpbiB0aG9zZSBvbmVzIHRoYXQKICAg
 IGFjdGF1bGx5IGRlZmluZSBhIHByb3ZpZGVyLiBVc2UgcHJvcGVyIHN0cnRhYiBmb3IgcmVzb2x2
 aW5nIHN5bWJvbHMuCgpkaWZmIC0tZ2l0IGEvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL2xpYi9s
 aWJkdHJhY2UvY29tbW9uL2RydGkuYyBiL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy9saWIvbGli
 ZHRyYWNlL2NvbW1vbi9kcnRpLmMKaW5kZXggM2I0YTM4Yy4uZTQ3Y2ZiNGQgMTAwNjQ0Ci0tLSBh
 L2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy9saWIvbGliZHRyYWNlL2NvbW1vbi9kcnRpLmMKKysr
 IGIvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL2xpYi9saWJkdHJhY2UvY29tbW9uL2RydGkuYwpA
 QCAtMjAsNiArMjAsNyBAQAogICovCiAvKgogICogQ29weXJpZ2h0IDIwMDggU3VuIE1pY3Jvc3lz
 dGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAyMDEzIFZveGVy
 IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2Ug
 dGVybXMuCiAgKi8KIApAQCAtMTQ0LDcgKzE0NSw4IEBAIGR0cmFjZV9kb2ZfaW5pdCh2b2lkKQog
 CUxtaWRfdCBsbWlkOwogI2Vsc2UKIAl1X2xvbmcgbG1pZCA9IDA7Ci0JZG9mX3NlY190ICpzZWM7
 CisJZG9mX3NlY190ICpzZWMsICpzZWNzdGFydCwgKmRvZnN0cnRhYiwgKmRvZnByb2JlczsKKwlk
 b2ZfcHJvdmlkZXJfdCAqZG9mcHJvdmlkZXI7CiAJc2l6ZV90IGk7CiAjZW5kaWYKIAlpbnQgZmQ7
 CkBAIC0xNTIsMTIgKzE1NCwxMyBAQCBkdHJhY2VfZG9mX2luaXQodm9pZCkKICNpZiAhZGVmaW5l
 ZChzdW4pCiAJRWxmICplOwogCUVsZl9TY24gKnNjbiA9IE5VTEw7Ci0JRWxmX0RhdGEgKnN5bXRh
 YmRhdGEgPSBOVUxMLCAqZHluc3ltZGF0YSA9IE5VTEw7CisJRWxmX0RhdGEgKnN5bXRhYmRhdGEg
 PSBOVUxMLCAqZHluc3ltZGF0YSA9IE5VTEwsICpkb2ZkYXRhID0gTlVMTDsKKwlkb2ZfaGRyX3Qg
 KmRvZl9uZXh0ID0gTlVMTDsKIAlHRWxmX1NoZHIgc2hkcjsKIAlpbnQgZWZkLCBucHJvYmVzOwog
 CWNoYXIgKnM7CisJY2hhciAqZG9mc3RydGFicmF3OwogCXNpemVfdCBzaHN0cmlkeCwgc3ltdGFi
 aWR4ID0gMCwgZHluc3ltaWR4ID0gMDsKLQl1bnNpZ25lZCBjaGFyICpkb2ZzdHJ0YWIgPSBOVUxM
 OwogCXVuc2lnbmVkIGNoYXIgKmJ1ZjsKIAlpbnQgZml4ZWRwcm9iZXMgPSAwOwogI2VuZGlmCkBA
 IC0yMDksNyArMjEyLDkgQEAgZHRyYWNlX2RvZl9pbml0KHZvaWQpCiAJCX0gZWxzZSBpZiAoc2hk
 ci5zaF90eXBlID09IFNIVF9QUk9HQklUUykgewogCQkJcyA9IGVsZl9zdHJwdHIoZSwgc2hzdHJp
 ZHgsIHNoZHIuc2hfbmFtZSk7CiAJCQlpZiAgKHMgJiYgc3RyY21wKHMsICIuU1VOV19kb2YiKSA9
 PSAwKSB7Ci0JCQkJZG9mID0gZWxmX2dldGRhdGEoc2NuLCBOVUxMKS0+ZF9idWY7CisJCQkJZG9m
 ZGF0YSA9IGVsZl9nZXRkYXRhKHNjbiwgTlVMTCk7CisJCQkJZG9mID0gZG9mZGF0YS0+ZF9idWY7
 CisJCQkJYnJlYWs7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTksNiArMjI0LDkgQEAgZHRyYWNlX2Rv
 Zl9pbml0KHZvaWQpCiAJCWNsb3NlKGVmZCk7CiAJCXJldHVybjsKIAl9CisKKwl3aGlsZSAoKGNo
 YXIgKikgZG9mIDwgKGNoYXIgKikgZG9mZGF0YS0+ZF9idWYgKyBkb2ZkYXRhLT5kX3NpemUpIHsK
 KwkJZG9mX25leHQgPSAodm9pZCAqKSAoKGNoYXIgKikgZG9mICsgZG9mLT5kb2ZoX2ZpbGVzeik7
 CiAjZW5kaWYKIAogCWlmIChkb2YtPmRvZmhfaWRlbnRbRE9GX0lEX01BRzBdICE9IERPRl9NQUdf
 TUFHMCB8fApAQCAtMjkwLDM0ICsyOTgsNDkgQEAgZHRyYWNlX2RvZl9pbml0KHZvaWQpCiAJICog
 V2UgYXJlIGFzc3VtaW5nIHRoZSBudW1iZXIgb2YgcHJvYmVzIGlzIGxlc3MgdGhhbiB0aGUgbnVt
 YmVyIG9mCiAJICogc3ltYm9scyAobGliYyBjYW4gaGF2ZSA0ayBzeW1ib2xzLCBmb3IgZXhhbXBs
 ZSkuCiAJICovCi0Jc2VjID0gKGRvZl9zZWNfdCAqKShkb2YgKyAxKTsKKwlzZWNzdGFydCA9IHNl
 YyA9IChkb2Zfc2VjX3QgKikoZG9mICsgMSk7CiAJYnVmID0gKGNoYXIgKilkb2Y7CiAJZm9yIChp
 ID0gMDsgaSA8IGRvZi0+ZG9maF9zZWNudW07IGkrKywgc2VjKyspIHsKLQkJaWYgKHNlYy0+ZG9m
 c190eXBlID09IERPRl9TRUNUX1NUUlRBQikKLQkJCWRvZnN0cnRhYiA9ICh1bnNpZ25lZCBjaGFy
 ICopKGJ1ZiArIHNlYy0+ZG9mc19vZmZzZXQpOwotCQllbHNlIGlmIChzZWMtPmRvZnNfdHlwZSA9
 PSBET0ZfU0VDVF9QUk9CRVMgJiYgZG9mc3RydGFiKQorCQlpZiAoc2VjLT5kb2ZzX3R5cGUgIT0g
 RE9GX1NFQ1RfUFJPVklERVIpCisJCQljb250aW51ZTsKKworCQlkb2Zwcm92aWRlciA9ICh2b2lk
 ICopIChidWYgKyBzZWMtPmRvZnNfb2Zmc2V0KTsKKwkJZG9mc3RydGFiID0gc2Vjc3RhcnQgKyBk
 b2Zwcm92aWRlci0+ZG9mcHZfc3RydGFiOworCQlkb2Zwcm9iZXMgPSBzZWNzdGFydCArIGRvZnBy
 b3ZpZGVyLT5kb2Zwdl9wcm9iZXM7CisKKwkJaWYgKGRvZnN0cnRhYi0+ZG9mc190eXBlICE9IERP
 Rl9TRUNUX1NUUlRBQikgeworCQkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBleHBlY3RlZCBT
 VFJUQUIgc2VjdGlvbiwgYnV0IGdvdCAlZFxuIiwKKwkJCQkJZG9mc3RydGFiLT5kb2ZzX3R5cGUp
 OwogCQkJYnJlYWs7Ci0JCi0JfQotCW5wcm9iZXMgPSBzZWMtPmRvZnNfc2l6ZSAvIHNlYy0+ZG9m
 c19lbnRzaXplOwotCWZpeHN5bWJvbChlLCBzeW10YWJkYXRhLCBzeW10YWJpZHgsIG5wcm9iZXMs
 IGJ1Ziwgc2VjLCAmZml4ZWRwcm9iZXMsCi0JICAgIGRvZnN0cnRhYik7Ci0JaWYgKGZpeGVkcHJv
 YmVzICE9IG5wcm9iZXMpIHsKLQkJLyoKLQkJICogSWYgd2UgaGF2ZW4ndCBmaXhlZCBhbGwgdGhl
 IHByb2JlcyB1c2luZyB0aGUKLQkJICogc3ltdGFiIHNlY3Rpb24sIGxvb2sgaW5zaWRlIHRoZSBk
 eW5zeW0KLQkJICogc2VjdGlvbi4KLQkJICovCi0JCWZpeHN5bWJvbChlLCBkeW5zeW1kYXRhLCBk
 eW5zeW1pZHgsIG5wcm9iZXMsIGJ1Ziwgc2VjLAotCQkgICAgJmZpeGVkcHJvYmVzLCBkb2ZzdHJ0
 YWIpOwotCX0KLQlpZiAoZml4ZWRwcm9iZXMgIT0gbnByb2JlcykgewotCQlmcHJpbnRmKHN0ZGVy
 ciwgIldBUk5JTkc6IG51bWJlciBvZiBwcm9iZXMgIgotCQkgICAgImZpeGVkIGRvZXMgbm90IG1h
 dGNoIHRoZSBudW1iZXIgb2YgIgotCQkgICAgImRlZmluZWQgcHJvYmVzICglZCAhPSAlZCwgIgot
 CQkgICAgInJlc3BlY3RpdmVseSlcbiIsIGZpeGVkcHJvYmVzLCBucHJvYmVzKTsKLQkJZnByaW50
 ZihzdGRlcnIsICJXQVJOSU5HOiBzb21lIHByb2JlcyBtaWdodCAiCi0JCSAgICAibm90IGZpcmUg
 b3IgeW91ciBwcm9ncmFtIG1pZ2h0IGNyYXNoXG4iKTsKKwkJfQorCQlpZiAoZG9mcHJvYmVzLT5k
 b2ZzX3R5cGUgIT0gRE9GX1NFQ1RfUFJPQkVTKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIldBUk5J
 Tkc6IGV4cGVjdGVkIFBST0JFUyBzZWN0aW9uLCBidXQgZ290ICVkXG4iLAorCQkJICAgIGRvZnBy
 b2Jlcy0+ZG9mc190eXBlKTsKKwkJCWJyZWFrOworCQl9CisKKwkJZHByaW50ZigxLCAiZm91bmQg
 cHJvdmlkZXIgJXBcbiIsIGRvZnByb3ZpZGVyKTsKKwkJZG9mc3RydGFicmF3ID0gKGNoYXIgKiko
 YnVmICsgZG9mc3RydGFiLT5kb2ZzX29mZnNldCk7CisJCW5wcm9iZXMgPSBkb2Zwcm9iZXMtPmRv
 ZnNfc2l6ZSAvIGRvZnByb2Jlcy0+ZG9mc19lbnRzaXplOworCQlmaXhzeW1ib2woZSwgc3ltdGFi
 ZGF0YSwgc3ltdGFiaWR4LCBucHJvYmVzLCBidWYsIGRvZnByb2JlcywgJmZpeGVkcHJvYmVzLAor
 CQkJCWRvZnN0cnRhYnJhdyk7CisJCWlmIChmaXhlZHByb2JlcyAhPSBucHJvYmVzKSB7CisJCQkv
 KgorCQkJICogSWYgd2UgaGF2ZW4ndCBmaXhlZCBhbGwgdGhlIHByb2JlcyB1c2luZyB0aGUKKwkJ
 CSAqIHN5bXRhYiBzZWN0aW9uLCBsb29rIGluc2lkZSB0aGUgZHluc3ltCisJCQkgKiBzZWN0aW9u
 LgorCQkJICovCisJCQlmaXhzeW1ib2woZSwgZHluc3ltZGF0YSwgZHluc3ltaWR4LCBucHJvYmVz
 LCBidWYsIGRvZnByb2JlcywKKwkJCQkJJmZpeGVkcHJvYmVzLCBkb2ZzdHJ0YWJyYXcpOworCQl9
 CisJCWlmIChmaXhlZHByb2JlcyAhPSBucHJvYmVzKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIldB
 Uk5JTkc6IG51bWJlciBvZiBwcm9iZXMgIgorCQkJICAgICJmaXhlZCBkb2VzIG5vdCBtYXRjaCB0
 aGUgbnVtYmVyIG9mICIKKwkJCSAgICAiZGVmaW5lZCBwcm9iZXMgKCVkICE9ICVkLCAiCisJCQkg
 ICAgInJlc3BlY3RpdmVseSlcbiIsIGZpeGVkcHJvYmVzLCBucHJvYmVzKTsKKwkJCWZwcmludGYo
 c3RkZXJyLCAiV0FSTklORzogc29tZSBwcm9iZXMgbWlnaHQgIgorCQkJICAgICJub3QgZmlyZSBv
 ciB5b3VyIHByb2dyYW0gbWlnaHQgY3Jhc2hcbiIpOworCQl9CiAJfQogI2VuZGlmCiAJaWYgKChn
 ZW4gPSBpb2N0bChmZCwgRFRSQUNFSElPQ19BRERET0YsICZkaCkpID09IC0xKQpAQCAtMzMwLDcg
 KzM1MywxMiBAQCBkdHJhY2VfZG9mX2luaXQodm9pZCkKIAl9CiAKIAkodm9pZCkgY2xvc2UoZmQp
 OworCiAjaWYgIWRlZmluZWQoc3VuKQorCQkvKiBFbmQgb2Ygd2hpbGUgbG9vcCAqLworCQlkb2Yg
 PSBkb2ZfbmV4dDsKKwl9CisKIAllbGZfZW5kKGUpOwogCSh2b2lkKSBjbG9zZShlZmQpOwogI2Vu
 ZGlmCg==
 --089e0153673e53437b04f2d565b7--
Responsible-Changed-From-To: freebsd-bugs->markj 
Responsible-Changed-By: markj 
Responsible-Changed-When: Wed Feb 26 03:31:26 UTC 2014 
Responsible-Changed-Why:  
Assign to me. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=186821 

From: Fedor Indutny <fedor@indutny.com>
To: bug-followup@freebsd.org, fedor@indutny.com
Cc:  
Subject: Re: kern/186821: [dtrace] [patch] dtrace_dof_init() crashes when
 there is no probes section
Date: Thu, 27 Feb 2014 18:47:07 +0400

 --001a1132f03c6b937a04f3646604
 Content-Type: text/plain; charset=ISO-8859-1
 
 Attaching here patch, improved with the help of Mark Johnston.
 
 --001a1132f03c6b937a04f3646604
 Content-Type: application/octet-stream; name="proper-drti.patch"
 Content-Disposition: attachment; filename="proper-drti.patch"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_hs65bgf90
 
 Y29tbWl0IGQxOTUzYTIyZWE3Zjk5MThkZGJmNDA5NDg5MWQzMzgyODk2MzQyOTcKQXV0aG9yOiBG
 ZWRvciBJbmR1dG55IDxmZWRvci5pbmR1dG55QGdtYWlsLmNvbT4KRGF0ZTogICBNb24gRmViIDE3
 IDAxOjE2OjEzIDIwMTQgKzA0MDAKCiAgICBkdHJhY2U6IHByb3BlciBzeW1ib2wgZml4dXAgYW5k
 IGltcG9ydCBpbiBkcnRpCiAgICAKICAgIEFwcGxpY2F0aW9uIG1heSBjb250YWluIG11bHRpcGxl
 IERPRnMsIG1lcmdlZCBpbnRvIG9uZSAuX1NVTldfZG9mIEVMRgogICAgc2VjdGlvbi4gUHJvY2Vz
 cyBhbGwgb2YgdGhlbSBhbmQgZml4IHN5bWJvbHMgb25seSBpbiB0aG9zZSBvbmVzIHRoYXQKICAg
 IGFjdGF1bGx5IGRlZmluZSBhIHByb3ZpZGVyLiBVc2UgcHJvcGVyIHN0cnRhYiBmb3IgcmVzb2x2
 aW5nIHN5bWJvbHMuCgpkaWZmIC0tZ2l0IGEvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL2xpYi9s
 aWJkdHJhY2UvY29tbW9uL2RydGkuYyBiL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy9saWIvbGli
 ZHRyYWNlL2NvbW1vbi9kcnRpLmMKaW5kZXggM2I0YTM4Yy4uMDJhZTYyNCAxMDA2NDQKLS0tIGEv
 Y2RkbC9jb250cmliL29wZW5zb2xhcmlzL2xpYi9saWJkdHJhY2UvY29tbW9uL2RydGkuYworKysg
 Yi9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvbGliL2xpYmR0cmFjZS9jb21tb24vZHJ0aS5jCkBA
 IC0yMCw2ICsyMCw3IEBACiAgKi8KIC8qCiAgKiBDb3B5cmlnaHQgMjAwOCBTdW4gTWljcm9zeXN0
 ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IDIwMTMgVm94ZXIg
 SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0
 ZXJtcy4KICAqLwogCkBAIC0xNDQsNyArMTQ1LDggQEAgZHRyYWNlX2RvZl9pbml0KHZvaWQpCiAJ
 TG1pZF90IGxtaWQ7CiAjZWxzZQogCXVfbG9uZyBsbWlkID0gMDsKLQlkb2Zfc2VjX3QgKnNlYzsK
 Kwlkb2Zfc2VjX3QgKnNlYywgKnNlY3N0YXJ0LCAqZG9mc3RydGFiLCAqZG9mcHJvYmVzOworCWRv
 Zl9wcm92aWRlcl90ICpkb2Zwcm92aWRlcjsKIAlzaXplX3QgaTsKICNlbmRpZgogCWludCBmZDsK
 QEAgLTE1MiwxNCArMTU0LDE1IEBAIGR0cmFjZV9kb2ZfaW5pdCh2b2lkKQogI2lmICFkZWZpbmVk
 KHN1bikKIAlFbGYgKmU7CiAJRWxmX1NjbiAqc2NuID0gTlVMTDsKLQlFbGZfRGF0YSAqc3ltdGFi
 ZGF0YSA9IE5VTEwsICpkeW5zeW1kYXRhID0gTlVMTDsKKwlFbGZfRGF0YSAqc3ltdGFiZGF0YSA9
 IE5VTEwsICpkeW5zeW1kYXRhID0gTlVMTCwgKmRvZmRhdGEgPSBOVUxMOworCWRvZl9oZHJfdCAq
 ZG9mX25leHQgPSBOVUxMOwogCUdFbGZfU2hkciBzaGRyOwogCWludCBlZmQsIG5wcm9iZXM7CiAJ
 Y2hhciAqczsKKwljaGFyICpkb2ZzdHJ0YWJyYXc7CiAJc2l6ZV90IHNoc3RyaWR4LCBzeW10YWJp
 ZHggPSAwLCBkeW5zeW1pZHggPSAwOwotCXVuc2lnbmVkIGNoYXIgKmRvZnN0cnRhYiA9IE5VTEw7
 CiAJdW5zaWduZWQgY2hhciAqYnVmOwotCWludCBmaXhlZHByb2JlcyA9IDA7CisJaW50IGZpeGVk
 cHJvYmVzOwogI2VuZGlmCiAKIAlpZiAoZ2V0ZW52KCJEVFJBQ0VfRE9GX0lOSVRfRElTQUJMRSIp
 ICE9IE5VTEwpCkBAIC0yMDksNyArMjEyLDggQEAgZHRyYWNlX2RvZl9pbml0KHZvaWQpCiAJCX0g
 ZWxzZSBpZiAoc2hkci5zaF90eXBlID09IFNIVF9QUk9HQklUUykgewogCQkJcyA9IGVsZl9zdHJw
 dHIoZSwgc2hzdHJpZHgsIHNoZHIuc2hfbmFtZSk7CiAJCQlpZiAgKHMgJiYgc3RyY21wKHMsICIu
 U1VOV19kb2YiKSA9PSAwKSB7Ci0JCQkJZG9mID0gZWxmX2dldGRhdGEoc2NuLCBOVUxMKS0+ZF9i
 dWY7CisJCQkJZG9mZGF0YSA9IGVsZl9nZXRkYXRhKHNjbiwgTlVMTCk7CisJCQkJZG9mID0gZG9m
 ZGF0YS0+ZF9idWY7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTksNiArMjIzLDkgQEAgZHRyYWNlX2Rv
 Zl9pbml0KHZvaWQpCiAJCWNsb3NlKGVmZCk7CiAJCXJldHVybjsKIAl9CisKKwl3aGlsZSAoKGNo
 YXIgKikgZG9mIDwgKGNoYXIgKikgZG9mZGF0YS0+ZF9idWYgKyBkb2ZkYXRhLT5kX3NpemUpIHsK
 KwkJZG9mX25leHQgPSAodm9pZCAqKSAoKGNoYXIgKikgZG9mICsgZG9mLT5kb2ZoX2ZpbGVzeik7
 CiAjZW5kaWYKIAogCWlmIChkb2YtPmRvZmhfaWRlbnRbRE9GX0lEX01BRzBdICE9IERPRl9NQUdf
 TUFHMCB8fApAQCAtMjkwLDM0ICsyOTcsNTAgQEAgZHRyYWNlX2RvZl9pbml0KHZvaWQpCiAJICog
 V2UgYXJlIGFzc3VtaW5nIHRoZSBudW1iZXIgb2YgcHJvYmVzIGlzIGxlc3MgdGhhbiB0aGUgbnVt
 YmVyIG9mCiAJICogc3ltYm9scyAobGliYyBjYW4gaGF2ZSA0ayBzeW1ib2xzLCBmb3IgZXhhbXBs
 ZSkuCiAJICovCi0Jc2VjID0gKGRvZl9zZWNfdCAqKShkb2YgKyAxKTsKKwlzZWNzdGFydCA9IHNl
 YyA9IChkb2Zfc2VjX3QgKikoZG9mICsgMSk7CiAJYnVmID0gKGNoYXIgKilkb2Y7CiAJZm9yIChp
 ID0gMDsgaSA8IGRvZi0+ZG9maF9zZWNudW07IGkrKywgc2VjKyspIHsKLQkJaWYgKHNlYy0+ZG9m
 c190eXBlID09IERPRl9TRUNUX1NUUlRBQikKLQkJCWRvZnN0cnRhYiA9ICh1bnNpZ25lZCBjaGFy
 ICopKGJ1ZiArIHNlYy0+ZG9mc19vZmZzZXQpOwotCQllbHNlIGlmIChzZWMtPmRvZnNfdHlwZSA9
 PSBET0ZfU0VDVF9QUk9CRVMgJiYgZG9mc3RydGFiKQorCQlpZiAoc2VjLT5kb2ZzX3R5cGUgIT0g
 RE9GX1NFQ1RfUFJPVklERVIpCisJCQljb250aW51ZTsKKworCQlkb2Zwcm92aWRlciA9ICh2b2lk
 ICopIChidWYgKyBzZWMtPmRvZnNfb2Zmc2V0KTsKKwkJZG9mc3RydGFiID0gc2Vjc3RhcnQgKyBk
 b2Zwcm92aWRlci0+ZG9mcHZfc3RydGFiOworCQlkb2Zwcm9iZXMgPSBzZWNzdGFydCArIGRvZnBy
 b3ZpZGVyLT5kb2Zwdl9wcm9iZXM7CisKKwkJaWYgKGRvZnN0cnRhYi0+ZG9mc190eXBlICE9IERP
 Rl9TRUNUX1NUUlRBQikgeworCQkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBleHBlY3RlZCBT
 VFJUQUIgc2VjdGlvbiwgYnV0IGdvdCAlZFxuIiwKKwkJCQkJZG9mc3RydGFiLT5kb2ZzX3R5cGUp
 OwogCQkJYnJlYWs7Ci0JCi0JfQotCW5wcm9iZXMgPSBzZWMtPmRvZnNfc2l6ZSAvIHNlYy0+ZG9m
 c19lbnRzaXplOwotCWZpeHN5bWJvbChlLCBzeW10YWJkYXRhLCBzeW10YWJpZHgsIG5wcm9iZXMs
 IGJ1Ziwgc2VjLCAmZml4ZWRwcm9iZXMsCi0JICAgIGRvZnN0cnRhYik7Ci0JaWYgKGZpeGVkcHJv
 YmVzICE9IG5wcm9iZXMpIHsKLQkJLyoKLQkJICogSWYgd2UgaGF2ZW4ndCBmaXhlZCBhbGwgdGhl
 IHByb2JlcyB1c2luZyB0aGUKLQkJICogc3ltdGFiIHNlY3Rpb24sIGxvb2sgaW5zaWRlIHRoZSBk
 eW5zeW0KLQkJICogc2VjdGlvbi4KLQkJICovCi0JCWZpeHN5bWJvbChlLCBkeW5zeW1kYXRhLCBk
 eW5zeW1pZHgsIG5wcm9iZXMsIGJ1Ziwgc2VjLAotCQkgICAgJmZpeGVkcHJvYmVzLCBkb2ZzdHJ0
 YWIpOwotCX0KLQlpZiAoZml4ZWRwcm9iZXMgIT0gbnByb2JlcykgewotCQlmcHJpbnRmKHN0ZGVy
 ciwgIldBUk5JTkc6IG51bWJlciBvZiBwcm9iZXMgIgotCQkgICAgImZpeGVkIGRvZXMgbm90IG1h
 dGNoIHRoZSBudW1iZXIgb2YgIgotCQkgICAgImRlZmluZWQgcHJvYmVzICglZCAhPSAlZCwgIgot
 CQkgICAgInJlc3BlY3RpdmVseSlcbiIsIGZpeGVkcHJvYmVzLCBucHJvYmVzKTsKLQkJZnByaW50
 ZihzdGRlcnIsICJXQVJOSU5HOiBzb21lIHByb2JlcyBtaWdodCAiCi0JCSAgICAibm90IGZpcmUg
 b3IgeW91ciBwcm9ncmFtIG1pZ2h0IGNyYXNoXG4iKTsKKwkJfQorCQlpZiAoZG9mcHJvYmVzLT5k
 b2ZzX3R5cGUgIT0gRE9GX1NFQ1RfUFJPQkVTKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIldBUk5J
 Tkc6IGV4cGVjdGVkIFBST0JFUyBzZWN0aW9uLCBidXQgZ290ICVkXG4iLAorCQkJICAgIGRvZnBy
 b2Jlcy0+ZG9mc190eXBlKTsKKwkJCWJyZWFrOworCQl9CisKKwkJZHByaW50ZigxLCAiZm91bmQg
 cHJvdmlkZXIgJXBcbiIsIGRvZnByb3ZpZGVyKTsKKwkJZG9mc3RydGFicmF3ID0gKGNoYXIgKiko
 YnVmICsgZG9mc3RydGFiLT5kb2ZzX29mZnNldCk7CisJCW5wcm9iZXMgPSBkb2Zwcm9iZXMtPmRv
 ZnNfc2l6ZSAvIGRvZnByb2Jlcy0+ZG9mc19lbnRzaXplOworCQlmaXhlZHByb2JlcyA9IDA7CisJ
 CWZpeHN5bWJvbChlLCBzeW10YWJkYXRhLCBzeW10YWJpZHgsIG5wcm9iZXMsIGJ1ZiwgZG9mcHJv
 YmVzLCAmZml4ZWRwcm9iZXMsCisJCQkJZG9mc3RydGFicmF3KTsKKwkJaWYgKGZpeGVkcHJvYmVz
 ICE9IG5wcm9iZXMpIHsKKwkJCS8qCisJCQkgKiBJZiB3ZSBoYXZlbid0IGZpeGVkIGFsbCB0aGUg
 cHJvYmVzIHVzaW5nIHRoZQorCQkJICogc3ltdGFiIHNlY3Rpb24sIGxvb2sgaW5zaWRlIHRoZSBk
 eW5zeW0KKwkJCSAqIHNlY3Rpb24uCisJCQkgKi8KKwkJCWZpeHN5bWJvbChlLCBkeW5zeW1kYXRh
 LCBkeW5zeW1pZHgsIG5wcm9iZXMsIGJ1ZiwgZG9mcHJvYmVzLAorCQkJCQkmZml4ZWRwcm9iZXMs
 IGRvZnN0cnRhYnJhdyk7CisJCX0KKwkJaWYgKGZpeGVkcHJvYmVzICE9IG5wcm9iZXMpIHsKKwkJ
 CWZwcmludGYoc3RkZXJyLCAiV0FSTklORzogbnVtYmVyIG9mIHByb2JlcyAiCisJCQkgICAgImZp
 eGVkIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2YgIgorCQkJICAgICJkZWZpbmVkIHByb2Jl
 cyAoJWQgIT0gJWQsICIKKwkJCSAgICAicmVzcGVjdGl2ZWx5KVxuIiwgZml4ZWRwcm9iZXMsIG5w
 cm9iZXMpOworCQkJZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBzb21lIHByb2JlcyBtaWdodCAi
 CisJCQkgICAgIm5vdCBmaXJlIG9yIHlvdXIgcHJvZ3JhbSBtaWdodCBjcmFzaFxuIik7CisJCX0K
 IAl9CiAjZW5kaWYKIAlpZiAoKGdlbiA9IGlvY3RsKGZkLCBEVFJBQ0VISU9DX0FERERPRiwgJmRo
 KSkgPT0gLTEpCkBAIC0zMzAsNyArMzUzLDEyIEBAIGR0cmFjZV9kb2ZfaW5pdCh2b2lkKQogCX0K
 IAogCSh2b2lkKSBjbG9zZShmZCk7CisKICNpZiAhZGVmaW5lZChzdW4pCisJCS8qIEVuZCBvZiB3
 aGlsZSBsb29wICovCisJCWRvZiA9IGRvZl9uZXh0OworCX0KKwogCWVsZl9lbmQoZSk7CiAJKHZv
 aWQpIGNsb3NlKGVmZCk7CiAjZW5kaWYK
 --001a1132f03c6b937a04f3646604--
State-Changed-From-To: open->patched 
State-Changed-By: markj 
State-Changed-When: Sun Mar 2 01:28:14 UTC 2014 
State-Changed-Why:  
Patched in r262669. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=186821 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/186821: commit references a PR
Date: Sun,  2 Mar 2014 11:36:50 +0000 (UTC)

 Author: markj
 Date: Sat Mar  1 23:09:07 2014
 New Revision: 262669
 URL: http://svnweb.freebsd.org/changeset/base/262669
 
 Log:
   When our linker merges .SUNW_dof sections from multiple files, it simply
   concatenates the DOF tables into one section. Previously, the USDT init
   code in drti.o would only look at the first table in the DOF section; with
   this change, it iterates over all the tables, passing each DOF table to
   the kernel.
   
   PR:		186821
   Submitted by:	Fedor Indutny <fedor@indutny.com>
   MFC after:	1 month
 
 Modified:
   head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
 
 Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c
 ==============================================================================
 --- head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c	Sat Mar  1 21:50:23 2014	(r262668)
 +++ head/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c	Sat Mar  1 23:09:07 2014	(r262669)
 @@ -20,6 +20,7 @@
   */
  /*
   * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 + * Copyright 2013 Voxer Inc. All rights reserved.
   * Use is subject to license terms.
   */
  
 @@ -144,7 +145,8 @@ dtrace_dof_init(void)
  	Lmid_t lmid;
  #else
  	u_long lmid = 0;
 -	dof_sec_t *sec;
 +	dof_sec_t *sec, *secstart, *dofstrtab, *dofprobes;
 +	dof_provider_t *dofprovider;
  	size_t i;
  #endif
  	int fd;
 @@ -152,14 +154,15 @@ dtrace_dof_init(void)
  #if !defined(sun)
  	Elf *e;
  	Elf_Scn *scn = NULL;
 -	Elf_Data *symtabdata = NULL, *dynsymdata = NULL;
 +	Elf_Data *symtabdata = NULL, *dynsymdata = NULL, *dofdata = NULL;
 +	dof_hdr_t *dof_next = NULL;
  	GElf_Shdr shdr;
  	int efd, nprobes;
  	char *s;
 +	char *dofstrtabraw;
  	size_t shstridx, symtabidx = 0, dynsymidx = 0;
 -	unsigned char *dofstrtab = NULL;
  	unsigned char *buf;
 -	int fixedprobes = 0;
 +	int fixedprobes;
  #endif
  
  	if (getenv("DTRACE_DOF_INIT_DISABLE") != NULL)
 @@ -209,7 +212,8 @@ dtrace_dof_init(void)
  		} else if (shdr.sh_type == SHT_PROGBITS) {
  			s = elf_strptr(e, shstridx, shdr.sh_name);
  			if  (s && strcmp(s, ".SUNW_dof") == 0) {
 -				dof = elf_getdata(scn, NULL)->d_buf;
 +				dofdata = elf_getdata(scn, NULL);
 +				dof = dofdata->d_buf;
  			}
  		}
  	}
 @@ -219,6 +223,10 @@ dtrace_dof_init(void)
  		close(efd);
  		return;
  	}
 +
 +	while ((char *) dof < (char *) dofdata->d_buf + dofdata->d_size) {
 +		fixedprobes = 0;
 +		dof_next = (void *) ((char *) dof + dof->dofh_filesz);
  #endif
  
  	if (dof->dofh_ident[DOF_ID_MAG0] != DOF_MAG_MAG0 ||
 @@ -290,34 +298,49 @@ dtrace_dof_init(void)
  	 * We are assuming the number of probes is less than the number of
  	 * symbols (libc can have 4k symbols, for example).
  	 */
 -	sec = (dof_sec_t *)(dof + 1);
 +	secstart = sec = (dof_sec_t *)(dof + 1);
  	buf = (char *)dof;
  	for (i = 0; i < dof->dofh_secnum; i++, sec++) {
 -		if (sec->dofs_type == DOF_SECT_STRTAB)
 -			dofstrtab = (unsigned char *)(buf + sec->dofs_offset);
 -		else if (sec->dofs_type == DOF_SECT_PROBES && dofstrtab)
 +		if (sec->dofs_type != DOF_SECT_PROVIDER)
 +			continue;
 +
 +		dofprovider = (void *) (buf + sec->dofs_offset);
 +		dofstrtab = secstart + dofprovider->dofpv_strtab;
 +		dofprobes = secstart + dofprovider->dofpv_probes;
 +
 +		if (dofstrtab->dofs_type != DOF_SECT_STRTAB) {
 +			fprintf(stderr, "WARNING: expected STRTAB section, but got %d\n",
 +					dofstrtab->dofs_type);
  			break;
 -	
 -	}
 -	nprobes = sec->dofs_size / sec->dofs_entsize;
 -	fixsymbol(e, symtabdata, symtabidx, nprobes, buf, sec, &fixedprobes,
 -	    dofstrtab);
 -	if (fixedprobes != nprobes) {
 -		/*
 -		 * If we haven't fixed all the probes using the
 -		 * symtab section, look inside the dynsym
 -		 * section.
 -		 */
 -		fixsymbol(e, dynsymdata, dynsymidx, nprobes, buf, sec,
 -		    &fixedprobes, dofstrtab);
 -	}
 -	if (fixedprobes != nprobes) {
 -		fprintf(stderr, "WARNING: number of probes "
 -		    "fixed does not match the number of "
 -		    "defined probes (%d != %d, "
 -		    "respectively)\n", fixedprobes, nprobes);
 -		fprintf(stderr, "WARNING: some probes might "
 -		    "not fire or your program might crash\n");
 +		}
 +		if (dofprobes->dofs_type != DOF_SECT_PROBES) {
 +			fprintf(stderr, "WARNING: expected PROBES section, but got %d\n",
 +			    dofprobes->dofs_type);
 +			break;
 +		}
 +
 +		dprintf(1, "found provider %p\n", dofprovider);
 +		dofstrtabraw = (char *)(buf + dofstrtab->dofs_offset);
 +		nprobes = dofprobes->dofs_size / dofprobes->dofs_entsize;
 +		fixsymbol(e, symtabdata, symtabidx, nprobes, buf, dofprobes, &fixedprobes,
 +				dofstrtabraw);
 +		if (fixedprobes != nprobes) {
 +			/*
 +			 * If we haven't fixed all the probes using the
 +			 * symtab section, look inside the dynsym
 +			 * section.
 +			 */
 +			fixsymbol(e, dynsymdata, dynsymidx, nprobes, buf, dofprobes,
 +					&fixedprobes, dofstrtabraw);
 +		}
 +		if (fixedprobes != nprobes) {
 +			fprintf(stderr, "WARNING: number of probes "
 +			    "fixed does not match the number of "
 +			    "defined probes (%d != %d, "
 +			    "respectively)\n", fixedprobes, nprobes);
 +			fprintf(stderr, "WARNING: some probes might "
 +			    "not fire or your program might crash\n");
 +		}
  	}
  #endif
  	if ((gen = ioctl(fd, DTRACEHIOC_ADDDOF, &dh)) == -1)
 @@ -330,7 +353,12 @@ dtrace_dof_init(void)
  	}
  
  	(void) close(fd);
 +
  #if !defined(sun)
 +		/* End of while loop */
 +		dof = dof_next;
 +	}
 +
  	elf_end(e);
  	(void) close(efd);
  #endif
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
