|
From: <sv...@va...> - 2006-07-27 23:12:22
|
Author: sewardj
Date: 2006-07-28 00:12:17 +0100 (Fri, 28 Jul 2006)
New Revision: 5990
Log:
When doing leak checks, don't poke around in device segments as this
may hang the entire machine. (Tom Hughes).
Modified:
trunk/memcheck/mc_leakcheck.c
Modified: trunk/memcheck/mc_leakcheck.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/mc_leakcheck.c 2006-07-24 10:14:37 UTC (rev 5989)
+++ trunk/memcheck/mc_leakcheck.c 2006-07-27 23:12:17 UTC (rev 5990)
@@ -763,6 +763,21 @@
continue;
if (seg->isCH)
continue;
+
+ /* Don't poke around in device segments as this may cause
+ hangs. Exclude /dev/zero just in case someone allocated
+ memory by explicitly mapping /dev/zero. */
+ if (seg->kind =3D=3D SkFileC=20
+ && (VKI_S_ISCHR(seg->mode) || VKI_S_ISBLK(seg->mode))) {
+ HChar* dev_name =3D VG_(am_get_filename)( seg );
+ if (dev_name && 0 =3D=3D VG_(strcmp)(dev_name, "/dev/zero")) =
{
+ /* don't skip /dev/zero */
+ } else {
+ /* skip this device mapping */
+ continue;
+ }
+ }
+
if (0)
VG_(printf)("ACCEPT %2d %p %p\n", i, seg->start, seg->end);
lc_scan_memory(seg->start, seg->end+1 - seg->start);
|