ThinkGeo.com    |     Documentation    |     Premium Support

Attempting to read or write protected memory

I am having an (non-reproducible) issue where protected memory is being written to or read from. I was wondering if anyone had any insight into what could be causing the issue which generates the exception:


Message - Exception has been thrown by the target of an invocation.

Error Message - Exception has been thrown by the target of an invocation.

Error Source - mscorlib

----SQL Data Error Information----- - 

---- - No data error detected.

------Stack Dump------- - Last to First Sequence - includes Inner Exceptions

1 - Error Message - Exception has been thrown by the target of an invocation.

1 - Error Source - mscorlib

1 - Error Full Name - System.Reflection.TargetInvocationException

1 - TargetSite - System.Object _InvokeMethodFast(System.Object, System.Object[], System.SignatureStruct ByRef, System.Reflection.MethodAttributes, System.RuntimeTypeHandle)

1 - StackTrace -    at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)

   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)

   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)

   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)

   at ThinkGeo.MapSuite.Core.Proj4Projection.xec88ebd758d8ecf7(String xc518b48efbd9149e)

   at ThinkGeo.MapSuite.Core.Proj4Projection.OpenCore()

   at ThinkGeo.MapSuite.Core.FeatureSource.Open()

   at ThinkGeo.MapSuite.Core.FeatureLayer.OpenCore()

   at ThinkGeo.MapSuite.Core.InMemoryFeatureLayer.OpenCore()

   at ThinkGeo.MapSuite.Core.Layer.Open()

   at [my code]

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

2 - Error Source - Proj4ExtensionX86

2 - Error Full Name - System.AccessViolationException

2 - TargetSite - IntPtr pj_init(Int32, System.String[])

2 - StackTrace -    at Proj4Extension.Proj4Extensionx86.pj_init(Int32 argc, String[] args)

   at Proj4Extension.Proj4Extensionx86.Init(Int32 argc, String[] args)


Any ideas?



Adam, 
  
 It seems that the exception occurs when the featureSource is used with Proj4Projection. It’s hard to recreate it and determine what causes the error. Good news is that we have developed a ManagedProj4Projection, which has the same functions to the Proj4Project but is written with managed code. Could you try using the ManagedProj4Projection instead?  
  
 Thanks, 
  
 Johnny 


 Where can i find the managed library and how can i use it instead of the other one



The managed proj4 library is under the ThinkGeo.MapSuite.Core namespace. Compared to the unmanaged Proj4 library the API is slightly different see the code below to see the two different ways:


 



//Unmanaged Proj4
                Proj4Projection proj4Projection = new Proj4Projection();
                proj4Projection.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326);
                proj4Projection.ExternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(2163);

                //Managed Proj4
                ManagedProj4Projection managedProj4Projection = new ManagedProj4Projection();
                managedProj4Projection.InternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(4326);
                managedProj4Projection.ExternalProjectionParameters = ManagedProj4Projection.GetEpsgParameters(2163);