<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16945" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN 
class=046403922-09122009></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=046403922-09122009>Hello, 
list:</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=046403922-09122009></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=046403922-09122009>I have problems 
reading some large GRIB files from ECMWF. I have several files, 29MB and 50MB 
works fine, 141 MB and above crashes. The crash is within the first GDALOpen() 
function, and I track it through GRIBDataset::Open()&nbsp;to 
GDALDataset::Setband(). The error arises in the last statement given below, and 
because papoBands==NULL. By the two breakpoints I can tell that papoBands is not 
NULL when entering the SetBand() function, so it seems to be the VSIRealloc 
function that returns NULL. The error doesn't occur for the same band each time 
I try, but typically runs to band number somewhere around 50000. (bandno is a 
combined index of forecast reference time, forecast lead time and 
variable).</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=046403922-09122009></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=046403922-09122009>I run GDAL 1.6.3 on 
Windows XP, compiled with Visual Studio 2008. The error appears both in debug 
and release version. The application uses about 144 MB when it crashes, but has 
been up to a peak memory usage of 283 MB before the crash. I have 3.5 GB memory 
on the PC, of which 2.5 appears to be available. Both GDAL and the application 
is compiled with extended memory sizes and /LARGEADDRESSAWARE, but I am not sure 
about how this works. The error message is:</SPAN></FONT></DIV>
<DIV><FONT size=2><SPAN class=046403922-09122009></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT size=2><SPAN class=046403922-09122009>Unhandled exception at 
0x30c36acd (gdal16d-vc9.dll) in RegModel.exe: 0xC0000005: Access violation 
writing location 0x00036c74.</SPAN></FONT></DIV>
<DIV><FONT size=2><SPAN class=046403922-09122009></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><SPAN class=046403922-09122009><SPAN 
class=046403922-09122009>Has anyone had similar 
problems?</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=046403922-09122009><SPAN 
class=046403922-09122009><SPAN class=046403922-09122009><FONT size=2>Best 
regards,</FONT></SPAN></SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=046403922-09122009><SPAN 
class=046403922-09122009><SPAN class=046403922-09122009></SPAN><SPAN 
class=046403922-09122009><FONT size=2>Sjur K :-)</FONT></SPAN></DIV>
<P><SPAN class=046403922-09122009><FONT 
size=2></FONT></SPAN>&nbsp;</P></SPAN></SPAN></FONT>
<DIV><FONT color=#0000ff><FONT color=#0000ff>
<P><FONT size=2>void</FONT></FONT></FONT><FONT size=2> GDALDataset::SetBand( 
<FONT color=#0000ff><FONT color=#0000ff>int</FONT></FONT> nNewBand, 
GDALRasterBand * poBand )</FONT></P>
<P><FONT size=2>{</FONT></P><FONT color=#008000><FONT color=#008000>
<P><FONT size=2>/* 
-------------------------------------------------------------------- 
*/</FONT></P>
<P><FONT size=2>/* Do we need to grow the bands list? */</FONT></P>
<P><FONT size=2>/* 
-------------------------------------------------------------------- 
*/</FONT></P></FONT></FONT>
<P><FONT size=2><FONT color=#0000ff><FONT color=#0000ff>if</FONT></FONT>( nBands 
&lt; nNewBand || papoBands == NULL ) {</FONT></P>
<P><FONT size=2><FONT color=#0000ff><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp; </SPAN>int</FONT> i;</FONT></P>
<P><FONT size=2><FONT color=#0000ff><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp; </SPAN>if</FONT>( papoBands == NULL 
)</FONT></P>
<P><FONT size=2><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>papoBands = (GDALRasterBand **)<SPAN 
class=046403922-09122009>&nbsp;&nbsp;<FONT color=#ff0000>/* Breakpoint before 
this statement */</FONT></SPAN></FONT></P>
<P><SPAN class=046403922-09122009></SPAN><FONT size=2><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>VSICalloc(<FONT color=#0000ff><FONT 
color=#0000ff>sizeof</FONT></FONT>(GDALRasterBand*), 
MAX(nNewBand,nBands));</FONT></P>
<P><FONT color=#0000ff><FONT size=2><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp; </SPAN>else</FONT></FONT></P>
<P><FONT size=2><SPAN class=046403922-09122009>&nbsp;&nbsp;&nbsp; 
</SPAN>papoBands = (GDALRasterBand **)<SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN></FONT></P>
<P><SPAN class=046403922-09122009></SPAN><SPAN 
class=046403922-09122009></SPAN><FONT size=2><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>VSIRealloc(papoBands, <FONT color=#0000ff><FONT 
color=#0000ff>sizeof</FONT></FONT>(GDALRasterBand*) *</FONT></P>
<P><FONT size=2><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>MAX(nNewBand,nBands));</FONT></P>
<P><FONT size=2><FONT color=#0000ff><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp; </SPAN>for</FONT>( i = nBands; i 
&lt; nNewBand; i++ )<SPAN class=046403922-09122009>&nbsp;&nbsp;&nbsp;<FONT 
color=#ff0000>/* Breakpoint before this statement; condition: papoBands=0 
*/</FONT></SPAN></FONT></P>
<P><FONT size=2><SPAN 
class=046403922-09122009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>papoBands[i] = NULL;<SPAN class=046403922-09122009>&nbsp;&nbsp;&nbsp; 
</SPAN><FONT color=#ff0000>/*&nbsp;<SPAN class=046403922-09122009>Offending 
statement, papoBands==NULL.</SPAN></FONT></FONT></P>
<P><FONT size=2><FONT color=#ff0000><SPAN 
class=046403922-09122009></SPAN></FONT></FONT>&nbsp;</P>
<P><SPAN class=046403922-09122009><FONT size=2>State of poBand at 
error:</FONT></SPAN></P>
<P><FONT size=2>-&nbsp;&nbsp;poBand&nbsp;0x357f4228 {start=172766438 subgNum=0 
longFstLevel=0x746a3e28 "0[-] SFC (Ground or water surface)" 
...}&nbsp;GDALRasterBand 
*<BR>+&nbsp;&nbsp;[GRIBRasterBand]&nbsp;{start=172766438 subgNum=0 
longFstLevel=0x746a3e28 "0[-] SFC (Ground or water surface)" 
...}&nbsp;GRIBRasterBand<BR>+&nbsp;&nbsp;GDALMajorObject&nbsp;{nFlags=49 
sDescription={...} oMDMD={...} 
}&nbsp;GDALMajorObject<BR>+&nbsp;&nbsp;poDS&nbsp;0x3424f4b0 {fp=0x3424fb08 
pszProjection=0x35b3ce68 "GEOGCS["Coordinate System imported from GRIB 
file",DATUM["unknown",SPHEROID["Sphere",6367470,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]" 
pszDescription=0xcdcdcdcd &lt;Bad Ptr&gt; ...}&nbsp;GDALDataset 
*<BR>&nbsp;&nbsp;nBand&nbsp;56094&nbsp;int<BR>&nbsp;&nbsp;nRasterXSize&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;nRasterYSize&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;eDataType&nbsp;GDT_Float64&nbsp;GDALDataType<BR>&nbsp;&nbsp;eAccess&nbsp;GA_ReadOnly&nbsp;GDALAccess<BR>&nbsp;&nbsp;nBlockXSize&nbsp;45&nbsp;int<BR>&nbsp;&nbsp;nBlockYSize&nbsp;1&nbsp;int<BR>&nbsp;&nbsp;nBlocksPerRow&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;nBlocksPerColumn&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;bSubBlockingActive&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;nSubBlocksPerRow&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;nSubBlocksPerColumn&nbsp;0&nbsp;int<BR>+&nbsp;&nbsp;papoBlocks&nbsp;0x00000000&nbsp;GDALRasterBlock 

