ThinkGeo.com    |     Documentation    |     Premium Support

MapSuite V8 & MrSid's

MapSuite Team,



I’ve just updated my applications to MapSuite Development V8.0.14.0.  After the update I am no longer able to open my MrSid Layers.



I’m encountering the below exception – External component has thrown an exception.



The exception is encountered on a (MrSidRasterLayer).Open().



I’ve done nothing with the usual MrSid dll’s.  Is there a new set of MrSid dll’s?



Thanks,

Dennis





System.AccessViolationException was unhandled

  HResult=-2147467261

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

  Source=MapSuiteCore

  StackTrace:

       at 3RM=.oz4=.6yQ=(String pj4=)

       at ThinkGeo.MapSuite.Core.GisImage.fB8=(String fR8=)

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

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

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

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

       at OriStarVisionMapSuite.clsMapLayerItemCollection.LoadRasterWildCard(clsMapLayerItem& oMapLayerItem) in C:\OriStarMappingInc\OriStarVisionMapSuite\OriStarVisionMapSuite\clsMapLayer.cs:line 926

       at OriStarVisionMapSuite.clsMapLayerItemCollection.Load(OleDb& OleDataBase) in C:\OriStarMappingInc\OriStarVisionMapSuite\OriStarVisionMapSuite\clsMapLayer.cs:line 587

       at OriStarVisionMapSuite.MapInitialization.MapInitialize() in C:\OriStarMappingInc\OriStarVisionMapSuite\OriStarVisionMapSuite\cfMapInitialization.cs:line 91

       at OriStarVisionMapSuite.ucMap.Initialize(String sProvider, String sMapDatabaseName) in C:\OriStarMappingInc\OriStarVisionMapSuite\OriStarVisionMapSuite\ucMap.xaml.cs:line 633

       at OriStarVision.OnStartUp.dtMapLoad_Tick(Object sender, EventArgs e) in C:\OriStarMappingInc\OriStarVision\cfOnStartUp.cs:line 435

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

       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

       at System.Windows.Threading.DispatcherOperation.InvokeImpl()

       at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)

       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

       at System.Windows.Threading.DispatcherOperation.Invoke()

       at System.Windows.Threading.Dispatcher.ProcessQueue()

       at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

       at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

       at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)

       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

       at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)

       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)

       at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)

       at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)

       at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)

       at System.Windows.Threading.Dispatcher.Run()

       at System.Windows.Application.RunDispatcher(Object ignore)

       at System.Windows.Application.RunInternal(Window window)

       at System.Windows.Application.Run(Window window)

       at System.Windows.Application.Run()

       at OriStarVision.App.Main() in C:\OriStarMappingInc\OriStarVision\obj\x86\Debug\App.g.cs:line 0

       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)

       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)

       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)

       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

       at System.Threading.ThreadHelper.ThreadStart()

  InnerException: 


I reposted this under WPF Desktop Edition. 
  
 Dennis 


Hi Dennis, 
  
 We don’t have update on MrSid dlls, does your code work correct with our 7.0? 
  
 And any version should work the same because MrSid supported by MapSuiteCore. 
  
 We did a quickly test with this version and our mrsid file, we don’t get this exception when try to open layer and get boundingbox. 
  
 For reproduce your exception, we need a test data and simple sample which can reproduce your issue. 
  
 Regards, 
  
 Don

Don, 
  
 MrSid’s work in my application in V7.0.  I have encountered trouble with MrSid’s for V6.0 & V7.0, and now V8.0.  For each case it was a matter of what & where the MrSid DLL’s should be located. 
  
 There is nothing wrong with my data and there is nothing wrong with my code. 
  
 I installed V8.0 on my development machine and expected that it would setup the proper MrSid DLL’s.  The odd thing is that the MrSid’s do work under my target machines under V8.  For V7 they worked under my development machine, but not my target machine. 
  
 Please tell me where the MrSid DLL’s need to be placed. 
  
 Thanks, 
 Dennis 


Hi Dennis, 
  
 Have you installed the "Setup Unmanaged Dependencies x.0.x.x.msi" on your machine which cannot run your code correct? 
  
 I think all necessary dll have been packaged in it. 
  
 Regards, 
  
 Don

Don,



Is not the msi you reference installed when MapSuite V8.0 is installed?



I have a Map Suite 8.0 directory in my SysWOW64 directory so that msi must have been installed.



It is odd that the MrSid’s work on my target XP machines without having moved in the Map Suite V8.0 directory under the System directory.  Why would that be?



Regards,

Dennis


Don,



Doesn’t appear that the following DLL’s have been updated in the SysWOW64 directory.  The new set of DLL’s all have a date of 5/7/2014.



Should these be moved in?



Thanks,

Dennis



Directory of C:\Windows\SysWOW64


06/11/2011  01:58 AM           421,200 msvcp100.dll

06/09/2013  10:20 AM           743,760 msvcp100d.dll

06/11/2011  01:58 AM           773,968 msvcr100.dll

06/09/2013  10:20 AM         1,505,104 msvcr100d.dll



Hi Dennis,



Our dlls are placed under C:\Windows\SysWOW64(or system32)\Map Suite 8.0 by default. Please see my attached image.







We want to reproduce your issue, please let us know your detail setting include your OS version (x86/x64).



We still suggest you to install “Map Suite Unmanaged Dependencies 8.0.16.0.msi” for make sure whether it works for you.



Regards,



Don




Don,



My machine is Windows-7 Professional 64-bit.



