Hmmm, man seems a little broken too.

Peter Van Epp vanepp at sfu.ca
Thu Sep 21 23:34:15 EDT 2000


> 
> Hey Peter,
>    This is an interesting problem, as I'm not sure
> what Os's have the issue.  We use %Ld in our printf statements
> to get doubles out, but on some machines it needs to be
> %lld.  Is this FreeBSD?  You may want to go into
> ./common/argus_util.c, on line 286, or so, and change
> the %L's to %ll's and give that a try.  The argus
> data is fine, just the printf statement may need some adjustment.

	Yep that looks to be it. Despite no sign of "l" in either the man
page or the printf source replacing the "L" with "ll" makes it work correctly
(and yep this is FreeBSD4.1 RELEASE):

ra -r argus.log.test -n | grep man
21 Sep 00 17:13:19  man  pkts  48014  bytes        0  drops 3497815  CON

21 Sep 00 18:13:20  man  pkts  38887  bytes        0  drops 2858226  CON

21 Sep 00 19:13:20  man  pkts  37888  bytes        0  drops 2780003  CON

test2# /usr/local/src/argus-2.0.0g/bin/ra -r argus.log.test -n | grep man
21 Sep 00 17:13:19  man  pkts  48014  bytes  3497815  drops     0  CON

21 Sep 00 18:13:20  man  pkts  38887  bytes  2858226  drops     0  CON

21 Sep 00 19:13:20  man  pkts  37888  bytes  2780003  drops     0  CON

test2#
> 
>     On that gdb, did you compile argus_bpf with the -g
> option?

	Yep -g is in there (although the results don't look like it). I probably
know what this is as well, there is a rogue switch on that segment which has
a negotiation problem (one side half duplex the other side full duplex) which
is generating runt frames (8 to 11 bytes long) and I'll bet thats whats causing
the seg fault. 
	It looks to be in crt0 before main gets called:

(gdb) backtrace
#0  0x2811a3be in bcopy () from /usr/lib/libc.so.4
#1  0x0 in ?? ()
(gdb) l
93       *       parse out the command line options,
94       *       initalize the tasks and then loop.
95       *       Afterwards, it will delete all the tasks and exit();
96       *
97       */
98
99
100     int
101     main (int argc, char *argv[])
102     {
(gdb)

	I hadn't thought to do an "l" to see where it thought it was. From 
the symbol table it does think its in bcopy. I'll try tcpdump tomorrow and
see if I can get a sample that seg faults (and see if it is a fragment).

Peter Van Epp / Operations and Technical Support 
Simon Fraser University, Burnaby, B.C. Canada



More information about the argus mailing list