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

Re: 20010912: about xdr_product



Harry Chen wrote:
> 
> Hi Anne:
> Thank you for replying my question
> 
> the log file messages as below:
> 
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: pq_open:
> /usr/local/ldm/data/ldm.pq: Success
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: info.origin:
> mscsv3.msc.cwb
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: info.arrival: Thu Sep
> 13 07:49:21 2001
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: info.ident:
> Notify.RCWF.class.Radial./rcwf_data/classified/RCWF/Z/elev0_5/res1/level16/20010913_0751
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: info.signature:
> 36117876613_0751
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: xproduct:
> Notify.RCWF.class.Radial./rcwf_data/classified/RCWF/Z/elev0_5/res1/level16/20010913_0751
> xdr_product() failed
> 
> How often has this message appeared?  something like this
> Sep 13 07:49:21 mscsv3 /usr/local/ldm/logs[882]: xproduct:
> Notify.RCWF.class.Rad
> Sep 13 07:49:35 mscsv3 /usr/local/ldm/logs[894]: xproduct:
> Notify.RCWF.class.Rad
> Sep 13 07:50:36 mscsv3 /usr/local/ldm/logs[933]: xproduct:
> Notify.RCWF.class.Rad
> Sep 13 07:50:36 mscsv3 /usr/local/ldm/logs[939]: xproduct:
> Notify.RCWF.radial./d
> Sep 13 07:52:07 mscsv3 /usr/local/ldm/logs[970]: xproduct:
> Notify.RCWF.class.Grd
> Sep 13 07:52:07 mscsv3 /usr/local/ldm/logs[970]: xproduct:
> Notify.RCWF.class.Rad
> Sep 13 07:55:22 mscsv3 /usr/local/ldm/logs[1005]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 07:55:22 mscsv3 /usr/local/ldm/logs[1005]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 07:56:22 mscsv3 /usr/local/ldm/logs[1031]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 07:56:22 mscsv3 /usr/local/ldm/logs[1031]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 07:58:07 mscsv3 /usr/local/ldm/logs[1058]: xproduct:
> Notify.RCWF.class.Gd
> Sep 13 07:58:07 mscsv3 /usr/local/ldm/logs[1058]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 08:01:07 mscsv3 /usr/local/ldm/logs[1111]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 08:01:07 mscsv3 /usr/local/ldm/logs[1111]: xproduct:
> Notify.RCWF.class.Rd
> Sep 13 08:02:07 mscsv3 /usr/local/ldm/logs[1127]: xproduct:
> Notify.RCWF.class.R
> 
> this is for Nexrad level 3 data, will receive a volumn every 6 mins. it
> not just only for
> "Notify.RCWF.class.Radial." but most os them. and it happen with one
> category data,
> for example, it might happen with "Notify.RCWF.original." after ldm be
> restarted.
> 
> Here is the pqact.conf
> ANY     Notify.RCWF.original.*  EXEC
> /home/radoper/rcwf/bin/cwbNexrad.ksh RCWF
> ANY     Notify.RCWF.class.Grid.(.*)     EXEC
> /home/radoper/rcwf/bin/decodeRaster.ksh \1
> ANY     Notify.RCWF.class.Radial.(.*)   EXEC
> /home/radoper/rcwf/bin/decodeRadial.ksh \1
> ANY     Notify.RCWF.class.Raster.(.*)   EXEC
> /home/radoper/rcwf/bin/decodeRaster.ksh \1
> ANY     Notify.RCWF.radial.(.*) EXEC
> /home/radoper/rcwf/bin/startRadProc.ksh \1
> ANY     Notify.(RCWF).(p2p|TV|[A-Z]TV|PTSF).(.*)        EXEC
> /home/radoper/rcwf/bin/deliverProd.ksh  \2      \3
> ANY     Notify.(RCWF).(wins1).(.*(y[5-6][1-z])) EXEC
> /home/radoper/rcwf/bin/deliverProd.ksh  \2      \3      \4
> ANY
> Notify.(RCWF).(raster|radial)./rcwf_data/decoded/RCWF/(raster|radial)/(.*(OHP|Z[0-1]5_[1-2]00|DPA).*)
> EXEC    /home/radoper/rcwf/bin/deliverProd.ksh \2      \4      \5
> \1
> 
> This kind of setting has been run on DEC alpha 4100 with OSF/1 V4.2 for
> 3 years and ran very well, but something weird these couple days
> 
> all Notify message were issued by a function I wrote. go with the attach
> file.
> 
> please give me some hint, what's wrong here
> 
> Thank you very much.
> 
>   ------------------------------------------------------------------------
>                  Name: write2PQ.c
>    write2PQ.c    Type: application/x-unknown-content-type-cfile
>              Encoding: base64

Hi Harry,

First, I'm guessing you are using pqinsert to insert products into your
queue.  Is that correct?

I'm going to make some guesses about your problem.   As you probably
know, this is the pq.c code that is failing:



/*
 * XDR Encode or Decode "prod" to or from "buf" of size "size".
 */
static ptrdiff_t
xproduct(void *buf, size_t size, enum xdr_op op, product *prod)
{
        XDR xdrs[1] ;
        xdrmem_create(xdrs, buf, (u_int)size, op);

        if (!xdr_product(xdrs, prod))
        {
                uerror("xproduct: %s xdr_product() failed\n",
                        prod->info.ident);
                return 0;
        }

        /*      return xlen_product(prod) ; */
        return (xdrs->x_private - xdrs->x_base);
}



I'm wondering if the call to xdrmem_create is failing.  Perhaps there's
not enough memory to write the data.  Or perhaps the 'size' variable is
bad from being cast to an unsigned int.  The return value of that
function really should be tested.

Or perhaps the product is by some chance a 0 length product.  I would
check that the product is a legitimate product.  If the product is a
legitimate product, you could send a few representative products to me
and I will try to pqinsert them into my own queue as a test.  

Are you able to modify the code, rebuild it, and test these things, or
run the code in a debugger?

Also, what version of the LDM are you running?  And, what hardware and
operating system are you using?

Anne
-- 
***************************************************
Anne Wilson                     UCAR Unidata Program            
address@hidden                 P.O. Box 3000
                                  Boulder, CO  80307
----------------------------------------------------
Unidata WWW server       http://www.unidata.ucar.edu/
****************************************************