octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #35553] Assertion `last_time >= 0.0 && last_ti


From: anonymous
Subject: [Octave-bug-tracker] [bug #35553] Assertion `last_time >= 0.0 && last_time <= t' failed
Date: Fri, 17 Feb 2012 15:15:05 +0000
User-agent: Mozilla/5.0 (X11; Linux i686; rv:9.0.1) Gecko/20100101 Firefox/9.0.1

URL:
  <http://savannah.gnu.org/bugs/?35553>

                 Summary: Assertion `last_time >= 0.0 && last_time <= t'
failed
                 Project: GNU Octave
            Submitted by: None
            Submitted on: Fri 17 Feb 2012 03:15:03 PM UTC
                Category: Interpreter
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Crash
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: address@hidden
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 3.6.0
        Operating System: GNU/Linux

    _______________________________________________________

Details:

Profiler frequently crushes on our private program.


Error message:
octave: profiler.cc:400: void profile_data_accumulator::add_current_time():
Assertion `last_time >= 0.0 && last_time <= t' failed.


We have make some modifications to source code to refine the problem better:


--- src/profiler.cc.orig        2012-02-17 18:48:18.000000000 +0400
+++ src/profiler.cc     2012-02-17 19:02:48.000000000 +0400
@@ -397,6 +397,10 @@
 profile_data_accumulator::add_current_time (void)
 {
   const double t = query_time ();
+  if (last_time > t) {
+       printf("last time %10.16Lf t %10.16Lf delta %.20g\n", (long
double)last_time, (long double)t, last_time - t);
+       printf("last time %10.16Lf t %10.16Lf delta %.20g\n", (long
double)last_time, (long double)t, last_time - t);
+  }
   assert (last_time >= 0.0 && last_time <= t);
 
   assert (call_tree && active_fcn != call_tree);


That results in the following output (note that the assertion failure
disappeared):


last time 1329491053.8831980228424072 t 1329491053.8831980000250041 delta
2.2817403078079223633e-08
last time 1329491053.8831980228424072 t 1329491053.8831980228424072 delta 0
...
last time 1329491061.6747350692749023 t 1329491061.6747350000077859 delta
6.92671164870262146e-08
last time 1329491061.6747350692749023 t 1329491061.6747350692749023 delta 0


We hope the data above show that the problem is related to long double ->
double conversion. Please note that delta has not many 1's in binary
representation, which hits that it is related to excess of long double over
double precision. Please note that the effective value of t changes after
invocation of printf.

Our versions:
octave-3.6.0 (./configure && make && ./run-octave -q our-private-program);
Gentoo Linux 2.6.39-gentoo-r3 i686 Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz
GenuineIntel GNU/Linux




    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?35553>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]