argusarchive (rasort) segfaulting

Peter Van Epp vanepp at sfu.ca
Wed Aug 10 15:05:08 EDT 2005


	Check for a per task memory rlimit. On FreeBSD you need to reconfig the
kernel to allow a process to use more than (I think) 512K of memory which is 
usually what bites rasort. Of course you can also usefully fix this problem
(and save some time) by commenting out rasort in argusarchive and only sort
if you really need to. I know we had to boost a kernel memory limit to give 
the ring buffer code a couple hundred meg buffer on Linux, but my post 
processing is still on FreeBSD (where the limit above has bitten me before).

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

On Wed, Aug 10, 2005 at 02:48:28PM -0400, Harry Hoffman wrote:
> Hi,
> 
> So, I'm not sure exactly how this happened... argusarchive and rasort have
> been working nicely for quite some time now. I began to notice that all of
> my archived files no longer had any data in them and so manually stepped
> through argusarchive to discover that it was a problem with rasort.
> 
> I'm running this on a Redhat AS3 box dual 3.6Ghz procs and 5Gb of memory.
> 
> The argus data file is ~ 600Mb in size.
> 
> It seems that ArgusCalloc() isn't too happy but I'm not quite sure why.
> 
> Any help would be greatly appreciated.
> 
> Thanks,
> Harry
> 
> 
> A clip of the code shows:
> void *
> ArgusCalloc (int nitems, int size)
> {
>    unsigned int *retn = NULL;
>    int bytes = nitems * size;
> 
>    if (size) {
>       ArgusCallocTotal++;
>       retn = (unsigned int *) calloc (1, bytes + 4);
> 
>       *retn = 0x45672381;
>       retn++;
>    }
> 
> #ifdef ARGUSDEBUG
>    ArgusDebug (4, "ArgusCalloc (%d, %d) returning 0x%x\n", nitems, size,
> retn);
> #endif
>    return ((void *) retn);
> }
> 
> [hhoffman at localhost ~]$ gdb /usr/bin/rasort
> (gdb) set args -r argus.out-2005-08-10 -w argus.out-2005-08-10.sorted
> (gdb) run
> Starting program: /usr/bin/rasort -r argus.out-2005-08-10 -w
> argus.out-2005-08-10.sorted
> Detaching after fork from child process 19314.
> 
> Program received signal SIGSEGV, Segmentation fault.
> ArgusCalloc (nitems=2, size=0) at argus_filter.c:5210
> 5210    argus_filter.c: No such file or directory.
>         in argus_filter.c
> (gdb) where
> #0  ArgusCalloc (nitems=2, size=0) at argus_filter.c:5210
> #1  0x080643ab in RaNewArgusStore (argus=0xbfff9d00) at argus_client.c:730
> #2  0x0804a350 in RaProcessRecord (argus=0xbfff9d00) at rasort.c:155
> #3  0x0804bca3 in ArgusHandleDatum (ptr=0x826f934, filter=0x0)
>     at argus_parse.c:754
> #4  0x0804e8e1 in ArgusReadStreamSocket (input=0x826f6ac) at
> argus_parse.c:2317
> #5  0x0804f44c in ArgusReadStream () at argus_parse.c:2712
> #6  0x0804b6c9 in main (argc=5, argv=0xbfffaf64) at argus_parse.c:610



More information about the argus mailing list