Your message dated Mon, 24 Aug 2015 14:27:00 +0000
with message-id <[email protected]>
and subject line Re: rrdtool: Segfault on data in far futur
has caused the Debian Bug report #715220,
regarding rrdtool: Segfault on data in far futur
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
715220: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=715220
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: rrdtool
Version: 1.4.7-2
Severity: minor

Dear Maintainer,

I attach a python script to quickly setup the rrd archieve in current directory
(requires python-rrdtool). To get a segfault just run the script with
"python crash_rrd.py"
and then
"rrdtool fetch test.rrd AVERAGE".

The problem is in type of RRA I use in line 14:
'RRA:AVERAGE:0.5:1:36500'
It means that last entry will be somewhere in 100 years.
If I use something that fits in unixtime (not 100 * 265, but 20 * 365),
everything works fine.

The script and gdb output attached.


-- System Information:
Debian Release: 7.1
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 3.8-1-686-pae (SMP w/2 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages rrdtool depends on:
ii  libc6          2.17-7
ii  libcairo2      1.12.2-3
ii  libdbi1        0.8.4-6
ii  libglib2.0-0   2.33.12+really2.32.4-5
ii  libpango1.0-0  1.30.0-1
ii  libpng12-0     1.2.49-4
ii  librrd4        1.4.7-2
ii  libxml2        2.8.0+dfsg1-7+nmu1

rrdtool recommends no packages.

Versions of packages rrdtool suggests:
pn  librrds-perl  <none>

-- no debconf information
import rrdtool, datetime, calendar

rrdtool.create('test.rrd', '--step', '86400',
                'DS:test:GAUGE:172800:0:U',
                'DS:test2:GAUGE:172800:0:U',
                'DS:test3:GAUGE:172800:0:U',
                'DS:test4:GAUGE:172800:0:U',
                'DS:test5:GAUGE:172800:0:U',
                'DS:test6:GAUGE:172800:0:U',
                'DS:test7:GAUGE:172800:0:U',
                'DS:test8:GAUGE:172800:0:U',
                'DS:test9:GAUGE:172800:0:U',
                'DS:test10:GAUGE:172800:0:U',
                'RRA:AVERAGE:0.5:1:36500')

now = datetime.datetime.now()
for i in range(365 * 20):
    time = calendar.timegm(now.timetuple())
    update_str = '{0}:{1}:2:3:4:5:6:7:8:9:{2}'.format(time, i, i)
    rrdtool.update('test.rrd', update_str)
    now += datetime.timedelta(days=1)
Starting program: /usr/bin/rrdtool fetch test.rrd AVERAGE
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library 
"/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
rrd_fetch_fn (filename=<optimized out>, filename@entry=0xbffff559 "test.rrd", 
cf_idx=CF_AVERAGE, start=start@entry=0xbffff1d8, end=end@entry=0xbffff1dc, 
    step=step@entry=0xbffff1e0, ds_cnt=ds_cnt@entry=0xbffff1e4, 
ds_namv=ds_namv@entry=0xbffff1f0, data=data@entry=0xbffff1e8) at rrd_fetch.c:415
415     rrd_fetch.c: Нет такого файла или каталога.
#0  rrd_fetch_fn (filename=<optimized out>, filename@entry=0xbffff559 
"test.rrd", cf_idx=CF_AVERAGE, start=start@entry=0xbffff1d8, 
end=end@entry=0xbffff1dc, 
    step=step@entry=0xbffff1e0, ds_cnt=ds_cnt@entry=0xbffff1e4, 
ds_namv=ds_namv@entry=0xbffff1f0, data=data@entry=0xbffff1e8) at rrd_fetch.c:415
        i = -18922
        ii = <optimized out>
        cal_start = <optimized out>
        cal_end = <optimized out>
        rra_start_time = -1149724800
        rra_end_time = 2003788800
        best_full_rra = 0
        best_part_rra = 0
        chosen_rra = 0
        rra_pointer = 5538
        best_full_step_diff = 2003788800
        best_part_step_diff = 0
        tmp_step_diff = <optimized out>
        tmp_match = <optimized out>
        best_match = 0
        full_match = <optimized out>
        rra_base = 3352
        start_offset = -18922
        end_offset = 7298
        first_full = 3352
        first_part = -1149724800
        rrd = {stat_head = 0xb6f55000, ds_def = 0xb6f55070, rra_def = 
0xb6f55520, live_head = 0xb6f5558c, legacy_last_up = 0x0, pdp_prep = 
0xb6f55594, 
          cdp_prep = 0xb6f559f4, rra_ptr = 0xb6f55d14, rrd_value = 0x0}
        rrd_file = 0x8050d28
        data_ptr = 0x8070000
        rows = <optimized out>
