{"action":"created","comment":{"url":"https://api.github.com/repos/apple/swift/pulls/comments/76509468","id":76509468,"diff_hunk":"@@ -0,0 +1,119 @@\n+#!/usr/bin/env python\n+\n+# TODOs:\n+# * verbose output\n+# * search symbols by name for the not <unavailable> ones\n+\n+import sys\n+import lldb\n+from subprocess import Popen, PIPE\n+\n+dynlibs = {}\n+def process_ldd(lddoutput):\n+    global dynlibs\n+    for line in lddoutput.splitlines():\n+        ldd_tokens = line.split()\n+        if len(ldd_tokens) >= 3:\n+            dynlibs[ldd_tokens[0]] = ldd_tokens[2]\n+\n+def create_lldb_target(memmap):\n+    lldb_target = lldb_debugger.CreateTargetWithFileAndArch(binary, lldb.LLDB_ARCH_DEFAULT)\n+    module = lldb_target.GetModuleAtIndex(0)\n+    # lldb seems to treat main binary differently, slide offset must be zero\n+    lldb_target.SetModuleLoadAddress(module, 0)\n+    for dynlib_path in memmap:\n+        if not binary in dynlib_path:\n+            module = lldb_target.AddModule (dynlib_path, lldb.LLDB_ARCH_DEFAULT, None, None)\n+            lldb_target.SetModuleLoadAddress(module, memmap[dynlib_path])\n+    return lldb_target\n+\n+def process_stack(stack):\n+    global binary\n+    if len(stack) == 0:\n+        return\n+    memmap = {}\n+    full_stack = []\n+    for line in stack:\n+        stack_tokens = line.split()\n+        dynlib_fname = stack_tokens[1]\n+        if dynlib_fname in dynlibs:\n+            dynlib_path = dynlibs[dynlib_fname]\n+        else:\n+            if dynlib_fname in binary:\n+                dynlib_path = binary\n+            else:\n+                dynlib_path = None\n+\n+        if \"<unavailable>\" in stack_tokens[3]:\n+            framePC = int(stack_tokens[2], 16)\n+            symbol_offset = int(stack_tokens[-1], 10)\n+            dynlib_baseaddr = framePC - symbol_offset\n+            if dynlib_path in memmap:\n+                if memmap[dynlib_path] != dynlib_baseaddr:\n+                    print \"Mismatched base address for: {0:s}, had: {1:x}, now got {2:x}\".format(dynlib_path, memmap[dynlib_path], dynlib_baseaddr)","path":"utils/symbolicate-linux-fatal.py","position":53,"original_position":53,"commit_id":"41e6a0e9c5cc3fc295430e74ff17be5dc3bd21c9","original_commit_id":"41e6a0e9c5cc3fc295430e74ff17be5dc3bd21c9","user":{"login":"modocache","id":552921,"avatar_url":"https://avatars.githubusercontent.com/u/552921?v=3","gravatar_id":"","url":"https://api.github.com/users/modocache","html_url":"https://github.com/modocache","followers_url":"https://api.github.com/users/modocache/followers","following_url":"https://api.github.com/users/modocache/following{/other_user}","gists_url":"https://api.github.com/users/modocache/gists{/gist_id}","starred_url":"https://api.github.com/users/modocache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/modocache/subscriptions","organizations_url":"https://api.github.com/users/modocache/orgs","repos_url":"https://api.github.com/users/modocache/repos","events_url":"https://api.github.com/users/modocache/events{/privacy}","received_events_url":"https://api.github.com/users/modocache/received_events","type":"User","site_admin":false},"body":"To make this script compatible with Python 3, you should `from __future__ import print_function` above, then use `print()` here.","created_at":"2016-08-27T03:42:02Z","updated_at":"2016-08-27T03:42:02Z","html_url":"https://github.com/apple/swift/pull/4479#discussion_r76509468","pull_request_url":"https://api.github.com/repos/apple/swift/pulls/4479","_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/comments/76509468"},"html":{"href":"https://github.com/apple/swift/pull/4479#discussion_r76509468"},"pull_request":{"href":"https://api.github.com/repos/apple/swift/pulls/4479"}}},"pull_request":{"url":"https://api.github.com/repos/apple/swift/pulls/4479","id":82587640,"html_url":"https://github.com/apple/swift/pull/4479","diff_url":"https://github.com/apple/swift/pull/4479.diff","patch_url":"https://github.com/apple/swift/pull/4479.patch","issue_url":"https://api.github.com/repos/apple/swift/issues/4479","number":4479,"state":"open","locked":false,"title":"[SR-755] Tool for re-symbolicating fatal stacktraces on Linux.","user":{"login":"gmilos","id":21225052,"avatar_url":"https://avatars.githubusercontent.com/u/21225052?v=3","gravatar_id":"","url":"https://api.github.com/users/gmilos","html_url":"https://github.com/gmilos","followers_url":"https://api.github.com/users/gmilos/followers","following_url":"https://api.github.com/users/gmilos/following{/other_user}","gists_url":"https://api.github.com/users/gmilos/gists{/gist_id}","starred_url":"https://api.github.com/users/gmilos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmilos/subscriptions","organizations_url":"https://api.github.com/users/gmilos/orgs","repos_url":"https://api.github.com/users/gmilos/repos","events_url":"https://api.github.com/users/gmilos/events{/privacy}","received_events_url":"https://api.github.com/users/gmilos/received_events","type":"User","site_admin":false},"body":"<!-- Please complete this template before creating the pull request. -->\r\n#### What's in this pull request?\r\nOn Linux stack traces are full of <unavailable> symbols. This provides a tool to re-symbolicate such stack trace. \r\n\r\n<!-- Description about pull request. -->\r\nThe cause is difference in behaviour of `dladdr` between Linux & Darwin. See SR.\r\n\r\n#### Resolved bug number: ([SR-755](https://bugs.swift.org/browse/SR-755))\r\n<!-- If this pull request resolves any bugs from Swift bug tracker -->\r\n\r\n* * * *\r\n\r\n<!-- This selection should only be completed by Swift admin -->\r\nBefore merging this pull request to apple/swift repository:\r\n- [ ] Test pull request on Swift continuous integration.\r\n\r\n<details>\r\n  <summary>Triggering Swift CI</summary>\r\n\r\nThe swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:\r\n\r\n**Smoke Testing**\r\n\r\n        Platform     | Comment\r\n        ------------ | -------------\r\n        All supported platforms     | @swift-ci Please smoke test\r\n        All supported platforms     | @swift-ci Please smoke test and merge\r\n        OS X platform               | @swift-ci Please smoke test OS X platform\r\n        Linux platform              | @swift-ci Please smoke test Linux platform\r\n\r\nA smoke test on macOS does the following:\r\n\r\n1. Builds the compiler incrementally.\r\n2. Builds the standard library only for macOS. Simulator standard libraries and\r\n   device standard libraries are not built.\r\n3. lldb is not built.\r\n4. The test and validation-test targets are run only for macOS. The optimized\r\n   version of these tests are not run.\r\n\r\nA smoke test on Linux does the following:\r\n\r\n1. Builds the compiler incrementally.\r\n2. Builds the standard library incrementally.\r\n3. lldb is built incrementally.\r\n4. The swift test and validation-test targets are run. The optimized version of these\r\n   tests are not run.\r\n5. lldb is tested.\r\n\r\n**Validation Testing**\r\n\r\n        Platform     | Comment\r\n        ------------ | -------------\r\n        All supported platforms     | @swift-ci Please test\r\n        All supported platforms     | @swift-ci Please test and merge\r\n        OS X platform               | @swift-ci Please test OS X platform\r\n        OS X platform               | @swift-ci Please benchmark\r\n        Linux platform              | @swift-ci Please test Linux platform\r\n\r\n\r\n**Lint Testing**\r\n\r\n        Language     | Comment\r\n        ------------ | -------------\r\n        Python       | @swift-ci Please Python lint\r\n\r\nNote: Only members of the Apple organization can trigger swift-ci.\r\n</details>\r\n<!-- Thank you for your contribution to Swift! -->\r\n\r\n","created_at":"2016-08-24T17:51:59Z","updated_at":"2016-08-27T03:42:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ffb53d2dd69902273ddd53e8d393dc38071e1f8b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/apple/swift/pulls/4479/commits","review_comments_url":"https://api.github.com/repos/apple/swift/pulls/4479/comments","review_comment_url":"https://api.github.com/repos/apple/swift/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apple/swift/issues/4479/comments","statuses_url":"https://api.github.com/repos/apple/swift/statuses/41e6a0e9c5cc3fc295430e74ff17be5dc3bd21c9","head":{"label":"gmilos:SR-755-linux-fatal-stacktrace-symbolication","ref":"SR-755-linux-fatal-stacktrace-symbolication","sha":"41e6a0e9c5cc3fc295430e74ff17be5dc3bd21c9","user":{"login":"gmilos","id":21225052,"avatar_url":"https://avatars.githubusercontent.com/u/21225052?v=3","gravatar_id":"","url":"https://api.github.com/users/gmilos","html_url":"https://github.com/gmilos","followers_url":"https://api.github.com/users/gmilos/followers","following_url":"https://api.github.com/users/gmilos/following{/other_user}","gists_url":"https://api.github.com/users/gmilos/gists{/gist_id}","starred_url":"https://api.github.com/users/gmilos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmilos/subscriptions","organizations_url":"https://api.github.com/users/gmilos/orgs","repos_url":"https://api.github.com/users/gmilos/repos","events_url":"https://api.github.com/users/gmilos/events{/privacy}","received_events_url":"https://api.github.com/users/gmilos/received_events","type":"User","site_admin":false},"repo":{"id":66485441,"name":"swift","full_name":"gmilos/swift","owner":{"login":"gmilos","id":21225052,"avatar_url":"https://avatars.githubusercontent.com/u/21225052?v=3","gravatar_id":"","url":"https://api.github.com/users/gmilos","html_url":"https://github.com/gmilos","followers_url":"https://api.github.com/users/gmilos/followers","following_url":"https://api.github.com/users/gmilos/following{/other_user}","gists_url":"https://api.github.com/users/gmilos/gists{/gist_id}","starred_url":"https://api.github.com/users/gmilos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmilos/subscriptions","organizations_url":"https://api.github.com/users/gmilos/orgs","repos_url":"https://api.github.com/users/gmilos/repos","events_url":"https://api.github.com/users/gmilos/events{/privacy}","received_events_url":"https://api.github.com/users/gmilos/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gmilos/swift","description":"The Swift Programming Language","fork":true,"url":"https://api.github.com/repos/gmilos/swift","forks_url":"https://api.github.com/repos/gmilos/swift/forks","keys_url":"https://api.github.com/repos/gmilos/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gmilos/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gmilos/swift/teams","hooks_url":"https://api.github.com/repos/gmilos/swift/hooks","issue_events_url":"https://api.github.com/repos/gmilos/swift/issues/events{/number}","events_url":"https://api.github.com/repos/gmilos/swift/events","assignees_url":"https://api.github.com/repos/gmilos/swift/assignees{/user}","branches_url":"https://api.github.com/repos/gmilos/swift/branches{/branch}","tags_url":"https://api.github.com/repos/gmilos/swift/tags","blobs_url":"https://api.github.com/repos/gmilos/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gmilos/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gmilos/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/gmilos/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gmilos/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/gmilos/swift/languages","stargazers_url":"https://api.github.com/repos/gmilos/swift/stargazers","contributors_url":"https://api.github.com/repos/gmilos/swift/contributors","subscribers_url":"https://api.github.com/repos/gmilos/swift/subscribers","subscription_url":"https://api.github.com/repos/gmilos/swift/subscription","commits_url":"https://api.github.com/repos/gmilos/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/gmilos/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/gmilos/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/gmilos/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/gmilos/swift/contents/{+path}","compare_url":"https://api.github.com/repos/gmilos/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gmilos/swift/merges","archive_url":"https://api.github.com/repos/gmilos/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gmilos/swift/downloads","issues_url":"https://api.github.com/repos/gmilos/swift/issues{/number}","pulls_url":"https://api.github.com/repos/gmilos/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/gmilos/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/gmilos/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gmilos/swift/labels{/name}","releases_url":"https://api.github.com/repos/gmilos/swift/releases{/id}","deployments_url":"https://api.github.com/repos/gmilos/swift/deployments","created_at":"2016-08-24T17:33:00Z","updated_at":"2016-08-24T17:33:24Z","pushed_at":"2016-08-24T17:47:40Z","git_url":"git://github.com/gmilos/swift.git","ssh_url":"git@github.com:gmilos/swift.git","clone_url":"https://github.com/gmilos/swift.git","svn_url":"https://github.com/gmilos/swift","homepage":"https://swift.org/","size":118192,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apple:master","ref":"master","sha":"9c943f0c4952188e5526eef24e967f759f6b29b3","user":{"login":"apple","id":10639145,"avatar_url":"https://avatars.githubusercontent.com/u/10639145?v=3","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"repo":{"id":44838949,"name":"swift","full_name":"apple/swift","owner":{"login":"apple","id":10639145,"avatar_url":"https://avatars.githubusercontent.com/u/10639145?v=3","gravatar_id":"","url":"https://api.github.com/users/apple","html_url":"https://github.com/apple","followers_url":"https://api.github.com/users/apple/followers","following_url":"https://api.github.com/users/apple/following{/other_user}","gists_url":"https://api.github.com/users/apple/gists{/gist_id}","starred_url":"https://api.github.com/users/apple/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apple/subscriptions","organizations_url":"https://api.github.com/users/apple/orgs","repos_url":"https://api.github.com/users/apple/repos","events_url":"https://api.github.com/users/apple/events{/privacy}","received_events_url":"https://api.github.com/users/apple/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apple/swift","description":"The Swift Programming Language","fork":false,"url":"https://api.github.com/repos/apple/swift","forks_url":"https://api.github.com/repos/apple/swift/forks","keys_url":"https://api.github.com/repos/apple/swift/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apple/swift/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apple/swift/teams","hooks_url":"https://api.github.com/repos/apple/swift/hooks","issue_events_url":"https://api.github.com/repos/apple/swift/issues/events{/number}","events_url":"https://api.github.com/repos/apple/swift/events","assignees_url":"https://api.github.com/repos/apple/swift/assignees{/user}","branches_url":"https://api.github.com/repos/apple/swift/branches{/branch}","tags_url":"https://api.github.com/repos/apple/swift/tags","blobs_url":"https://api.github.com/repos/apple/swift/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apple/swift/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apple/swift/git/refs{/sha}","trees_url":"https://api.github.com/repos/apple/swift/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apple/swift/statuses/{sha}","languages_url":"https://api.github.com/repos/apple/swift/languages","stargazers_url":"https://api.github.com/repos/apple/swift/stargazers","contributors_url":"https://api.github.com/repos/apple/swift/contributors","subscribers_url":"https://api.github.com/repos/apple/swift/subscribers","subscription_url":"https://api.github.com/repos/apple/swift/subscription","commits_url":"https://api.github.com/repos/apple/swift/commits{/sha}","git_commits_url":"https://api.github.com/repos/apple/swift/git/commits{/sha}","comments_url":"https://api.github.com/repos/apple/swift/comments{/number}","issue_comment_url":"https://api.github.com/repos/apple/swift/issues/comments{/number}","contents_url":"https://api.github.com/repos/apple/swift/contents/{+path}","compare_url":"https://api.github.com/repos/apple/swift/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apple/swift/merges","archive_url":"https://api.github.com/repos/apple/swift/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apple/swift/downloads","issues_url":"https://api.github.com/repos/apple/swift/issues{/number}","pulls_url":"https://api.github.com/repos/apple/swift/pulls{/number}","milestones_url":"https://api.github.com/repos/apple/swift/milestones{/number}","notifications_url":"https://api.github.com/repos/apple/swift/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apple/swift/labels{/name}","releases_url":"https://api.github.com/repos/apple/swift/releases{/id}","deployments_url":"https://api.github.com/repos/apple/swift/deployments","created_at":"2015-10-23T21:15:07Z","updated_at":"2016-08-27T02:42:58Z","pushed_at":"2016-08-27T03:05:57Z","git_url":"git://github.com/apple/swift.git","ssh_url":"git@github.com:apple/swift.git","clone_url":"https://github.com/apple/swift.git","svn_url":"https://github.com/apple/swift","homepage":"https://swift.org/","size":177901,"stargazers_count":33424,"watchers_count":33424,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4703,"mirror_url":null,"open_issues_count":80,"forks":4703,"open_issues":80,"watchers":33424,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apple/swift/pulls/4479"},"html":{"href":"https://github.com/apple/swift/pull/4479"},"issue":{"href":"https://api.github.com/repos/apple/swift/issues/4479"},"comments":{"href":"https://api.github.com/repos/apple/swift/issues/4479/comments"},"review_comments":{"href":"https://api.github.com/repos/apple/swift/pulls/4479/comments"},"review_comment":{"href":"https://api.github.com/repos/apple/swift/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apple/swift/pulls/4479/commits"},"statuses":{"href":"https://api.github.com/repos/apple/swift/statuses/41e6a0e9c5cc3fc295430e74ff17be5dc3bd21c9"}}}}
{"actor":{"display_login":"modocache"}}