The directories in you attached image is what I have installed on my machine.  What about these dll’s, they have not been updated?

Directory of C:\Windows\SysWOW64

06/11/2011  01:58 AM           421,200 msvcp100.dll

06/09/2013  10:20 AM           743,760 msvcp100d.dll

06/11/2011  01:58 AM           773,968 msvcr100.dll

06/09/2013  10:20 AM         1,505,104 msvcr100d.dll



Also, I have MapSuite V8.0.14.0 installed.  Are the MrSid’s supported in my version?



This msi you’ve been mentioning, I cannot find that anywhere, where is it located?



Regards,

Dennis





Don, 
  
 I moved in the msvcp*.dll’s and msvcr*.dll’s and my application continues to encounter the exception. 
  
 I’m attempting to load 16 MrSid’s.  Instead of loading all 16 it appears I can load 4 of them without encountering the exception. 
  
 It’s kind of suspicious that the exception is memory corruption when I attempt to load more than 4. 
  
 Thanks, 
 Dennis 


Hi Dennis,



Okay, since you have verified this is because the MrSid layers count and size results to the memory corruption issue. So I don’t think it is related with any third-party dlls version. But we can also try to re-install the mapsuiteunmanagered.msi. You can find it in Product center=>Wpf Desktop => Daily build download linkbutton.



Btw, I am keeping one eye on another post on a memory issue which is also from you and I am not sure if this is related with it But what I know is my partners are trying their best to figure out a solution on it and I hope they will have some progresses.



Thanks,

Troy

Troy, 
  
 I downloaded V8.0.17.0, but continue to receive the corrupted memory exception. 
  
 In V7 the MrSid’s loaded without issue. 
  
 Thanks, 
 Dennis 


Troy, 
  
 When I move the 'MapSuite 8.0\GeoRasterX86 directory to the \Windows\System32 on an XP machine I do not receive the exception. 
  
 However, when I move the 'MapSuite 8.0\GeoRasterX86 directory to the \Windows\SYSWow64 on a Windows 7 machine I receive the exception.  Both my development and some target machines are Windows-7. 
  
 On the Windows 7 target machine when I remove the \Windows\SYSWow64\Map Suite 8.0 directory and leave the Map Suite 7.0 directory in place it all works. 
  
 One thing I never mentioned before is that the MrSid’s are loaded into an Overlay that is being cached.  Would that have any adverse effect in moving from V7 to V8? 
  
 Thanks, 
 Dennis 


Hi Dennis,



Thanks for the update.

Sorry I forget to tell you the unmanagered dependencies msi is only included in product center since 8.0.20.0 dll packages. After downloading the packages, you should can see the below structure:



Then, let’s try to re-install the installation. Please note that, even the daily version is 8.0.20.0, the unmanagered dependencies version is still 8.0.16.0, they are not sharing the same version number.



Since you mentioned the V7 works fine in windows 7, then we compared the GeoRaster dlls which are in system 32 or SYSWow64 folder between v7 and v8, the only difference is the v7 is using the dlls under debug mode and v8 is switching to release mode. Now, I attached the Raster dlls like V7, If the installation before still doesn’t help, would you mind to replace the v8 GeoRaster dlls in system 32 or SYSWow64 with the new ones? (I think backup it is required).



If the issue still persists, could you do me a favor by comparing those GeoRaster dlls in your end between v7 and v8? I want to know the details and the exact version for v7. The “update.log” file records the the unmanagered msi version and it locates under C:\Windows\SysWOW64(system32)\Map Suite X.0 folder. 



Waiting for your feedback.

Thanks,

Troy

GeoRasterX64.zip (29.6 KB)
GeoRasterX86.zip (19.1 KB)

Troy, 
  
 I followed your instructions exactly.  Up to the point of replacing GeoRasterWrapper*.dll I continued to receive the exception, but once I replaced GeoRasterWrapper*.dll I no longer receive the exception and all my MrSid’s load. 
  
 This was done on my development machine.  I will replace GeoRasterWrapper*.dll on my target machines later today and let you know those results. 
  
 Thanks very much for following this through with me…much appreciated! 
  
 Regards, 
 Dennis 
  
  


Hi Dennis, 
  
 So good to know we figure out the reason. I will continue to find out the reason why we switched the build mode from debug to release in V8 and how it affects the performance. We might will rollback it if the build mode does affect the results. 
  
 Also, I will wait your feedback of your test result. 
 Thanks, 
 Troy

Troy,



Installed the DLL’s on my target Windows-7 machine and now the MrSid’s work there as well.



Thanks again,

Dennis


Hi Dennis, 
  
 Good to hear it does work and thanks for the verification. 
  
 Regards, 
 Troy

MapSuite Team,

I have recently upgraded my development & deployment machines to V8.0.0.255 and once again was unable to open my MrSid’s.  There is an exception internally within the MapSuite dll’s that occurs when the raster is opened.



Last July 3rd you had posted a fix in GeoRasterWrapperX86.dll, which I downloaded and installed and it fixed my issue.  We are now right back there.



I replaced GeoRasterWrapperX86.dll from V8.0.0.255 with the version from July 2, 2014 and now my MrSid’s load fine.



It would appear that whatever fix was made last July was not applied to your base code.



Would you  please let me know when you have an updated GeoRasterRasterX86.dll (and X64) so that I can download and be current .



Thanks,

Dennis




Hi Dennis, 
  
 We have a release schedule on Map Suite 9.0 about at the end of May this year. 
  
 Thanks,