Opened 15 years ago

Closed 14 years ago

Last modified 14 years ago

#1103 closed defect (fixed)

MgCooker: Crash on large map bounds

Reported by: zspitzer Owned by: ksgeograf
Priority: low Milestone:
Component: Maestro Version:
Severity: major Keywords: mgcooker
Cc: External ID:

Description

using these options causes mg cooker to crash with the lower scales with a system out of memory exception, too many tiles?

scales =[2500, 4766.66548, 9088.43994, 17328.62118, 33039.89619, 62996.05311, 120112.44481, 229014.33798, 436653.89612, 832553.22213, 1587401.08316, 3026643.98126, 5770799.75972, 11002988.81301, 20979026.80047, 40000001.17915, 76266650 ] ; extent =[105.0056, -52.8963,162.1912, -1.503 ];

Change History (7)

comment:1 by ksgeograf, 14 years ago

Resolution: fixed
Status: newclosed

Fixed in r4335.

When the tiles are generated, a list of all row/column pairs is generated for each scale. When writing the code, I could see that this was inefficient, but I had no space efficient random pair generator.

Now that this has turned out to actually be a problem, I have implemented a less random method, but now the list is limited to keeping 500 pairs at a time (a producer/consumer queue).

comment:2 by zspitzer, 14 years ago

Resolution: fixed
Status: closedreopened

using the same map

@echo off "D:\Program Files\OSGeo\MapGuideMaestro\MgCookerCommandline.exe" batch --mapdefinitions="Library://MAPS/MAP.MapDefinition" --basegroups="BASE" --scaleindex=14,15,16--mapagent="http://localhost/mapguide/mapagent/mapagent.fcgi" --username="Anonymous" --password="" --threadcount=16 --random-tile-order

Update time: 12/19/2009 6:15:00 PM Current Map: Library://MAPS/MAP.MapDefinition (1 of 1) Current Group: BASE (1 of 1)

Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range.

Must be non-negative and less than the size of the collection.

Parameter name: index

at System.Collections.ArrayList.get_Item(Int32 index) at OSGeo.MapGuide.MaestroAPI.DoubleCollection.get_Item(Int32 idx) at OSGeo.MapGuide.MgCooker.Program.DisplayProgress(BatchMap map, String group

, Int32 scaleindex, Int32 row, Int32 column, Boolean& cancel)

at OSGeo.MapGuide.MgCooker.Program.bx_FinishRenderingTile(CallbackStates stat

e, BatchMap map, String group, Int32 scaleindex, Int32 row, Int32 column, Boolea n& cancel)

at OSGeo.MapGuide.MgCooker.BatchSettings.InvokeFinishRendering(BatchMap batch

Map, String group, Int32 scaleindex, Int32 row, Int32 col)

at OSGeo.MapGuide.MgCooker.RenderThreads.RunAndWait() at OSGeo.MapGuide.MgCooker.BatchMap.RenderScale(Int32 scaleindex, String grou

p)

at OSGeo.MapGuide.MgCooker.BatchMap.RenderGroup(String group) at OSGeo.MapGuide.MgCooker.BatchMap.Render() at OSGeo.MapGuide.MgCooker.BatchSettings.RenderAll() at OSGeo.MapGuide.MgCooker.Program.Main(String[] args) at OSGeo.MapGuide.MgCooker.Commandline.Program.Main(String[] args)

comment:3 by ksgeograf, 14 years ago

Alright, this appears to be a bug in the commandline code?

Could you post your map's bounds?

comment:4 by zspitzer, 14 years ago

It's the same bounds as in the description.

The GUI just exits without any error message

comment:5 by ksgeograf, 14 years ago

Resolution: fixed
Status: reopenedclosed

Fixed with r4464.

This must have been a long standing bug, it was caused by not having all scales in the process.

I could not get the GUI to "just exit", it runs until all tiles are rendered and then exits (is that what you meant?)

comment:6 by zspitzer, 14 years ago

maybe the just exit was that there isn't a tiling complete message when it finishes?

comment:7 by ksgeograf, 14 years ago

There is no message stating that it is finished.

Do you prefer one?

Note: See TracTickets for help on using tickets.