News:

Simutrans Wiki Manual
The official on-line manual for Simutrans. Read and contribute.

r2020 - Crash when loading specific height map because of msvcrt.dll error

Started by z9999, September 14, 2008, 04:14:47 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

z9999

simutrans r2020 GDI,SDL_Windows

When I loading specific height map, simutrans crash.
This problem happened with self compiled version, nighly SDL and nightly GDI.

This specific file is "Japan.zip" on http://japanese.simutrans.com/index.php?%A5%DE%A5%C3%A5%D7 .
But I don't know you can reproduce this problem or not.


Quote
Message: grund_besch_t::calc_water_level():   image_offset=5712
Message: karte_t::init():   init_felder
Message: simlinemgmt_t::init_line_ids():   done
Message: reliefkarte_t::setze_welt():   welt size 1496,1624
Message: karte_t::init():   setze_grid_hgt

Quote
simutrans-.exe caused an Access Violation at location 77bf7631 in module msvcrt.dll Writing to location 08b82000.

Registers:
eax=00000000 ebx=05b2dd20 ecx=0000c798 edx=00000000 esi=00160000 edi=08b82000
eip=77bf7631 esp=0023f098 ebp=0023f298 iopl=0         nv up ei pl nz ac po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000216

Call stack:
77BF7631  msvcrt.dll:77BF7631  memset
0056D5C0  simutrans-.exe:0056D5C0  karte_t::load_heightfield(einstellungen_t*)  simworld.cc:3506
   ...
   sets->setze_groesse(w,h);
   // create map
>   init(sets,h_field);
   delete [] h_field;
   }
   ...

005950D3  simutrans-.exe:005950D3  WinMain  simsys_w16.cc:756
00401247  simutrans-.exe:00401247
00401298  simutrans-.exe:00401298
7C817067  kernel32.dll:7C817067  RegisterWaitForInputIdle

z9999

In r2022.
It still causes to crash at the same line.


EDIT:
When I change code like below, crash problem had been solved.
(Strangely enough, linux versions of r2022 don't crash. )

simworld.cc:786
Quote
   memset( grid_hgts, 0, sizeof(*grid_hgts)*(cached_groesse_gitter_y+1)*(cached_groesse_gitter_y+1) );
   
=>
Quote
   memset( grid_hgts, 0, sizeof(*grid_hgts)*(cached_groesse_gitter_x+1)*(cached_groesse_gitter_y+1) );