From: Yugui Date: 2010-01-06T23:15:18+09:00 Subject: [ruby-core:27448] [Feature:trunk] adding hooks for better tracing --00504502e8aa536c28047c7f9566 Content-Type: text/plain; charset=ISO-8859-1 Hi, I made a commit that embeded dtrace probes into Ruby so that you can profile a Ruby application at runtime. (r26235) Adding probes had been approved by a Ruby developer's meeting, however, the commit was little larger than what other committers expected. I got some objection for the commit. [ruby-dev:39954] In the end, I decided to temporarily revert the commit. (r26243) I discussed how we should support dynamic runtime tracing, with ko1, mame, naruse, unak and shyouhei. The problems of the commit were: * the probes duplicated with the event_hook framework (rb_add_event_hook, Kernel#set_trace_func) * Design of the probes were not verified enough. * more trial and error are necessary, to make it clear what is necessary to trace a Ruby application. I accepted ko1's suggestion: * reverting the commit * adding some hooks for rb_add_event_hook(). * implementing probes for dynamic runtime tracing on the event_hook framework. * these probes can be implemented as a gem * I will aget a chance for trial and error. * The probes possibly will be merged into Ruby itself after enough designed and getting enough use cases. Here is a patch to add the hooks I and ko1 talked about. (attached) And here is an extension library that provides prove points to dtrace, on top of the hooks. (http://github.com/yugui/vm_probes ) What do you think? Can I commit the patch I attached? Thank you, -- Yuki Sonoda (Yugui) --00504502e8aa536c28047c7f9566 Content-Type: application/octet-stream; name="adding-hooks.patch" Content-Disposition: attachment; filename="adding-hooks.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g446sjid0 ZGlmZiAtLWdpdCBhL2NvbXBpbGUuYyBiL2NvbXBpbGUuYwppbmRleCA1NGI1MTNjLi5lYTQyNjhh IDEwMDY0NAotLS0gYS9jb21waWxlLmMKKysrIGIvY29tcGlsZS5jCkBAIC0zNTY5LDYgKzM1Njks NyBAQCBpc2VxX2NvbXBpbGVfZWFjaChyYl9pc2VxX3QgKmlzZXEsIExJTktfQU5DSE9SICpyZXQs IE5PREUgKiBub2RlLCBpbnQgcG9wZWQpCiAJICAgIH0KIAkgICAgQUREX0lOU05MKHJldCwgbmRf bGluZShub2RlKSwganVtcCwgbGFiZWxfbWlzcyk7CiAJICAgIEFERF9MQUJFTChyZXQsIGxhYmVs X2hpdCk7CisJICAgIEFERF9UUkFDRShyZXQsIG5kX2xpbmUobm9kZSksIFJVQllfRVZFTlRfUkVT Q1VFKTsKIAkgICAgQ09NUElMRShyZXQsICJyZXNib2R5IGJvZHkiLCByZXNxLT5uZF9ib2R5KTsK IAkgICAgaWYgKGlzZXEtPmNvbXBpbGVfZGF0YS0+b3B0aW9uLT50YWlsY2FsbF9vcHRpbWl6YXRp b24pIHsKIAkJQUREX0lOU04ocmV0LCBuZF9saW5lKG5vZGUpLCBub3ApOwpkaWZmIC0tZ2l0IGEv Z2MuYyBiL2djLmMKaW5kZXggNDAyMTIyMC4uMzU0ODlhYSAxMDA2NDQKLS0tIGEvZ2MuYworKysg Yi9nYy5jCkBAIC0xMDU5LDE3ICsxMDU5LDE3IEBAIHJiX2R1cmluZ19nYyh2b2lkKQogVkFMVUUK IHJiX25ld29iaih2b2lkKQogewotI2lmIFVTRV9WQUxVRV9DQUNIRSB8fCAoZGVmaW5lZChFTkFC TEVfVk1fT0JKU1BBQ0UpICYmIEVOQUJMRV9WTV9PQkpTUEFDRSkKICAgICByYl90aHJlYWRfdCAq dGggPSBHRVRfVEhSRUFEKCk7Ci0jZW5kaWYKLSNpZiBVU0VfVkFMVUVfQ0FDSEUKLSAgICBWQUxV RSB2ID0gKnRoLT52YWx1ZV9jYWNoZV9wdHI7Ci0jZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9W TV9PQkpTUEFDRSkgJiYgRU5BQkxFX1ZNX09CSlNQQUNFCiAgICAgcmJfb2Jqc3BhY2VfdCAqb2Jq c3BhY2UgPSB0aC0+dm0tPm9ianNwYWNlOwogI2Vsc2UKICAgICByYl9vYmpzcGFjZV90ICpvYmpz cGFjZSA9ICZyYl9vYmpzcGFjZTsKICNlbmRpZgorI2lmIFVTRV9WQUxVRV9DQUNIRQorICAgIFZB TFVFIHYgPSAqdGgtPnZhbHVlX2NhY2hlX3B0cjsKKyNlbHNlCisgICAgVkFMVUUgdiA9IHJiX25l d29ial9mcm9tX2hlYXAob2Jqc3BhY2UpOworI2VuZGlmCiAKICAgICBpZiAoZHVyaW5nX2djKSB7 CiAJZG9udF9nYyA9IDE7CkBAIC0xMDg1LDE1ICsxMDg1LDE0IEBAIHJiX25ld29iaih2b2lkKQog ICAgIGVsc2UgewogCXYgPSByYl9maWxsX3ZhbHVlX2NhY2hlKHRoKTsKICAgICB9CisjZW5kaWYK IAogI2lmIGRlZmluZWQoR0NfREVCVUcpCiAgICAgcHJpbnRmKCJjYWNoZSBpbmRleDogJWQsIHY6 ICVwLCB0aDogJXBcbiIsCiAJICAgdGgtPnZhbHVlX2NhY2hlX3B0ciAtIHRoLT52YWx1ZV9jYWNo ZSwgdiwgdGgpOwogI2VuZGlmCisgICAgRVhFQ19FVkVOVF9IT09LKHRoLCBSVUJZX0VWRU5UX09C Sl9BTExPQywgdiwgMCwgMCk7CiAgICAgcmV0dXJuIHY7Ci0jZWxzZQotICAgIHJldHVybiByYl9u ZXdvYmpfZnJvbV9oZWFwKG9ianNwYWNlKTsKLSNlbmRpZgogfQogCiBOT0RFKgpAQCAtMTk3Myw2 ICsxOTcyLDggQEAgb2JqX2ZyZWUocmJfb2Jqc3BhY2VfdCAqb2Jqc3BhY2UsIFZBTFVFIG9iaikK IAlicmVhazsKICAgICB9CiAKKyAgICBFWEVDX0VWRU5UX0hPT0soR0VUX1RIUkVBRCgpLCBSVUJZ X0VWRU5UX09CSl9GUkVFLCBvYmosIDAsIDApOworCiAgICAgaWYgKEZMX1RFU1Qob2JqLCBGTF9F WElWQVIpKSB7CiAJcmJfZnJlZV9nZW5lcmljX2l2YXIoKFZBTFVFKW9iaik7CiAJRkxfVU5TRVQo b2JqLCBGTF9FWElWQVIpOwpAQCAtMjE1Myw2ICsyMTU0LDcgQEAgZ2FyYmFnZV9jb2xsZWN0KHJi X29ianNwYWNlX3QgKm9ianNwYWNlKQogICAgIGR1cmluZ19nYysrOwogICAgIG9ianNwYWNlLT5j b3VudCsrOwogCisgICAgRVhFQ19FVkVOVF9IT09LKHRoLCBSVUJZX0VWRU5UX0dDX1NUQVJULCAw LCAwLCAwKTsKICAgICBHQ19QUk9GX1RJTUVSX1NUQVJUOwogICAgIEdDX1BST0ZfTUFSS19USU1F Ul9TVEFSVDsKICAgICBTRVRfU1RBQ0tfRU5EOwpAQCAtMjIwMSw2ICsyMjAzLDcgQEAgZ2FyYmFn ZV9jb2xsZWN0KHJiX29ianNwYWNlX3QgKm9ianNwYWNlKQogICAgIEdDX1BST0ZfU1dFRVBfVElN RVJfU1RPUDsKIAogICAgIEdDX1BST0ZfVElNRVJfU1RPUDsKKyAgICBFWEVDX0VWRU5UX0hPT0so dGgsIFJVQllfRVZFTlRfR0NfRU5ELCAwLCAwLCAwKTsKICAgICBpZiAoR0NfTk9USUZZKSBwcmlu dGYoImVuZCBnYXJiYWdlX2NvbGxlY3QoKVxuIik7CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYg LS1naXQgYS9pbmNsdWRlL3J1YnkvcnVieS5oIGIvaW5jbHVkZS9ydWJ5L3J1YnkuaAppbmRleCA1 MzE4NzcyLi43YjhjOTgyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3J1YnkvcnVieS5oCisrKyBiL2lu Y2x1ZGUvcnVieS9ydWJ5LmgKQEAgLTEzMTYsMTkgKzEzMTYsMjYgQEAgdm9pZCBydWJ5X3N5c2lu aXQoaW50ICosIGNoYXIgKioqKTsKICNkZWZpbmUgSEFWRV9OQVRJVkVUSFJFQUQKIGludCBydWJ5 X25hdGl2ZV90aHJlYWRfcCh2b2lkKTsKIAotI2RlZmluZSBSVUJZX0VWRU5UX05PTkUgICAgICAw eDAwMDAKLSNkZWZpbmUgUlVCWV9FVkVOVF9MSU5FICAgICAgMHgwMDAxCi0jZGVmaW5lIFJVQllf RVZFTlRfQ0xBU1MgICAgIDB4MDAwMgotI2RlZmluZSBSVUJZX0VWRU5UX0VORCAgICAgICAweDAw MDQKLSNkZWZpbmUgUlVCWV9FVkVOVF9DQUxMICAgICAgMHgwMDA4Ci0jZGVmaW5lIFJVQllfRVZF TlRfUkVUVVJOICAgIDB4MDAxMAotI2RlZmluZSBSVUJZX0VWRU5UX0NfQ0FMTCAgICAweDAwMjAK LSNkZWZpbmUgUlVCWV9FVkVOVF9DX1JFVFVSTiAgMHgwMDQwCi0jZGVmaW5lIFJVQllfRVZFTlRf UkFJU0UgICAgIDB4MDA4MAotI2RlZmluZSBSVUJZX0VWRU5UX0FMTCAgICAgICAweGZmZmYKLSNk ZWZpbmUgUlVCWV9FVkVOVF9WTSAgICAgICAweDEwMDAwCi0jZGVmaW5lIFJVQllfRVZFTlRfU1dJ VENIICAgMHgyMDAwMAotI2RlZmluZSBSVUJZX0VWRU5UX0NPVkVSQUdFIDB4NDAwMDAKKyNkZWZp bmUgUlVCWV9FVkVOVF9OT05FICAgICAgICAweDAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9MSU5F ICAgICAgICAweDAwMDEKKyNkZWZpbmUgUlVCWV9FVkVOVF9DTEFTUyAgICAgICAweDAwMDIKKyNk ZWZpbmUgUlVCWV9FVkVOVF9FTkQgICAgICAgICAweDAwMDQKKyNkZWZpbmUgUlVCWV9FVkVOVF9D QUxMICAgICAgICAweDAwMDgKKyNkZWZpbmUgUlVCWV9FVkVOVF9SRVRVUk4gICAgICAweDAwMTAK KyNkZWZpbmUgUlVCWV9FVkVOVF9DX0NBTEwgICAgICAweDAwMjAKKyNkZWZpbmUgUlVCWV9FVkVO VF9DX1JFVFVSTiAgICAweDAwNDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9SQUlTRSAgICAgICAweDAw ODAKKyNkZWZpbmUgUlVCWV9FVkVOVF9BTEwgICAgICAgICAweGZmZmYKKyNkZWZpbmUgUlVCWV9F VkVOVF9WTSAgICAgICAgIDB4MTAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9TV0lUQ0ggICAgIDB4 MjAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9DT1ZFUkFHRSAgIDB4NDAwMDAKKyNkZWZpbmUgUlVC WV9FVkVOVF9USF9JTklUICAgIDB4ODAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9USF9URVJNICAg MHgxMDAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9SRVNDVUUgICAgMHgyMDAwMDAKKyNkZWZpbmUg UlVCWV9FVkVOVF9PQkpfQUxMT0MgMHg0MDAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9PQkpfRlJF RSAgMHg4MDAwMDAKKyNkZWZpbmUgUlVCWV9FVkVOVF9HQ19TVEFSVCAweDEwMDAwMDAKKyNkZWZp bmUgUlVCWV9FVkVOVF9HQ19FTkQgICAweDIwMDAwMDAKIAogdHlwZWRlZiB1bnNpZ25lZCBpbnQg cmJfZXZlbnRfZmxhZ190OwogdHlwZWRlZiB2b2lkICgqcmJfZXZlbnRfaG9va19mdW5jX3QpKHJi X2V2ZW50X2ZsYWdfdCwgVkFMVUUgZGF0YSwgVkFMVUUsIElELCBWQUxVRSBrbGFzcyk7CmRpZmYg LS1naXQgYS90aHJlYWQuYyBiL3RocmVhZC5jCmluZGV4IDBiYTQxYzcuLjA2YTdkYTQgMTAwNjQ0 Ci0tLSBhL3RocmVhZC5jCisrKyBiL3RocmVhZC5jCkBAIC0zNzYsNiArMzc2LDggQEAgdGhyZWFk X2NsZWFudXBfZnVuYyh2b2lkICp0aF9wdHIpCiB7CiAgICAgcmJfdGhyZWFkX3QgKnRoID0gdGhf cHRyOwogCisgICAgRVhFQ19FVkVOVF9IT09LKHRoLCBSVUJZX0VWRU5UX1RIX1RFUk0sIHRoLT5z ZWxmLCAwLCAwKTsKKwogICAgIC8qIHVubG9jayBhbGwgbG9ja2luZyBtdXRleGVzICovCiAgICAg aWYgKHRoLT5rZWVwaW5nX211dGV4ZXMpIHsKIAlyYl9tdXRleF91bmxvY2tfYWxsKHRoLT5rZWVw aW5nX211dGV4ZXMsIHRoKTsKQEAgLTUzMyw2ICs1MzUsNyBAQCB0aHJlYWRfY3JlYXRlX2NvcmUo VkFMVUUgdGh2YWwsIFZBTFVFIGFyZ3MsIFZBTFVFICgqZm4pKEFOWUFSR1MpKQogICAgIG5hdGl2 ZV9tdXRleF9pbml0aWFsaXplKCZ0aC0+aW50ZXJydXB0X2xvY2spOwogICAgIC8qIGtpY2sgdGhy ZWFkICovCiAgICAgc3RfaW5zZXJ0KHRoLT52bS0+bGl2aW5nX3RocmVhZHMsIHRodmFsLCAoc3Rf ZGF0YV90KSB0aC0+dGhyZWFkX2lkKTsKKyAgICBFWEVDX0VWRU5UX0hPT0soR0VUX1RIUkVBRCgp LCBSVUJZX0VWRU5UX1RIX0lOSVQsIHRodmFsLCAwLCAwKTsKICAgICBlcnIgPSBuYXRpdmVfdGhy ZWFkX2NyZWF0ZSh0aCk7CiAgICAgaWYgKGVycikgewogCXN0X2RlbGV0ZV93cmFwKHRoLT52bS0+ bGl2aW5nX3RocmVhZHMsIHRoLT5zZWxmKTsKQEAgLTM2ODAsNiArMzY4Myw3IEBAIHRocmVhZF9y ZXNldF9ldmVudF9mbGFncyhyYl90aHJlYWRfdCAqdGgpCiAJZmxhZyB8PSBob29rLT5mbGFnOwog CWhvb2sgPSBob29rLT5uZXh0OwogICAgIH0KKyAgICB0aC0+ZXZlbnRfZmxhZ3MgPSBmbGFnOwog fQogCiBzdGF0aWMgdm9pZAo= --00504502e8aa536c28047c7f9566--