diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/guest-diag/pin_gr_stream.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/guest-diag/pin_gr_stream.py b/tools/guest-diag/pin_gr_stream.py index de2e706..776b440 100644 --- a/tools/guest-diag/pin_gr_stream.py +++ b/tools/guest-diag/pin_gr_stream.py @@ -250,9 +250,16 @@ def _demand_loop(): # demand above). Harvest it so the guest resolves and # injects the page. r"|sema-pushdec: h=0x[0-9a-f]+ va=(0x[0-9a-f]+)" - r"[^\n]*unreadable=1", + r"[^\n]*unreadable=1" + # SESSION 153-CONTINUED-46: a big GL push whose trusted + # chain answered an all-zero page is the beef draw that + # never captures ("sema-pushzero: ... rescued=0"). The + # promote rescue inside the read may heal it; when it + # cannot, the guest content resolver is the last source - + # harvest the VA so it resolves and injects the real page. + r"|sema-pushzero: h=0x[0-9a-f]+ va=(0x[0-9a-f]+)", (r.stdout or "")[-200000:]): - va = int(m.group(1) or m.group(2), 16) + va = int(m.group(1) or m.group(2) or m.group(3), 16) track.setdefault(va, [now, 0.0]) for va in list(track): first, last = track[va] |
