From: Peter Weldon Date: 2010-09-26T02:59:17+09:00 Subject: [ruby-core:32557] [Ruby 1.9-Feature#3875] [Patch] backtrace for i386-mswin32_100 --mimepart_4c9e387526830_eedccf6794143a2 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #3875 has been updated by Peter Weldon. File 0002-Add-C-level-backtrace-for-MSWIN-x86.patch added > * why StackWalk64 instead of StackWalk? StackWalk64 supersedes StackWalk in the newer Windows SDKs and has suppor= t for x64. > * why does it need another thread? It most probably doesn't. GetThreadContext() documentation says it is not= guaranteed to return a valid context for running threads. What I think t= hey mean is that the context will not remain valid after GetThreadContext= () if the thread is running. As long as the existing stack at the time of= the GetThreadContext() does not get modified while trying to walk it I d= on't think there would be a problem. I've updated the patch to fix a mingw compile problem and fix some code s= tyle/formatting. ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3875 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4c9e387526830_eedccf6794143a2 Content-Type: application/octet-stream; name=0002-Add-C-level-backtrace-for-MSWIN-x86.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=0002-Add-C-level-backtrace-for-MSWIN-x86.patch LS0tCiBpbmNsdWRlL3J1Ynkvd2luMzIuaCB8ICAgIDMgKysKIHZtX2R1bXAu YyAgICAgICAgICAgIHwgICAgMiArCiB3aW4zMi93aW4zMi5jICAgICAgICB8 ICAgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMo KyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ydWJ5 L3dpbjMyLmggYi9pbmNsdWRlL3J1Ynkvd2luMzIuaAppbmRleCA3YjZiZGVk Li5kYjY0NmIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3J1Ynkvd2luMzIuaAor KysgYi9pbmNsdWRlL3J1Ynkvd2luMzIuaApAQCAtNjcyLDYgKzY3Miw5IEBA IGluIGFzeW5jaHJvbm91c19mdW5jX3QuCiB0eXBlZGVmIHVpbnRwdHJfdCAo KmFzeW5jaHJvbm91c19mdW5jX3QpKHVpbnRwdHJfdCBzZWxmLCBpbnQgYXJn YywgdWludHB0cl90KiBhcmd2KTsKIHVpbnRwdHJfdCByYl93MzJfYXN5bmNo cm9uaXplKGFzeW5jaHJvbm91c19mdW5jX3QgZnVuYywgdWludHB0cl90IHNl bGYsIGludCBhcmdjLCB1aW50cHRyX3QqIGFyZ3YsIHVpbnRwdHJfdCBpbnRy dmFsKTsKIAorLyogYmFja3RyYWNlICovCit2b2lkIHJiX3czMl9iYWNrdHJh Y2UoKTsKKwogI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0g NAogI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKICNlbmRpZgpkaWZmIC0t Z2l0IGEvdm1fZHVtcC5jIGIvdm1fZHVtcC5jCmluZGV4IGYyNDVjY2MuLmMw MTk5YjEgMTAwNjQ0Ci0tLSBhL3ZtX2R1bXAuYworKysgYi92bV9kdW1wLmMK QEAgLTYxNiw1ICs2MTYsNyBAQCByYl92bV9idWdyZXBvcnQodm9pZCkKIAl9 CiAJZnByaW50ZihzdGRlcnIsICJcbiIpOwogICAgIH0KKyNlbGlmIF9XSU4z MgorICAgIHJiX3czMl9iYWNrdHJhY2UoKTsKICNlbmRpZgogfQpkaWZmIC0t Z2l0IGEvd2luMzIvd2luMzIuYyBiL3dpbjMyL3dpbjMyLmMKaW5kZXggNDZj ZGFmYS4uODM0NmI4ZiAxMDA2NDQKLS0tIGEvd2luMzIvd2luMzIuYworKysg Yi93aW4zMi93aW4zMi5jCkBAIC0zNiw2ICszNiw5IEBACiAjaWZkZWYgX19N SU5HVzMyX18KICNpbmNsdWRlIDxtc3dzb2NrLmg+CiAjZW5kaWYKKyNpZiBf TVNDX1ZFUiAmJiBfTV9JWDg2CisjaW5jbHVkZSA8RGJnSGVscC5oPgorI2Vu ZGlmCiAjaW5jbHVkZSAicnVieS93aW4zMi5oIgogI2luY2x1ZGUgIndpbjMy L2Rpci5oIgogI2RlZmluZSBpc2RpcnNlcCh4KSAoKHgpID09ICcvJyB8fCAo eCkgPT0gJ1xcJykKQEAgLTU2OTQsMyArNTY5Nyw5NiBAQCBzaWduYml0KGRv dWJsZSB4KQogICAgIHJldHVybiAqaXAgPCAwOwogfQogI2VuZGlmCisKKyNp ZiBfTVNDX1ZFUiAmJiBfTV9JWDg2CitzdGF0aWMgc3RydWN0IER1bXBBcmdz IHsKKyAgICBEV09SRCB0aHJlYWRfaWQ7CisgICAgSEFORExFIGV2ZW50Owor fTsKKworc3RhdGljIHZvaWQKK2R1bXBfdGhyZWFkKHZvaWQgKmFyZykKK3sK KyAgICBzdHJ1Y3QgRHVtcEFyZ3MqIGR1bXBfYXJncyA9IChzdHJ1Y3QgRHVt cEFyZ3MqKWFyZzsKKyAgICBIQU5ETEUgcHJvY2VzcyA9IEdldEN1cnJlbnRQ cm9jZXNzKCk7CisgICAgSEFORExFIHRocmVhZCA9IE9wZW5UaHJlYWQoVEhS RUFEX0FMTF9BQ0NFU1MsIDAsIGR1bXBfYXJncy0+dGhyZWFkX2lkKTsKKyAg ICBTVEFDS0ZSQU1FNjQgc3RhY2tGcmFtZTsKKyAgICBDT05URVhUIGNvbnRl eHQ7CisgICAgRFdPUkQ2NCBkd0Rpc3BsYWNlbWVudDsKKyAgICBEV09SRDY0 IGR3QWRkcmVzczsKKyAgICBjaGFyIGJ1ZmZlcltzaXplb2YoU1lNQk9MX0lO Rk8pICsgTUFYX1NZTV9OQU1FICogc2l6ZW9mKFRDSEFSKV07CisgICAgUFNZ TUJPTF9JTkZPIHBTeW1ib2wgPSAoUFNZTUJPTF9JTkZPKWJ1ZmZlcjsKKyAg ICBJTUFHRUhMUF9MSU5FNjQgbGluZTsKKyAgICBEV09SRCBkd0xpbmVEaXNw bGFjZW1lbnQ7CisKKyAgICBTeW1TZXRPcHRpb25zKFNZTU9QVF9VTkROQU1F IHwgU1lNT1BUX0RFRkVSUkVEX0xPQURTIHwgU1lNT1BUX0RFQlVHIHwgCisg ICAgICAgICAgICAgICAgICBTWU1PUFRfTE9BRF9MSU5FUyk7CisKKyAgICBp ZiAoIVN5bUluaXRpYWxpemUocHJvY2VzcywgTlVMTCwgVFJVRSkpIGFib3J0 KCk7CisKKyAgICBtZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihDT05URVhU KSk7CisgICAgY29udGV4dC5Db250ZXh0RmxhZ3MgPSBDT05URVhUX0ZVTEw7 CisgICAgaWYgKCFHZXRUaHJlYWRDb250ZXh0KHRocmVhZCwgJmNvbnRleHQp KSBhYm9ydCgpOworCisgICAgbWVtc2V0KCZzdGFja0ZyYW1lLCAwLCBzaXpl b2YoU1RBQ0tGUkFNRTY0KSk7CisgICAgc3RhY2tGcmFtZS5BZGRyUEMuTW9k ZSA9IEFkZHJNb2RlRmxhdDsKKyAgICBzdGFja0ZyYW1lLkFkZHJQQy5PZmZz ZXQgPSBjb250ZXh0LkVpcDsKKworICAgIHN0YWNrRnJhbWUuQWRkckZyYW1l Lk1vZGUgPSBBZGRyTW9kZUZsYXQ7CisgICAgc3RhY2tGcmFtZS5BZGRyRnJh bWUuT2Zmc2V0ID0gY29udGV4dC5FYnA7CisKKyAgICBzdGFja0ZyYW1lLkFk ZHJTdGFjay5Nb2RlID0gQWRkck1vZGVGbGF0OworICAgIHN0YWNrRnJhbWUu QWRkclN0YWNrLk9mZnNldCA9IGNvbnRleHQuRXNwOworCisgICAgZnByaW50 ZihzdGRlcnIsICItLSBDIGxldmVsIGJhY2t0cmFjZSBpbmZvcm1hdGlvbiAi CisgICAgICAgICAgICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLVxuIik7CisKKyAgICB3aGlsZSAoU3RhY2tXYWxrNjQo SU1BR0VfRklMRV9NQUNISU5FX0kzODYsIHByb2Nlc3MsIHRocmVhZCwgJnN0 YWNrRnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgIChQVk9JRCkmY29u dGV4dCwgTlVMTCwgU3ltRnVuY3Rpb25UYWJsZUFjY2VzczY0LCAKKyAgICAg ICAgICAgICAgICAgICAgICAgU3ltR2V0TW9kdWxlQmFzZTY0LCBOVUxMKSkg eworICAgICAgICBkd0Rpc3BsYWNlbWVudCA9IDA7CisgICAgICAgIGR3QWRk cmVzcyA9IHN0YWNrRnJhbWUuQWRkclBDLk9mZnNldDsKKworCW1lbXNldChi dWZmZXIsIDAsIHNpemVvZihidWZmZXIpKTsKKwlwU3ltYm9sLT5TaXplT2ZT dHJ1Y3QgPSBzaXplb2YoU1lNQk9MX0lORk8pOworCXBTeW1ib2wtPk1heE5h bWVMZW4gPSBNQVhfU1lNX05BTUU7CisKKwlpZiAoU3ltRnJvbUFkZHIocHJv Y2VzcywgZHdBZGRyZXNzLCAmZHdEaXNwbGFjZW1lbnQsIHBTeW1ib2wpKSB7 CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiglcykiLCBwU3ltYm9s LT5OYW1lKTsKKwl9CisKKwltZW1zZXQoJmxpbmUsIDAsIHNpemVvZihJTUFH RUhMUF9MSU5FNjQpKTsKKwlsaW5lLlNpemVPZlN0cnVjdCA9IHNpemVvZihJ TUFHRUhMUF9MSU5FNjQpOworCisJaWYgKFN5bUdldExpbmVGcm9tQWRkcjY0 KHByb2Nlc3MsIGR3QWRkcmVzcywgJmR3TGluZURpc3BsYWNlbWVudCwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGluZSkpIHsKKyAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKCVzOiVsdSkiLCBsaW5lLkZp bGVOYW1lLCBsaW5lLkxpbmVOdW1iZXIpOworCX0KKworICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIiBbMHglMDhJNjR4XVxuIiwgZHdBZGRyZXNzKTsKKyAg ICB9CisgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOworCisgICAgaWYgKCFD bG9zZUhhbmRsZSh0aHJlYWQpKSBhYm9ydCgpOworICAgIGlmICghU3ltQ2xl YW51cChwcm9jZXNzKSkgYWJvcnQoKTsKKyAgICBpZiAoIVNldEV2ZW50KGR1 bXBfYXJncy0+ZXZlbnQpKSBhYm9ydCgpOworfQorCit2b2lkIAorcmJfdzMy X2JhY2t0cmFjZSgpIHsKKyAgICBzdHJ1Y3QgRHVtcEFyZ3MgZHVtcF9hcmdz OworICAgIGR1bXBfYXJncy50aHJlYWRfaWQgPSBHZXRDdXJyZW50VGhyZWFk SWQoKTsKKyAgICBkdW1wX2FyZ3MuZXZlbnQgPSBDcmVhdGVFdmVudChOVUxM LCBUUlVFLCBGQUxTRSwgTlVMTCk7CisgICAgaWYoIWR1bXBfYXJncy5ldmVu dCkgYWJvcnQoKTsKKyAgICBfYmVnaW50aHJlYWQoZHVtcF90aHJlYWQsMCwm ZHVtcF9hcmdzKTsKKworICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGR1 bXBfYXJncy5ldmVudCwgSU5GSU5JVEUpICE9IFdBSVRfT0JKRUNUXzApIAor ICAgICAgICBhYm9ydCgpOworfQorI2Vsc2UKK3ZvaWQgCityYl93MzJfYmFj a3RyYWNlKCkgeworfQorI2VuZGlmCisKKwotLSAK --mimepart_4c9e387526830_eedccf6794143a2--