1. When we crash on a page, we want to check what happened on this page instead of skipping this page by try-except block. Thus, removing the try-except block. 2. Remove redundant comma and print the task name properly.
Unified · Split
| @@ -122,27 +122,24 @@ class DumpPageOwner(gdb.Command): · 121 unmodified lines | ||
| 122 | 122 | if not (page_ext['flags'] & (1 << PAGE_EXT_OWNER_ALLOCATED)): |
| 123 | 123 | gdb.write("page_owner is not allocated\n") |
| 124 | 124 | |
| 125 | − try: | |
| 126 | − page_owner = self.get_page_owner(page_ext) | |
| 127 | − gdb.write("Page last allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\ | |
| 128 | − (page_owner["order"], page_owner["gfp_mask"],\ | |
| 129 | − page_owner["pid"], page_owner["tgid"], page_owner["comm"],\ | |
| 130 | − page_owner["ts_nsec"], page_owner["free_ts_nsec"])) | |
| 131 | − gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags'])) | |
| 132 | − if page_owner["handle"] == 0: | |
| 133 | − gdb.write('page_owner allocation stack trace missing\n') | |
| 134 | − else: | |
| 135 | − stackdepot.stack_depot_print(page_owner["handle"]) | |
| 125 | + page_owner = self.get_page_owner(page_ext) | |
| 126 | + gdb.write("Page last allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\ | |
| 127 | + (page_owner["order"], page_owner["gfp_mask"],\ | |
| 128 | + page_owner["pid"], page_owner["tgid"], page_owner["comm"].string(),\ | |
| 129 | + page_owner["ts_nsec"], page_owner["free_ts_nsec"])) | |
| 130 | + gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags'])) | |
| 131 | + if page_owner["handle"] == 0: | |
| 132 | + gdb.write('page_owner allocation stack trace missing\n') | |
| 133 | + else: | |
| 134 | + stackdepot.stack_depot_print(page_owner["handle"]) | |
| 136 | 135 | |
| 137 | − if page_owner["free_handle"] == 0: | |
| 138 | − gdb.write('page_owner free stack trace missing\n') | |
| 139 | − else: | |
| 140 | − gdb.write('page last free stack trace:\n') | |
| 141 | − stackdepot.stack_depot_print(page_owner["free_handle"]) | |
| 142 | − if page_owner['last_migrate_reason'] != -1: | |
| 143 | − gdb.write('page has been migrated, last migrate reason: %s\n' % self.migrate_reason_names[page_owner['last_migrate_reason']]) | |
| 144 | − except: | |
| 145 | − gdb.write("\n") | |
| 136 | + if page_owner["free_handle"] == 0: | |
| 137 | + gdb.write('page_owner free stack trace missing\n') | |
| 138 | + else: | |
| 139 | + gdb.write('page last free stack trace:\n') | |
| 140 | + stackdepot.stack_depot_print(page_owner["free_handle"]) | |
| 141 | + if page_owner['last_migrate_reason'] != -1: | |
| 142 | + gdb.write('page has been migrated, last migrate reason: %s\n' % self.migrate_reason_names[page_owner['last_migrate_reason']]) | |
| 146 | 143 | |
| 147 | 144 | def read_page_owner(self): |
| 148 | 145 | pfn = self.min_pfn |
| @@ -173,18 +170,13 @@ class DumpPageOwner(gdb.Command): · 24 unmodified lines | ||
| 173 | 170 | pfn += 1 |
| 174 | 171 | continue |
| 175 | 172 | |
| 176 | − try: | |
| 177 | − page_owner = self.get_page_owner(page_ext) | |
| 178 | − gdb.write("Page allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\ | |
| 179 | − (page_owner["order"], page_owner["gfp_mask"],\ | |
| 180 | − page_owner["pid"], page_owner["tgid"], page_owner["comm"],\ | |
| 181 | − page_owner["ts_nsec"], page_owner["free_ts_nsec"])) | |
| 182 | − gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags'])) | |
| 183 | − stackdepot.stack_depot_print(page_owner["handle"]) | |
| 184 | − pfn += (1 << page_owner["order"]) | |
| 185 | − continue | |
| 186 | − except: | |
| 187 | − gdb.write("\n") | |
| 188 | − pfn += 1 | |
| 173 | + page_owner = self.get_page_owner(page_ext) | |
| 174 | + gdb.write("Page allocated via order %d, gfp_mask: 0x%x, pid: %d, tgid: %d (%s), ts %u ns, free_ts %u ns\n" %\ | |
| 175 | + (page_owner["order"], page_owner["gfp_mask"],\ | |
| 176 | + page_owner["pid"], page_owner["tgid"], page_owner["comm"].string(),\ | |
| 177 | + page_owner["ts_nsec"], page_owner["free_ts_nsec"])) | |
| 178 | + gdb.write("PFN: %d, Flags: 0x%x\n" % (pfn, page['flags'])) | |
| 179 | + stackdepot.stack_depot_print(page_owner["handle"]) | |
| 180 | + pfn += (1 << page_owner["order"]) | |
| 189 | 181 | |
| 190 | 182 | DumpPageOwner() |
| @@ -228,8 +228,7 @@ def slabtrace(alloc, cache_name): · 227 unmodified lines | ||
| 228 | 228 | nr_cpu = gdb.parse_and_eval('__num_online_cpus')['counter'] |
| 229 | 229 | if nr_cpu > 1: |
| 230 | 230 | gdb.write(" cpus=") |
| 231 | − for i in loc['cpus']: | |
| 232 | − gdb.write("%d," % i) | |
| 231 | + gdb.write(','.join(str(cpu) for cpu in loc['cpus'])) | |
| 233 | 232 | gdb.write("\n") |
| 234 | 233 | if constants.LX_CONFIG_STACKDEPOT: |
| 235 | 234 | if loc['handle']: |