Problem with smaps in 2.6.13-rc4-mm1

From: Torsten Foertsch
Date: Sat Aug 06 2005 - 02:18:12 EST


Hi,

when trying out smaps I have encountered the following problem:

> cat /proc/$P/smaps | diff - /proc/$P/smaps
239,241c239,241
< bfbaf000-bfbc4000 rw-p bfbaf000 00:00 0 [stack]
< Size: 84 kB
< Rss: 24 kB
---
> b7fc4000-b7fc6000 rwxp 00015000 08:02 12558 /lib/ld-2.3.4.so
> Size: 8 kB
> Rss: 8 kB
245c245
< Private_Dirty: 24 kB
---
> Private_Dirty: 8 kB

Further investigation shows that diff reads /proc/$P/smaps in 1 kB blocks as
do cat if stdout is a terminal. But if stdout is a pipe cat reads the file in
128 kB blocks.

The culprit is probably fs/proc/task_mmu.c:m_start(). I think it doesn't
properly convert the current file position.

Reading in blocks up to 3700 bytes yields the correct result. Higher block
sizes are wrong.

Is that a known problem?

Torsten

Attachment: pgp00000.pgp
Description: PGP signature