Question:
Hi,
I am using 64-bit Chilkat .NET assembly for the 4.5 Framework in Visual studio 2013. Everything is working fine and smooth when we deployed the application in Windows Server 2008 R2 (installed .Net Framework 4.5.1). However, when we moved the app to Windows Server 2012, we started to encounter System.AccessViolationException during compression of data. Please see event viewer logs below:
Application Error
Faulting application name: w3wp.exe, version: 8.0.9200.16384, time stamp: 0x50108835 Faulting module name: ChilkatDotNet45.DLL, version: 9.4.1.0, time stamp: 0x520d2c5f Exception code: 0xc0000005 Fault offset: 0x00000000004316ee Faulting process id: 0x71c Faulting application start time: 0x01cf2c5aefa558db Faulting application path: c:windowssystem32inetsrvw3wp.exe Faulting module path: C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Filesrootf35d50979d8b0f28assemblydl3ad5e8e16b0dad04f_5a2ccf01ChilkatDotNet45.DLL
Stack Trace
Application: w3wp.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.AccessViolationException Stack: at <module>.ClsCompression.CompressBytes(ClsCompression, DataBuffer, DataBuffer, ProgressEvent) at <module>.ClsCompression.CompressBytes(ClsCompression, DataBuffer, DataBuffer, ProgressEvent) at Chilkat.Compression.CompressBytes(Byte[]) at ConnectedBusinessNetwork.BusinessRules.Process.CBNProcess.StreamHelper.CompressData2(Byte[]) at ConnectedBusinessNetwork.BusinessRules.Process.CBNProcess.StreamHelper.CompressEntityToByteArray2[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] at ConnectedBusinessNetwork.BusinessRules.Process.CBNProcess.Supplier.SupplierInventoryProcess.DownloadInventoryItemImage2(System.String, System.String, System.Collections.Generic.List`1<int32>) at DynamicClass.SyncInvokeDownloadInventoryItemImage2(System.Object, System.Object[], System.Object[]) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(System.Object, System.Object[], System.Object[] ByRef) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(System.ServiceModel.Dispatcher.MessageRpc ByRef) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(System.ServiceModel.Dispatcher.MessageRpc ByRef) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(System.ServiceModel.Dispatcher.MessageRpc ByRef) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean) at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(System.ServiceModel.Channels.RequestContext, Boolean, System.ServiceModel.OperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(System.ServiceModel.Channels.RequestContext, System.ServiceModel.OperationContext) at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(System.IAsyncResult) at System.Runtime.IOThreadScheduler+ScheduledOverlapped.IOCallback(UInt32, UInt32, System.Threading.NativeOverlapped) at System.Runtime.Fx+IOCompletionThunk.UnhandledExceptionFrame(UInt32, UInt32, System.Threading.NativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
This is the details on lastErrorText log:
No message has been log after the CompressBytes method has been called, because the app crashed right after calling it.
ChilkatLog: UnlockComponent: DllDate: Aug 15 2013 ChilkatVersion: 9.4.1.42 UnlockPrefix: NONE Username: WIN-PRGKI1CEGI9:WIN-PRGKI1CEGI9$ Architecture: Little Endian; 64-bit Language: .NET 4.5 / x64 VerboseLogging: 0 component: Compress unlockCode: --Secret-- RegKey: LibDate: Aug 15 2013 requiresPerm: 0 re-parsing expire date... Component successfully unlocked using permanent unlock code. --RegKey Success. --UnlockComponent --ChilkatLog
Help please?! Thanks!!
Please try this new build:
32-bit: http://www.chilkatsoft.com/preRelease/ChilkatDotNet45-9.5.0-win32.zip
64-bit: http://www.chilkatsoft.com/preRelease/ChilkatDotNet45-9.5.0-x64.zip
Also, if using PPMD on 64-bit, it's best to switch to another compression algorithm because there are known problems with it. The 32-bit version is solid and has never had a problem. The other algorithms available w/ Chilkat.Compression are BZIP2, Deflate, and LZW.
Also, the PPMD algorithm comes in many variants. The one implemented by the Chilkat.Compression is the "J" variant. Chilkat has since implemented the "I" variant, which is the standard PPMD compression used in the ZipX format, which is handled by Chilkat Zip (for unzipping only at this point). Both 32-bit and 64-bit versions of the "I" variant are working without issues. When time allows, the "I" variant will be "plugged in" to the Chilkat.Compression class to make it available.