From 56927887249d8529afa57c38d7935edb2d9cc49f Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 22 Nov 2018 10:30:45 +0100 Subject: snap: be more conservative taking stack snapshot include up to 8k below the stack to get some more context. don't assume stack is at least 16K. --- sys/src/cmd/snap/take.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/src/cmd/snap/take.c b/sys/src/cmd/snap/take.c index 80ba72eed..3ef884fd8 100644 --- a/sys/src/cmd/snap/take.c +++ b/sys/src/cmd/snap/take.c @@ -20,7 +20,7 @@ sumr(ulong sum, void *buf, int n) return sum; } -static int npage; +static ulong npage; static Page *pgtab[1<<10]; Page* @@ -32,7 +32,7 @@ datapage(char *p, long len) int iszero; if(len > Pagesize) { - fprint(2, "datapage cannot handle pages > 1024\n"); + fprint(2, "datapage cannot handle pages > %d\n", Pagesize); exits("datapage"); } @@ -277,14 +277,14 @@ snap(long pid, int usetext) if(stacklen) { sp = stackptr(proc, fd); if(stackoff <= sp && sp < stackoff+stacklen) { - off = (sp - Pagesize) & ~(Pagesize - 1); - if(off < stackoff) - off = stackoff; - len = stacklen - (off - stackoff); + off = sp - 8*1024; } else { /* stack pointer not in segment. thread library? */ off = stackoff + stacklen - 16*1024; - len = 16*1024; } + off &= ~((uvlong)Pagesize-1); + if(off < stackoff) + off = stackoff; + len = stacklen - (off - stackoff); s[stacki] = readseg(fd, off, len, "Stack"); } -- cgit v1.2.3