#1  0xb7f91470 in rrd_fetch_r (filename=0xbffff559 "test.rrd", cf=0xbffff562 
"AVERAGE", start=start@entry=0xbffff1d8, end=end@entry=0xbffff1dc, 
    step=step@entry=0xbffff1e0, ds_cnt=ds_cnt@entry=0xbffff1e4, 
ds_namv=ds_namv@entry=0xbffff1f0, data=data@entry=0xbffff1e8) at rrd_fetch.c:201
        cf_idx = <optimized out>
#2  0xb7f917bb in rrd_fetch (argc=argc@entry=3, argv=argv@entry=0xbffff3c8, 
start=start@entry=0xbffff1d8, end=end@entry=0xbffff1dc, 
step=step@entry=0xbffff1e0, 
    ds_cnt=ds_cnt@entry=0xbffff1e4, ds_namv=ds_namv@entry=0xbffff1f0, 
data=data@entry=0xbffff1e8) at rrd_fetch.c:176
        step_tmp = 1
        start_tmp = 1373085664
        end_tmp = 1373172064
        cf = <optimized out>
        opt_daemon = 0x0
        status = 0
        start_tv = {type = RELATIVE_TO_END_TIME, offset = -86400, tm = {tm_sec 
= 0, tm_min = 0, tm_hour = 0, tm_mday = 0, tm_mon = 0, tm_year = 0, tm_wday = 
0, 
            tm_yday = 187, tm_isdst = -1, tm_gmtoff = 18000, tm_zone = 
0x8050d08 "UZT"}}
        end_tv = {type = ABSOLUTE_TIME, offset = 0, tm = {tm_sec = 4, tm_min = 
41, tm_hour = 9, tm_mday = 7, tm_mon = 6, tm_year = 113, tm_wday = 0, tm_yday = 
187, 
            tm_isdst = 0, tm_gmtoff = 18000, tm_zone = 0x8050d08 "UZT"}}
        parsetime_error = <optimized out>
        long_options = {{name = 0xb7fb6399 "resolution", has_arg = 1, flag = 
0x0, val = 114}, {name = 0xb7fb71c1 "start", has_arg = 1, flag = 0x0, val = 
115}, {
            name = 0xb7fb71cd "end", has_arg = 1, flag = 0x0, val = 101}, {name 
= 0xb7fb50cf "daemon", has_arg = 1, flag = 0x0, val = 100}, {name = 0x0, 
has_arg = 0, 
            flag = 0x0, val = 0}}
#3  0x0804af05 in HandleInputLine (argc=argc@entry=4, 
argv=argv@entry=0xbffff3c4, out=0xb7af5980) at rrd_tool.c:693
        end = <optimized out>
        ii = <optimized out>
        ti = <optimized out>
        step = <optimized out>
        ds_cnt = <optimized out>
        data = <optimized out>
        start = <optimized out>
        i = <optimized out>
        datai = <optimized out>
        ds_namv = <optimized out>
        curdir = <optimized out>
        dent = <optimized out>
        st = {st_dev = 577881493259750456, __pad1 = 1, st_ino = 134548504, 
st_mode = 134548488, st_nlink = 134548472, st_uid = 134548456, st_gid = 
134548440, 
          st_rdev = 577873350001757128, __pad2 = 1616, st_size = 134547088, 
st_blksize = 134547576, st_blocks = 134547696, st_atim = {tv_sec = 134547920, 
            tv_nsec = -1214981816}, st_mtim = {tv_sec = 134547984, tv_nsec = 
134548040}, st_ctim = {tv_sec = 134548112, tv_nsec = 134548208}, __unused4 = 
134548272, 
          __unused5 = 134548320}
#4  0x08049303 in main (argc=4, argv=0xbffff3c4) at rrd_tool.c:523
        myargv = <optimized out>
        aLine = <optimized out>
        firstdir = 0x804ba4d ""
quit
A debugging session is active.

        Inferior 1 [process 7395] will be killed.

Quit anyway? (y or n) 

--- End Message ---
--- Begin Message ---
Source: rrdtool
Source-Version: 1.4.8-1

Boris Bobrov wrote:
> I attach a python script to quickly setup the rrd archieve in current 
> directory
> (requires python-rrdtool). To get a segfault just run the script with
> "python crash_rrd.py"
> and then
> "rrdtool fetch test.rrd AVERAGE".
> 
> The problem is in type of RRA I use in line 14:
> 'RRA:AVERAGE:0.5:1:36500'
> It means that last entry will be somewhere in 100 years.
> If I use something that fits in unixtime (not 100 * 265, but 20 * 365),
> everything works fine.
> 
> The script and gdb output attached.

It took me a while to understand that this only occurs on i386, but not
on amd64 (time_t overflow).

This has been fixed upstream in version 1.4.8. This fix is available on
Debian versions 1.4.8-1 and above.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

-- 
Nirgal

--- End Message ---

Reply via email to