[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
20000313: LDM problem
- Subject: 20000313: LDM problem
- Date: Tue, 14 Mar 2000 14:02:45 -0700
David,
Linux is having trouble storing idat = (2**31)-1 in the
$GEMLIB/dp/dppgrb.f routine. All the other platforms compute
idat as 2147483647, but Linux is generating -2147483648 from the 2**31
part of the calculation. As a result, the while loop in the code never
converges.
The field which trips this problem is parameter 198 (cloud concentration
of ice particles) which has a range of 0 to 1.66E10 which must be scaled
to be packed in the output file.
I have respecified INT_MAX in the routine so that 2**31 - 1 doesn't have to
be calculated. A revised binary is in ~gbuddy/nawips-5.4/binary/linux
and I will repackage the linux binaries as well.
This should solve your problem since I tested it with the 18Z nggrib products
and managed to clear up the infinite loop. Let me know if you have any other
trouble.
Steve Chiswell
Unidata User Support
>From: David Wojtowicz <address@hidden>
>Organization: .
>Keywords: 200003141817.LAA09035
>On Mon, 13 Mar 2000, Unidata Support wrote:
>
>>
>> David,
>>
>> It sounds to me that dcgrib may be in an infinite loop, because in general,
> there should
>> only be one copy of dcgrib running for the ruc2 data. Since you are seeing m
> ultiple copies
>> running (that aren't exiting), the ldm is having to open another pipe to the
> decoder
>> since the previous one isn't emptying out the pipe anymore (its pipe is full
> ).
>> I'm not seing that behavoir here on our live X86 ldm from the conduit data-
> so it
>> may be a specific problem to linux.
>>
>> I have two possible solutions-
>>
>> 1) I copied a fresh "unstripped" linux executable for dcgrib into ~gbuddy/na
> wips-5.4/binary/linux
>> The one in the binary tarfile doesn't have the debug flags, and is stripp
> ed.
>> Can you issue a "kill -6" to dcgrib after it had been stuck for a long ti
> me?
>> That should cause the decoder to dump core (presumably in your ~ldm home
>> directory where the ldm was launched from).
>> Once the core file is created, then running
>> "gdb ~ldm/decoders/dcgrib ~ldm/core" and then the command "where"
>> may tell us in what routine the decoder is hung.
>
>
>Hi Steve,
>
> Following the above instructions, here's the stack trace that
>I get.
>
>(gdb) where
>#0 0x8077d9b in pow_ri ()
>#1 0x8074dd0 in dp_pgrb__ ()
>#2 0x8070d8b in dm_pkgd__ ()
>#3 0x80667b7 in dm_wdtr__ ()
>#4 0x805f83b in gd_wpgd__ ()
>#5 0x804e466 in put_gem_grid__ (iflno=0x80d734c, centrid=0xbffff8d0,
> gridid=0xbffff8c8, edition=0xbffff878, hasgds=0xbfffe830,
> prmid=0xbffff8c4, lvltyp=0xbffff8c0, level1=0xbffff8bc,
>level2=0xbffff8b8,
> iccyr=0xbffff8a4, imonth=0xbffff8a0, iday=0xbffff89c, ihour=0xbffff898,
> imin=0xbffff894, tunit=0xbffff890, tr1=0xbffff88c, tr2=0xbffff888,
> trf=0xbffff884, igx=0xbffff8b4, igy=0xbffff8b0, grid=0x8546de4,
> bits=0xbffff880, gribed=0xbffff8ac, pckflg=0x8172bf8, rlat1=0xbfffe82c,
> rlon1=0xbfffe828, rlat2=0xbfffe824, rlon2=0xbfffe820,
> ensext=0xbffff840 "", ensextlen=0xbfffe838, ensext_len=-1073743052)
> at put_gem_grid.f:612
>#6 0x8049e73 in do_nc (ep=0x0, timeout=60, quasp=0x0, cdlname=0x0,
> ncname=0xbffffc9f "/home/flood/data/conduit/YYMMDDHH_maps2_grid@@@.gem")
> at dcgrib.c:518
>#7 0x804a586 in main (ac=11, av=0xbffffb34) at dcgrib.c:710
>#8 0x808094b in __libc_start_main (main=0x804a18c <main>, argc=11,
> argv=0xbffffb34, init=0x80480b4 <_init>, fini=0x80c567c <_fini>,
> rtld_fini=0, stack_end=0xbffffb2c) at ../sysdeps/generic/libc-start.c:90
>(gdb)
>
>
>
>--------------------------------------------------------
> David Wojtowicz, Research Programmer/Systems Manager
> Department of Atmospheric Sciences Computer Services
> University of Illinois at Urbana-Champaign
> email: address@hidden phone: (217)333-8390
>--------------------------------------------------------
>
>
>