summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag/pin_gr_stream.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/guest-diag/pin_gr_stream.py')
-rw-r--r--tools/guest-diag/pin_gr_stream.py11
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]