From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ken Brown Newsgroups: gmane.emacs.bugs Subject: bug#20843: 24.5; Profiler error: "Invalid sampling interval" Date: Sun, 21 Jun 2015 18:17:27 -0400 Message-ID: <558737F7.4080709@cornell.edu> References: <83k2v1l7g4.fsf@gnu.org> <5585B8C4.1050204@cornell.edu> <83r3p6i4b1.fsf@gnu.org> <5585DF69.7090008@cornell.edu> <83oak9hzzs.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1434925106 10803 80.91.229.3 (21 Jun 2015 22:18:26 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 21 Jun 2015 22:18:26 +0000 (UTC) Cc: sva-news@mygooglest.com, 20843@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jun 22 00:18:15 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Z6nZ5-0006l9-EI for geb-bug-gnu-emacs@m.gmane.org; Mon, 22 Jun 2015 00:18:11 +0200 Original-Received: from localhost ([::1]:37459 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z6nZ4-0000ap-KC for geb-bug-gnu-emacs@m.gmane.org; Sun, 21 Jun 2015 18:18:10 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35538) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z6nZ1-0000Zt-N6 for bug-gnu-emacs@gnu.org; Sun, 21 Jun 2015 18:18:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z6nYw-0007Mq-Sg for bug-gnu-emacs@gnu.org; Sun, 21 Jun 2015 18:18:07 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:52221) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z6nYw-0007Mm-Ox for bug-gnu-emacs@gnu.org; Sun, 21 Jun 2015 18:18:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Z6nYw-0003gd-79 for bug-gnu-emacs@gnu.org; Sun, 21 Jun 2015 18:18:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ken Brown Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 21 Jun 2015 22:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20843 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20843-submit@debbugs.gnu.org id=B20843.143492506214141 (code B ref 20843); Sun, 21 Jun 2015 22:18:02 +0000 Original-Received: (at 20843) by debbugs.gnu.org; 21 Jun 2015 22:17:42 +0000 Original-Received: from localhost ([127.0.0.1]:53667 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z6nYb-0003g0-8B for submit@debbugs.gnu.org; Sun, 21 Jun 2015 18:17:41 -0400 Original-Received: from limerock02.mail.cornell.edu ([128.84.13.242]:42343) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z6nYY-0003fm-EY for 20843@debbugs.gnu.org; Sun, 21 Jun 2015 18:17:39 -0400 X-CornellRouted: This message has been Routed already. Original-Received: from authusersmtp.mail.cornell.edu (granite3.serverfarm.cornell.edu [10.16.197.8]) by limerock02.mail.cornell.edu (8.14.4/8.14.4_cu) with ESMTP id t5LMHWda022835; Sun, 21 Jun 2015 18:17:32 -0400 Original-Received: from [192.168.1.4] (cpe-67-249-176-138.twcny.res.rr.com [67.249.176.138]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.14.4/8.12.10) with ESMTP id t5LMHTIC005724 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sun, 21 Jun 2015 18:17:30 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 In-Reply-To: <83oak9hzzs.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:104199 Archived-At: On 6/21/2015 10:56 AM, Eli Zaretskii wrote: >> Date: Sat, 20 Jun 2015 17:47:21 -0400 >> From: Ken Brown >> CC: sva-news@mygooglest.com, 20843@debbugs.gnu.org >> >>> Then I guess the configure-time test for setitimer should also test >>> for ITIMER_PROF. >> >> I'd be glad to give this a try, but I don't have any experience writing >> autoconf macros. Is there a standard macro to test whether a function >> accepts a particular argument? If not, can you (or anyone) point me to >> an example that I can imitate? > > Actually, perhaps I misunderstood you: are you saying that Cygwin does > have ITIMER_PROF defined in the appropriate header, but when setitimer > is called with it, it always fails? Yes. > If so, we cannot test this at > configure time, because it means we will have to run a program, which > is not a good idea. > > So in that case, I think we should simply disable the CPU profiler on > Cygwin using "#ifndef __CYGWIN__" or some such. Done as commit 5fac0de. >>> Also, the diagnostics should be improved, as the >>> wording is misleading in that case. >> >> As it stands, profiler-cpu-start reports "Invalid sampling interval" >> whenever setup_cpu_timer fails to start the timer, regardless of the >> reason. I'll try to improve this. > > Yes, please. How's this: --- a/src/profiler.c +++ b/src/profiler.c @@ -250,6 +250,8 @@ deliver_profiler_signal (int signal) deliver_process_signal (signal, handle_profiler_signal); } +static bool sampling_interval_ok; + static enum profiler_cpu_running setup_cpu_timer (Lisp_Object sampling_interval) { @@ -258,11 +260,13 @@ setup_cpu_timer (Lisp_Object sampling_interval) struct timespec interval; int billion = 1000000000; - if (! RANGED_INTEGERP (1, sampling_interval, - (TYPE_MAXIMUM (time_t) < EMACS_INT_MAX / billion - ? ((EMACS_INT) TYPE_MAXIMUM (time_t) * billion - + (billion - 1)) - : EMACS_INT_MAX))) + sampling_interval_ok = + RANGED_INTEGERP (1, sampling_interval, + (TYPE_MAXIMUM (time_t) < EMACS_INT_MAX / billion + ? ((EMACS_INT) TYPE_MAXIMUM (time_t) * billion + + (billion - 1)) + : EMACS_INT_MAX)); + if (! sampling_interval_ok) return NOT_RUNNING; current_sampling_interval = XINT (sampling_interval); @@ -338,7 +342,12 @@ See also `profiler-log-size' and `profiler-max-stack-depth'. */) profiler_cpu_running = setup_cpu_timer (sampling_interval); if (! profiler_cpu_running) - error ("Invalid sampling interval"); + { + if (! sampling_interval_ok) + error ("Invalid sampling interval"); + else + error ("Unable to start profiler timer"); + } return Qt; } Ken