Date: Wed, 23 Apr 2014 09:30:32 GMT From: "Ivan A. Kosarev" <ikosarev@accesssoftek.com> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/188911: sysctl(KERN_PROC_VMMAP) takes too long Message-ID: <201404230930.s3N9UWV2088429@cgiserv.freebsd.org> Resent-Message-ID: <201404230940.s3N9e1Fw026466@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 188911
>Category: misc
>Synopsis: sysctl(KERN_PROC_VMMAP) takes too long
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Apr 23 09:40:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator: Ivan A. Kosarev
>Release: 10.0
>Organization:
Access Softek, Inc
>Environment:
FreeBSD fbsd10.unicals.com 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
With a mmap() call with a large 'size' parameter a subsequent sysctl(KERN_PROC_VMMAP) call takes too long to perform.
>How-To-Repeat:
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <dlfcn.h>
#include <fcntl.h>
#include <sys/sysctl.h>
#include <sys/user.h>
#include <sys/mman.h>
int main(void)
{
int mib[4];
size_t size;
int err;
void *p;
printf("#1\n");
p = mmap((void*) 0x3ffffffff000, 0x80000001000,
PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE,
-1, 0);
assert(p != MAP_FAILED);
printf("#2\n");
mib[0] = CTL_KERN;
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_VMMAP;
mib[3] = getpid();
size = 0;
err = sysctl(mib, 4, NULL, &size, NULL, 0); /* takes about 40 seconds */
assert(err == 0);
printf("#3\n");
return EXIT_SUCCESS;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404230930.s3N9UWV2088429>