*<BR>&nbsp;&nbsp;nBlockReads&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;bForceCachedIO&nbsp;0&nbsp;int<BR>+&nbsp;&nbsp;poMask&nbsp;0x00000000 
{poDS=??? nBand=??? nRasterXSize=??? ...}&nbsp;GDALRasterBand 
*<BR>&nbsp;&nbsp;bOwnMask&nbsp;false&nbsp;bool<BR>&nbsp;&nbsp;nMaskFlags&nbsp;0&nbsp;int<BR></FONT></P>
<P><SPAN class=046403922-09122009><FONT size=2>Status of this 
GDALDataset:</FONT></SPAN></P>
<P><SPAN class=046403922-09122009><FONT face=Arial 
size=2>&nbsp;&nbsp;i&nbsp;-858993460&nbsp;int<BR>&nbsp;&nbsp;nBands&nbsp;49093&nbsp;int<BR>&nbsp;&nbsp;nNewBand&nbsp;49094&nbsp;int<BR>+&nbsp;&nbsp;papoBands&nbsp;0x00000000&nbsp;GDALRasterBand 
* *<BR>-&nbsp;&nbsp;this&nbsp;0x3424f4b0 {fp=0x3424fab8 pszProjection=0x35b31048 
"GEOGCS["Coordinate System imported from GRIB 
file",DATUM["unknown",SPHEROID["Sphere",6367470,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]" 
pszDescription=0xcdcdcdcd &lt;Bad Ptr&gt; ...}&nbsp;GDALDataset * 
const<BR>+&nbsp;&nbsp;[GRIBDataset]&nbsp;{fp=0x3424fab8 pszProjection=0x35b31048 
"GEOGCS["Coordinate System imported from GRIB 
file",DATUM["unknown",SPHEROID["Sphere",6367470,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]" 
pszDescription=0xcdcdcdcd &lt;Bad Ptr&gt; 
...}&nbsp;GRIBDataset<BR>+&nbsp;&nbsp;GDALMajorObject&nbsp;{nFlags=33 
sDescription={...} oMDMD={...} 
}&nbsp;GDALMajorObject<BR>+&nbsp;&nbsp;poDriver&nbsp;0x00000000 {pfnOpen=??? 
pfnCreate=??? pfnDelete=??? ...}&nbsp;GDALDriver 
*<BR>&nbsp;&nbsp;eAccess&nbsp;GA_ReadOnly&nbsp;GDALAccess<BR>&nbsp;&nbsp;nRasterXSize&nbsp;45&nbsp;int<BR>&nbsp;&nbsp;nRasterYSize&nbsp;33&nbsp;int<BR>&nbsp;&nbsp;nBands&nbsp;49093&nbsp;int<BR>+&nbsp;&nbsp;papoBands&nbsp;0x00000000&nbsp;GDALRasterBand 

*<BR>&nbsp;&nbsp;bForceCachedIO&nbsp;0&nbsp;int<BR>&nbsp;&nbsp;nRefCount&nbsp;1&nbsp;int<BR>&nbsp;&nbsp;bShared&nbsp;0&nbsp;int<BR>+&nbsp;&nbsp;oOvManager&nbsp;{poDS=0x00000000 
poODS=0x00000000 osOvrFilename={...} 
...}&nbsp;GDALDefaultOverviews<BR></FONT></SPAN></P>
<P><SPAN class=046403922-09122009><FONT size=2></FONT></SPAN>&nbsp;</P>
<P><SPAN class=046403922-09122009><FONT size=2></FONT></SPAN>&nbsp;</P>
<P><SPAN class=046403922-09122009><FONT 
size=2></FONT></SPAN>&nbsp;</P></DIV></BODY></HTML>