From: Dmitry V. Levin Date: Tue, 16 Feb 2016 00:04:37 +0000 (+0000) Subject: Print unfetchable address in poll and ppoll decoders X-Git-Tag: v4.12~540 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ef9809b63479c3e91b1747b92680c7c86b14fce;p=strace Print unfetchable address in poll and ppoll decoders * poll.c (decode_poll_entering): Replace umove call with umove_or_printaddr. (decode_poll_exiting): Print unfetchable address when umove call fails. --- diff --git a/poll.c b/poll.c index 4c3f19ea..9dcaae22 100644 --- a/poll.c +++ b/poll.c @@ -82,10 +82,8 @@ decode_poll_entering(struct tcb *tcp) tprints("..."); break; } - if (umove(tcp, cur, &fds) < 0) { - tprints("???"); + if (umove_or_printaddr(tcp, cur, &fds)) break; - } print_pollfd(tcp, &fds); } @@ -134,7 +132,7 @@ decode_poll_exiting(struct tcb *tcp, const long pts) *outptr++ = '['; else outptr = stpcpy(outptr, ", "); - outptr = stpcpy(outptr, "???"); + outptr += sprintf(outptr, "%#lx", cur); break; } if (!fds.revents) @@ -154,8 +152,8 @@ decode_poll_exiting(struct tcb *tcp, const long pts) const char *flagstr = sprintflags("", pollflags, fds.revents); - if (outptr + strlen(fdstr) + strlen(flagstr) + 1 - >= end_outstr - sizeof(", ...], ...")) { + if (outptr + strlen(fdstr) + strlen(flagstr) + 1 >= + end_outstr - (2 + 2 * sizeof(long) + sizeof(", ], ..."))) { outptr = stpcpy(outptr, "..."); break; }