Menu

#126 OverflowError: long int too large to convert to float

closed
nobody
crash (56)
2017-04-17
2016-01-04
No

Steps to reproduce:

  1. Create an empty numeric timeline
  2. Open it
  3. The error appears in the console

Here is example console output:

$ cat num.timeline 
<?xml version="1.0" encoding="utf-8"?>
<timeline>
  <version>1.9.0 development</version>
  <timetype>numtime</timetype>
  <categories>
  </categories>
  <events>
  </events>
  <view>
    <displayed_period>
      <start>0</start>
      <end>100</end>
    </displayed_period>
    <hidden_categories>
    </hidden_categories>
  </view>
</timeline>

$ ./source/timeline.py -c non-existing.cfg num.timeline 
Traceback (most recent call last):
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvas.py", line 226, in _on_size
    self.controller.window_resized()
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvascontroller.py", line 229, in window_resized
    self._redraw_timeline()
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvascontroller.py", line 538, in _redraw_timeline
    self.view.redraw_surface(fn_draw)
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvas.py", line 97, in redraw_surface
    fn_draw(memdc)
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvascontroller.py", line 526, in fn_draw
    self.drawing_algorithm.draw(dc, self.timeline, self.view_properties, self.config)
  File "./source/timelinelib/drawing/drawers/default.py", line 114, in draw
    self.scene = self._create_scene(dc.GetSizeTuple(), timeline, view_properties, self._get_text_extent)
  File "./source/timelinelib/drawing/drawers/default.py", line 126, in _create_scene
    scene.create()
  File "./source/timelinelib/drawing/scene.py", line 73, in create
    self.minor_strip_data, self.major_strip_data = self._calc_strips_sizes_and_positions()
  File "./source/timelinelib/drawing/scene.py", line 332, in _calc_strips_sizes_and_positions
    self.major_strip, self.minor_strip = self._db.get_time_type().choose_strip(self._metrics, self._config)
  File "./source/timelinelib/time/numtime.py", line 89, in choose_strip
    period_width = metrics.calc_exact_width(period)
  File "./source/timelinelib/drawing/utils.py", line 56, in calc_exact_width
    return (self.calc_exact_x(time_period.end_time) -
  File "./source/timelinelib/drawing/utils.py", line 39, in calc_exact_x
    delta1 = self.time_type.div_timedeltas(time - self.time_period.start_time,
OverflowError: long int too large to convert to float
Traceback (most recent call last):
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvas.py", line 226, in _on_size
    self.controller.window_resized()
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvascontroller.py", line 229, in window_resized
    self._redraw_timeline()
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvascontroller.py", line 538, in _redraw_timeline
    self.view.redraw_surface(fn_draw)
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvas.py", line 97, in redraw_surface
    fn_draw(memdc)
  File "./source/timelinelib/wxgui/components/canvas/timelinecanvascontroller.py", line 526, in fn_draw
    self.drawing_algorithm.draw(dc, self.timeline, self.view_properties, self.config)
  File "./source/timelinelib/drawing/drawers/default.py", line 114, in draw
    self.scene = self._create_scene(dc.GetSizeTuple(), timeline, view_properties, self._get_text_extent)
  File "./source/timelinelib/drawing/drawers/default.py", line 126, in _create_scene
    scene.create()
  File "./source/timelinelib/drawing/scene.py", line 73, in create
    self.minor_strip_data, self.major_strip_data = self._calc_strips_sizes_and_positions()
  File "./source/timelinelib/drawing/scene.py", line 332, in _calc_strips_sizes_and_positions
    self.major_strip, self.minor_strip = self._db.get_time_type().choose_strip(self._metrics, self._config)
  File "./source/timelinelib/time/numtime.py", line 89, in choose_strip
    period_width = metrics.calc_exact_width(period)
  File "./source/timelinelib/drawing/utils.py", line 56, in calc_exact_width
    return (self.calc_exact_x(time_period.end_time) -
  File "./source/timelinelib/drawing/utils.py", line 39, in calc_exact_x
    delta1 = self.time_type.div_timedeltas(time - self.time_period.start_time,
OverflowError: long int too large to convert to float

Discussion

  • roger lindberg

    roger lindberg - 2016-01-06

    I'm not able to reproduce this error.

     
  • Rickard Lindberg

    • status: open --> closed
     
  • Rickard Lindberg

    Fixed in

    # HG changeset patch
    # User Rickard Lindberg <ricli85@gmail.com>
    # Date 1492427272 -7200
    #      Mon Apr 17 13:07:52 2017 +0200
    # Node ID a0a79299cde584694b862ec1e2cfc2f60592894a
    # Parent  def71f6cf0086778b6bb217279ac38f175422385
    Problem: NumTimeType.choose_strip sometimes gives OverflowError and infinite loops.
    
    Solution: Change algorithm to avoid it.
    
     

Log in to post a comment.