Re: perf script: rwtop: SIGALRM and pipe read race

From: David Ahern
Date: Mon Sep 17 2012 - 12:32:31 EST


On 9/17/12 10:02 AM, Arnaldo Carvalho de Melo wrote:
Em Mon, Sep 17, 2012 at 09:16:19AM -0600, David Ahern escreveu:
On 9/17/12 8:55 AM, David Ahern wrote:
2. the rwtop.pl script is not handling negative return values ($ret < 0)
properly -- the '$ret > 0' check is succeeding even though $ret is
negative (e.g., -EAGAIN) leading to astronomical read values

I think perl is treating $ret as an unsigned integer.

Again, I know little about perl, but this change to
./scripts/perl/rwtop.pl makes it behave properly:

my $n = sprintf("%d", $ret);

if ($n > 0) {
...

I think what you figured out makes sense, its the best we have and you
found it to get it back working, could you please send the two patches
properly signed-off, etc?

I'll do that for the readn.

The above change seems like a workaround - not a proper fix. Why is perl treating it like an unsigned int? The trace format for the read syscall shows long. How is the binding done for perl? I can't make heads or tails of it scanning the files under perl. If we are forced to do a hack like the above is there a better way? I tried (int) $ret and perl did not like that. Any other (better) options?

David

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/