BB Unix Network Monitor - Message

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

Re: {bb} problem monitoring kpop after upgrade, is buggy bbnet




}> There has been changes to the timeout handling but they both use the 3, 5,
}> 12 approach, the difference between the versions is that 1.2b has a bug
}> in handling timeouts when not receiving any data. :)
}> 
}> Sean/Rob, it looks like Tracy found a bug in bbnet, this patch will fix
}> the problem:

}I'm not sure but I'm open to all comments...

}I've look at the previous messages to this thread and something caught
}my eye:
}
}I'm not sure if that's it:
}# time /local2/bb-1.09b/bin/bbnet mailhub:1109
}0.013u 0.016s 0:03.14 0.6% 0+1k 0+0io 0pf+0w
}              ^^^^^^^
}# time /local2/bb-1.2b/bin/bbnet mailhub:1109
}bbnet: TIMEOUT mailhub PORT 1109...
}0.003u 0.018s 0:20.04 0.0% 0+2k 0+0io 0pf+0w
}              ^^^^^^^

}Is this elapsed ?

Yes, sorry, I should have included the format time uses for my setup.

}If so, then it makes some sense,

}1.09b would only go thru a 3seconds delay and quit while the 1.2b
}would go thru the 3, 5 and 12 seconds delay for 20 seconds.

}Now why would the 1.09b take only one 3 second delay ?  hummmm, let's
}see:
}
}in bbnet.c on 1.09b, the variable cnt is defined in timeout() as
}
}static int cnt;
}
}Maybe it wasn't initialized with 0 upon execution of the code.  So if
}cnt >
}2 at program startup (compiler SHOULD have initialized to 0 but there
}might also be a bug in the compiler ...) then in the 1.09b version the
}timeout() function would only be called once:
}
}1.09b bbnet.c
}
}timeout()
}{
}        static int cnt;
}        ^^^^^^^^^^^^^^^  cnt should be 0 at startup
}
}        cnt++;
}        ^^^^^^  if cnt is initialized with > 2
}        if (cnt == 1) timer = 5;
}        else if(cnt == 2) timer = 12;
}        else {
}        ^^^^^^^^^^^ then it would jump to this else immediately and
}        ^^^^^^^^^^^  report an elapsed time of 3 seconds...  cause 
}        ^^^^^^^^^^^  timer 5 & 12 were skipped
}                fprintf(stderr, "bbnet: TIMEOUT %s PORT %d...\n",
}machine, port);
}                exit(3);
}        }
}        longjmp(env,1);
}}
}
}> 245c245
}> <       if (setjmp(env) != 0) {
}> ---
}> >       if (setjmp(env) != 0) { /* RETURN OK BUT INCLUDE MESSAGE */
}> 247,248c247,248
}> <                 debug("SETTING TIMER TO %d\n", timer);
}> <               if (timer == 99) return(99);
}> ---
}> >               printf("*** bbnet: Stop waiting for server data\n");
}> >               return(0);              /* PRETEND IT'S OK */
}
}That's my take on it.
}
}I think the bug was in 1.09b returning too quickly and that
}version 1.2b behaves correctly but I could be wrong ;)
}
}Tracy,  in the 1.09b code can you change
}
}static int cnt;
}
}	to
}
}static int cnt = 0;
}
}recompile and try the bbnet test again, let us know the result

# time ./bbnet mailhub:1109
0.003u 0.016s 0:03.06 0.3% 0+1k 0+0io 0pf+0w

}You could even have a printf("\ncnt = %d\n",cnt); as the
}first statement in the timeout function just to make sure
}what the value of cnt is... maybe do it before the = 0 change
}to confirm the bug on 1.09b (well, sometimes printf will mask
}bugs also so I wouldn't rely on it...)

Nothing extra prints out:
# time ./bbnet mailhub:1109
0.003u 0.014s 0:03.06 0.3% 0+1k 0+0io 0pf+0w

Tracy J. Di Marco White
Project Vincent Systems Manager
gendalia@iastate.edu
-
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=
To unsubscribe from this list, or to subscribe to the bb-digest list
send e-mail to mailto:majordomo@bb4.com with unsubscribe bb -and/or-
subscribe bb-digest in the BODY of the message.


Home | Main Index | Thread Index