ThinkGeo.com    |     Documentation    |     Premium Support

Crash when installed on non-dev machines

Hi,


I get this stack trace when our software is running on machines that are not developer machines (machines that don't have the licensed version installed... meant to be end-user machines.)


I should also add that, for some reason, my features are not rendering to the screen, when they should be.


Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

   at ThinkGeo.MapSuite.Core.Projection.GetShapeTypeFromByteArray(Byte[] wkb, Int32 startIndex)

   at ThinkGeo.MapSuite.Core.Projection.x66ab0a25f9969f22(Byte[] x1a22eb38b50994c5)

   at ThinkGeo.MapSuite.Core.Projection.x195902aa81b555e3(Byte[] x61ddc1291c0e3204)

   at ThinkGeo.MapSuite.Core.Projection.ConvertToInternalProjection(Feature feature)

   at ThinkGeo.MapSuite.Core.Projection.ConvertToInternalProjection(BaseShape baseShape)

   at ThinkGeo.MapSuite.Core.FeatureSource.ConvertToInternalProjection(RectangleShape rectangle)

   at ThinkGeo.MapSuite.Core.FeatureSource.GetFeaturesInsideBoundingBox(RectangleShape boundingBox, IEnumerable`1 returningColumnNames)

   at com.wsi.layout.view.map.LayoutMapGeoView.mouseTimer_Tick(Object sender, EventArgs e)

   at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)

   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)

   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)


Any ideas?


Thanks,


Greg



Hi Greg,  
  
 It seems like the projection is not valid in your deploy machine. Here is something I need to confirm. 
 1, Did you run it directly or debug? If it’s runtime, just ignore it and go to the next. Or else, it’s not allowed to debug on the machine which doesn’t install our product.  
 2, Which version are you using? Just make sure the version is latest one. 
 3, Did you use projection? Is it Proj4Projection or ManagedProj4Projection? If it’s Proj4Projection, please use ManagedProj4Projection instead and try. 
  
 Thanks, 
 Howard 
  


Hi Howard,


To answer your questions:


1) We are running it directly.  The builds we created are "Debug" builds.  I built a "Release" build and got the same result.


2) I used the 10/4/2010 dev build


3) Yes, we are using a projection.  The projection is a RotationProjection.  I temporarilly removed this from our system to see if this is the problem, and, indeed, it is the culprit.  Is there a different impl of the RotationProjection I should be looking at?


-Greg



Greg,  
  
 The  ManagedProj4Projection class resolves this issue when using Proj4Projection in but currently we don’t have a ManagedRotationProjection. Howard, is this something we have in the pipeline?

Some new information...


I originally thought the problem was related to running on a machine in which the dev license wasn't installed.  I've now been able to reproduce on my dev box by running the application outside of Visual Studio.  So, there appears to be some tie between RotationProjection and VisualStudio.


-Greg



Hi Greg,  
  
 When our product is installed, some 3rd part dlls will be copied to the System32 folder. While running on some machine that are not installed the product, these dlls cannot be found and the exception throws. Proj4Projection is one of them. The ManagedProj4Projection is embedded in our core assembly so that you can use it out of box. Hope it makes sense. 
  
 Sorry that I’m on vacation these days, I’ll check if there is a managed version for RotationProjection when I get back these two days. 
  
 Thanks, 
 Howard

Hi Howard,


Is there a ManagedRotationProjection in the works?


Thanks,


Greg



Hi Greg,



I double checked our RotationProjection and found it is all managed code. Only Proj4Projection uses some dll in the system 32 folder. Here is a sample I tested. It's quite simple and it works fine in the clean machine. Please have a try.



On the other hand, please check the readme.rtf file in our package and see what will installed with our installer such as some raster layer etc; or you can send us a simple sample so that we can check it out for you.



Thanks,

Howard



Post8202.zip (8.74 KB)

Hi Howard,


What I don't understand is that when I run the application from the Visual Studio debugger, the application works great.  However, when I run the application from my bin/debug folder, on my dev machine, I get the stack trace above.


It seems like this problem has less to do with something not getting installed and has more to do with the way the RotationProjection class is handling memory.


The following stack message makes me think there's a problem in ThinkGeo code:


Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

   at ThinkGeo.MapSuite.Core.Projection.GetShapeTypeFromByteArray(Byte[] wkb, Int32 startIndex)


Sometimes memory leaks are difficult to reproduce... the state of the memory has to be just right to reproduce the problem.  With this in mind, is there something I can do to help you guys understand the problem, besides me giving you all our code? 


Do you have a way to enable logging within your system so I can send you something more concrete?


Thanks,


Greg


 



Hi Howard,


We have opened a ticket for this and attached an example to the ticket.


-Greg



Hi Greg,  
  
 We have found the issue from your attached sample in the ticket. It is caused by the build of our earlier version. It’s fixed in our latest build 4.0.160.0 above. Please try the latest dll and see if the issue still exists. 
  
 Thanks, 
 Howard