Luca et al:

There is still a periodic rrd crash.   The back trace I put in found this
(cleaned up from the log and annotated a bit):

01261 **ERROR** RRD: BACKTRACE: *****ntop error: Signal(11)
01263 **ERROR** RRD: BACKTRACE:  backtrace is:
01269 **ERROR** RRD: BACKTRACE:  1. /usr/local/bin/ntop [0x42028c48]
      **ERROR** RRD: BACKTRACE:  2. /usr/lib/librrd.so.0(rrd_free+0x1f)
[0x406fb28f]
            void rrd_free(rrd_t *rrd)
            {
                free(rrd->stat_head);
                free(rrd->ds_def);
                free(rrd->rra_def);
                free(rrd->live_head);
                free(rrd->rra_ptr);
                free(rrd->pdp_prep);
                free(rrd->cdp_prep);
                free(rrd->rrd_value);
                }
      **ERROR** RRD: BACKTRACE:  3. /usr/lib/librrd.so.0(rrd_update+0x9a)
[0x406fd55a]
            while (1) {
                static struct option long_options[] =
                {
                    {"template",      required_argument, 0, 't'},
                    {0,0,0,0}
                };
                int option_index = 0;
                int opt;
                opt = getopt_long(argc, argv, "t:",
                                  long_options, &option_index);

                if (opt == EOF)
                  break;

                switch(opt) {
                case 't':
                    template = optarg;
                    break;

                case '?':
                    rrd_set_error("unknown option '%s'",argv[optind-1]);
>>>>                rrd_free(&rrd);
                    return(-1);
                }
            }
      **ERROR** RRD: BACKTRACE:  4.
/usr/local/lib/ntop/plugins/rrdPlugin.so(strftime+0x26d5) [0x406db6d5]
      **ERROR** RRD: BACKTRACE:  5.
/usr/local/lib/ntop/plugins/rrdPlugin.so(updateCounter+0x19) [0x406dbd0d]
            void updateCounter(char *hostPath, char *key, Counter value) {
              updateRRD(hostPath, key, value, 1);
            }
      **ERROR** RRD: BACKTRACE:  6.
/usr/local/lib/ntop/plugins/rrdPlugin.so(updateTrafficCounter+0x34)
[0x406dbd60]
            void updateTrafficCounter(char *hostPath, char *key,
TrafficCounter *counter) {
              if(counter->modified) {
                updateCounter(hostPath, key, counter->value);
                counter->modified = 0;
              }
            }
      **ERROR** RRD: BACKTRACE:  7. /usr/local/lib/ntop/plugins/rrdPlugin.so
[0x406ddb02]
      **ERROR** RRD: BACKTRACE:  8. /lib/i686/libpthread.so.0 [0x402c2941]
      **ERROR** RRD: BACKTRACE:  9. /usr/local/bin/ntop(__clone+0x3a)
[0x420da1ca]

rrd is NOT INITIALIZED at the time it's freed...  In fact, that rrd_free()
line is COMMENTED OUT in the rrd cvs.


I think we're still, somehow, at fault for passing rrd bad data, but if we
fix this, rrdtool should be able to reject it instead of crashing.

???? The question is how do we fix a bug in rrdtool ????

Given that this is in the tip stable release  (1.0.41)


-----Burton

_______________________________________________
Ntop-dev mailing list
[EMAIL PROTECTED]
http://listgateway.unipi.it/mailman/listinfo/ntop-dev

Reply via email to