I've finally narrowed down the source of the bug where
hardware-monitor uses 2GB of RAM and 100% CPU, and has to be
killed.

The backtrace always showed it to be in 
    line->property_fill_color_rgba() = color;
in Curve::draw(), which didn't make any sense because
line->points() was never set to more than 34 points.

Here is a trace of the output: value_history.values contains
1.8e+19 (all other values are ~ 1e07), and max = 1e-06 (I guess it
was 0 or negative).  Thereafter points gets some crazy values,
e.g. (65.8, -3.551e+26) followed by (63.8, -2.13586e+14).

Now that I've gotten this far I figure it should be easy to
reproduce :) Just play back the values to a CurveView monitor.  

It looks to me like a chain of bugs triggered by an unlikely
scenario: 1. The value shouldn't be 2e19 in the first place (is
this bytes/sec?) - possible glibtop bug. 2. A huge number like
that shouldn't confuse hardware-monitor. 3. Weird point values
like that shouldn't corrupt memory - possible bug in
libgnomecanvas or libart.


hardware-monitor debug # 18264
  Monitor: Eth. 1 (Ethernet (first))

values (34):
    1.84467e+19
    1.10954e+07
    1.0973e+07
    1.10938e+07
    1.12003e+07
    1.10197e+07
    1.10458e+07
    1.0987e+07
    1.12158e+07
    1.1124e+07
    1.12816e+07
    1.10643e+07
    1.11833e+07
    1.10957e+07
    1.11778e+07
    1.09945e+07
    1.12144e+07
    1.10695e+07
    1.12187e+07
    1.11084e+07
    1.10673e+07
    1.10522e+07
    1.10682e+07
    1.11573e+07
    1.12827e+07
    1.11648e+07
    1.11065e+07
    1.13194e+07
    1.10678e+07
    1.12579e+07
    1.10514e+07
    1.08507e+07
    1.11317e+07
    1.12981e+07
time_offset = 0.9
line already initialized.
monitor->max = 1e-06

points (34):
    (65.8, -3.551e+26)
    (63.8, -2.13586e+14)
    (61.8, -2.1123e+14)
    (59.8, -2.13555e+14)
    (57.8, -2.15606e+14)
    (55.8, -2.12129e+14)
    (53.8, -2.12632e+14)
    (51.8, -2.115e+14)
    (49.8, -2.15903e+14)
    (47.8, -2.14136e+14)
    (45.8, -2.17171e+14)
    (43.8, -2.12987e+14)
    (41.8, -2.15278e+14)
    (39.8, -2.13593e+14)
    (37.8, -2.15173e+14)
    (35.8, -2.11643e+14)
    (33.8, -2.15877e+14)
    (31.8, -2.13088e+14)
    (29.8, -2.15961e+14)
    (27.8, -2.13836e+14)
    (25.8, -2.13046e+14)
    (23.8, -2.12755e+14)
    (21.8, -2.13062e+14)
    (19.8, -2.14778e+14)
    (17.8, -2.17193e+14)
    (15.8, -2.14923e+14)
    (13.8, -2.138e+14)
    (11.8, -2.17899e+14)
    (9.8, -2.13055e+14)
    (7.8, -2.16714e+14)
    (5.8, -2.12739e+14)
    (3.8, -2.08875e+14)
    (1.8, -2.14285e+14)
    (-0.2, -2.17488e+14)


Attachment: hardware-monitor-trace.tar.gz
Description: Binary data


-- 
Karl 2006-04-11 23:12

Reply via email to