sysdeps/posix/profil.c has timer.it_value.tv_sec = 0; timer.it_value.tv_usec = 1; timer.it_interval = timer.it_value; return __setitimer (ITIMER_PROF, &timer, otimer_ptr); That sets ITIMER_PROF with 1 microsecond interval. Kernel will try to deliver a SIGPROF signal every microsecond. Depending on other factors, a process may get anywhere from __profile_frequency () to 1000000 SIGPROF signals per second.
Subject: Bug 2268 CVSROOT: /cvs/glibc Module name: libc Changes by: roland@sources.redhat.com 2006-02-03 22:28:32 Modified files: sysdeps/posix : profil.c Log message: 2006-02-03 Roland McGrath <roland@redhat.com> [BZ #2268] * sysdeps/posix/profil.c (__profil): Use __profile_frequency to choose timer interval, don't assume smallest possible interval is it. Patches: http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/posix/profil.c.diff?cvsroot=glibc&r1=1.13&r2=1.14
Do you (H.J.) have a small testcase for this? I'm wanting to put one in the glibc tests.
I don't have a small testcase. The only thing I have needs icc and MKL.
According to the changelog entry this should be fixed.