midora Posted November 4, 2021 Share Posted November 4, 2021 Could someone describe how SupportsCancellation should be implemented in filetype plugins. Quote Link to comment Share on other sites More sharing options...
Rick Brewster Posted November 4, 2021 Share Posted November 4, 2021 Unfortunately the doc comments don't get baked into the DLL, but this is what it says. This should be left at the default, true, unless it's really difficult for you to not support it. Whenever you do an operation on the Stream, or report progress via the ProgressEventHandler, an OperationCanceledException may be thrown (but only if this property is true). Often you don't need to do much when that happens, just let the exception propagate. Native resources should be handled carefully though, with try/finally blocks, or by wrapping them in managed objects with finalizers (e.g. SafeHandle). This is important so that the user can quickly change the options in the Save Configuration dialog. It is not (currently) used when loading or saving, only when doing "preview saving" in Save Configuration. /// <summary> /// If true, then the Stream and/or ProgressEventHandler may throw an OperationCanceledException so as to cancel /// the save/load operation. This is usually encountered when the user is changing options in the Save Configuration /// dialog. /// </summary> /// <remarks> /// The default value for this property is true. /// </remarks> public bool SupportsCancellation { get { return this.supportsCancellation; } set { VerifyNotFrozen(); this.supportsCancellation = value; } } Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
Rick Brewster Posted November 4, 2021 Share Posted November 4, 2021 BTW the default is actually false for older plugins that use the old deprecated/obsolete FileType constructors. You can't compile a new plugin this way, however, it's purely for compatibility. Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
midora Posted November 29, 2021 Author Share Posted November 29, 2021 Sometimes my ImAPNG filetype crashes in 4.3.3 if I'm changing the options to fast. If the crash happens then there is no OnSave OperationCancelException in my trace output. paint.net just dies. Setting SupportsCancellation to false avoids this issue. But that's not really a solution. The plugin reports progress regularly for each frame of the animation. Quote Link to comment Share on other sites More sharing options...
Rick Brewster Posted November 30, 2021 Share Posted November 30, 2021 If PDN just "dies" and disappears then you're probably causing an access violation in your code somewhere. Run Paint.NET with the /setenv:COMPlus_legacyCorruptedStateExceptionsPolicy=1 parameter, or open a command prompt and execute set COMPlus_legacyCorruptedStateExceptionsPolicy=1 before launching paintdotnet.exe (from within the command prompt). You should then get an actual crash log that shows you (probably) where the access violation is occurring. Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
midora Posted November 30, 2021 Author Share Posted November 30, 2021 What would be the exact name of the crash log file and its location (in the portable 4.3.3 variant)? Any idea what could cause an access violation in the case that paint.net cancels the operation of the plugin? Quote Link to comment Share on other sites More sharing options...
Rick Brewster Posted November 30, 2021 Share Posted November 30, 2021 If you get a crash log then you'll see the crash log dialog. The crash logs are always in the location accessible through Settings -> Diagnostics -> Open Crash Log Folder. Another way to investigate this would be to attach Visual Studio's debugger to paintdotnet.exe, then reproduce the crash. Debugger should break right where it happens. Make sure to enable both "Managed (.NET Core, .NET 5+)" and "Native" debugging types with the "Select" button in the Attach to Process dialog 1 Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
Rick Brewster Posted November 30, 2021 Share Posted November 30, 2021 17 hours ago, Rick Brewster said: You should then get an actual crash log that shows you (probably) where the access violation is occurring. Let me rephrase this ... You should then get an actual crash dialog, which will then come with a crash log. If you don't see a crash dialog then it didn't work. Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
midora Posted November 30, 2021 Author Share Posted November 30, 2021 OK, thanks for the details. Will try this tomorrow. Fighting with an Bluetooth BLE issue in the moment... Quote Link to comment Share on other sites More sharing options...
midora Posted December 1, 2021 Author Share Posted December 1, 2021 Attached the debugger and now I'm getting a crash log window reporting an OperationCanceledExeption. Spoiler This text file was created because paint.net crashed. Please e-mail this to crashlog4@getpaint.net so we can diagnose and fix the problem. Application version: paint.net 4.3.3 (Stable 4.303.7994.40115) Time of crash: 01/12/2021 07:09:10 Application uptime: 00:02:45.1154572 Application state: Running Working set: 528.376 KiB Handles and threads: 1323 handles, 57 threads, 254 gdi, 286 user Install type: Portable Application directory: C:\dev\paint.net.4.3.3.portable.x64 Current directory: C:\dev\paint.net.4.3.3.portable.x64 Install directory: C:\Program Files\paint.net OS Version: Windows 10 Home 10.0.19043.0 x64 .NET version: .NET 6.0.0-rtm.21522.10 x64 Processor: "Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz" @ ~2304MHz (4C/8T, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2) Physical memory: 16100 MB Video card: Intel(R) UHD Graphics (v:8086, d:9B41, r:2), Microsoft Basic Render Driver (v:1414, d:8C, r:0) Hardware acceleration: True (default: True) Pointers: none UI animations: True UI DPI: 120 dpi (1,25x scale) UI theme: VisualStyleCategory=Aero, EffectiveTheme=Aero, DWM=yes, AeroColorScheme=Dark, ThemeFileName=Aero.msstyles Updates: n/a Locale: pdnr.c: en-US, hklm: n/a, hkcu: en-US, cc: en-CH, cuic: en-US Flags: Exception details: System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at PaintDotNet.IO.CancelableStream.Write(Byte[] buffer, Int32 offset, Int32 count) in D:\src\pdn\src\PaintDotNet\IO\CancelableStream.cs:line 78 Managed assemblies: System.Private.CoreLib, .\System.Private.CoreLib.dll, Version=6.0.0.0, PublicKeyToken=7cec85d7bea7798e paintdotnet, .\paintdotnet.dll, Version=4.303.7994.40115 System.Runtime, .\System.Runtime.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PaintDotNet.Base, .\PaintDotNet.Base.dll, Version=4.303.7994.40115 System.Windows.Forms, .\System.Windows.Forms.dll, Version=6.0.0.0, PublicKeyToken=b77a5c561934e089 System.Diagnostics.Process, .\System.Diagnostics.Process.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a TerraFX.Interop.Windows, .\TerraFX.Interop.Windows.dll, Version=10.0.20348.0, PublicKeyToken=35b01b53313a6f7e PaintDotNet.SystemLayer, .\PaintDotNet.SystemLayer.dll, Version=4.303.7994.40115 System.Runtime.InteropServices.RuntimeInformation, .\System.Runtime.InteropServices.RuntimeInformation.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.InteropServices, .\System.Runtime.InteropServices.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PaintDotNet.SystemLayer.Native.x64, .\PaintDotNet.SystemLayer.Native.x64.dll, Version=4.303.7994.40115 System.Threading, .\System.Threading.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Extensions, .\System.Runtime.Extensions.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.CompilerServices.VisualC, .\System.Runtime.CompilerServices.VisualC.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Collections.NonGeneric, .\System.Collections.NonGeneric.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Intrinsics, .\System.Runtime.Intrinsics.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 PaintDotNet.Core, .\PaintDotNet.Core.dll, Version=4.303.7994.40115 System.Private.Uri, .\System.Private.Uri.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.ComponentModel.Primitives, .\System.ComponentModel.Primitives.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Windows.Forms.Primitives, .\System.Windows.Forms.Primitives.dll, Version=6.0.0.0, PublicKeyToken=b77a5c561934e089 WindowsBase, .\WindowsBase.dll, Version=6.0.0.0, PublicKeyToken=31bf3856ad364e35 PresentationFramework, .\PresentationFramework.dll, Version=6.0.0.0, PublicKeyToken=31bf3856ad364e35 System.Drawing.Primitives, .\System.Drawing.Primitives.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Xaml, .\System.Xaml.dll, Version=6.0.0.0, PublicKeyToken=b77a5c561934e089 System.ComponentModel, .\System.ComponentModel.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Collections, .\System.Collections.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Diagnostics.TraceSource, .\System.Diagnostics.TraceSource.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Threading.Thread, .\System.Threading.Thread.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Text.Encoding.CodePages, .\System.Text.Encoding.CodePages.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a Microsoft.Win32.Primitives, .\Microsoft.Win32.Primitives.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PaintDotNet.Resources, .\PaintDotNet.Resources.dll, Version=4.303.7994.40115 Newtonsoft.Json, .\Newtonsoft.Json.dll, Version=13.0.0.0, PublicKeyToken=30ad4fe6b2a6aeed System.Linq.Expressions, .\System.Linq.Expressions.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.ComponentModel.TypeConverter, .\System.ComponentModel.TypeConverter.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.ObjectModel, .\System.ObjectModel.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Configuration.ConfigurationManager, .\System.Configuration.ConfigurationManager.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.Collections.Specialized, .\System.Collections.Specialized.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Numerics, .\System.Runtime.Numerics.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Xml.ReaderWriter, .\System.Xml.ReaderWriter.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PaintDotNet.Data, .\PaintDotNet.Data.dll, Version=4.303.7994.40115 System.Private.Xml, .\System.Private.Xml.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.Net.WebClient, .\System.Net.WebClient.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.ComponentModel.EventBasedAsync, .\System.ComponentModel.EventBasedAsync.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Memory, .\System.Memory.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.Text.Encoding.Extensions, .\System.Text.Encoding.Extensions.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PaintDotNet.Framework, .\PaintDotNet.Framework.dll, Version=4.303.7994.40115 System.Drawing.Common, .\System.Drawing.Common.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 Microsoft.Win32.SystemEvents, .\Microsoft.Win32.SystemEvents.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.Collections.Immutable, .\System.Collections.Immutable.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Linq, .\System.Linq.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a Microsoft.Win32.Registry, .\Microsoft.Win32.Registry.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Threading.ThreadPool, .\System.Threading.ThreadPool.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Collections.Concurrent, .\System.Collections.Concurrent.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PresentationCore, .\PresentationCore.dll, Version=6.0.0.0, PublicKeyToken=31bf3856ad364e35 DirectWriteForwarder, .\DirectWriteForwarder.dll, Version=6.0.0.0, PublicKeyToken=31bf3856ad364e35 System.Diagnostics.Debug, .\System.Diagnostics.Debug.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a UIAutomationTypes, .\UIAutomationTypes.dll, Version=6.0.0.0, PublicKeyToken=31bf3856ad364e35 System.Diagnostics.FileVersionInfo, .\System.Diagnostics.FileVersionInfo.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PaintDotNet.Effects, .\PaintDotNet.Effects.dll, Version=4.303.7994.40115 Accessibility, .\Accessibility.dll, Version=4.0.0.0, PublicKeyToken=31bf3856ad364e35 System.Threading.Tasks.Parallel, .\System.Threading.Tasks.Parallel.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Reflection.MetadataLoadContext, .\System.Reflection.MetadataLoadContext.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.Reflection.Metadata, .\System.Reflection.Metadata.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.IO.Packaging, .\System.IO.Packaging.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.IO.MemoryMappedFiles, .\System.IO.MemoryMappedFiles.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Numerics.Vectors, .\System.Numerics.Vectors.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Diagnostics.Tracing, .\System.Diagnostics.Tracing.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Loader, .\System.Runtime.Loader.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a ImAPNG.FileType, .\FileTypes\ImAPNG.FileType\ImAPNG.FileType.dll, Version=1.4.0.0 ImAGIF.FileType, .\FileTypes\ImAGIF.FileType\ImAGIF.FileType.dll, Version=1.6.0.0 AvifFileType, .\Bundled\AvifFileType\AvifFileType.dll, Version=1.1.17.0 WebPFileType, .\Bundled\WebPFileType\WebPFileType.dll, Version=1.3.7.0 DdsFileTypePlus, .\Bundled\DDSFileTypePlus\DdsFileTypePlus.dll, Version=1.10.10.0 System.IO.FileSystem, .\System.IO.FileSystem.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Serialization.Formatters, .\System.Runtime.Serialization.Formatters.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a mscorlib, .\mscorlib.dll, Version=4.0.0.0, PublicKeyToken=b77a5c561934e089 System.Security.Claims, .\System.Security.Claims.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.CodeDom, .\System.CodeDom.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.Text.RegularExpressions, .\System.Text.RegularExpressions.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.CompilerServices.Unsafe, .\System.Runtime.CompilerServices.Unsafe.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Diagnostics.StackTrace, .\System.Diagnostics.StackTrace.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Private.Xml.Linq, .\System.Private.Xml.Linq.dll, Version=6.0.0.0, PublicKeyToken=cc7b13ffcd2ddd51 System.IO.Compression, .\System.IO.Compression.dll, Version=6.0.0.0, PublicKeyToken=b77a5c561934e089 System.Runtime.Serialization.Primitives, .\System.Runtime.Serialization.Primitives.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a PresentationFramework-SystemXmlLinq, .\PresentationFramework-SystemXmlLinq.dll, Version=6.0.0.0, PublicKeyToken=b77a5c561934e089 System.Xml.XDocument, .\System.Xml.XDocument.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Xml.Linq, .\System.Xml.Linq.dll, Version=4.0.0.0, PublicKeyToken=b77a5c561934e089 System.Console, .\System.Console.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a Microsoft.VisualStudio.DesignTools.WpfTap, c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\commonextensions\microsoft\xamldiagnostics\Core\x64\Microsoft.VisualStudio.DesignTools.WpfTap.dll, Version=16.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.IO.Pipes, .\System.IO.Pipes.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Threading.Tasks, .\System.Threading.Tasks.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Serialization.Json, .\System.Runtime.Serialization.Json.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Private.DataContractSerialization, .\System.Private.DataContractSerialization.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Runtime.Serialization.Xml, .\System.Runtime.Serialization.Xml.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Resources.ResourceManager, .\System.Resources.ResourceManager.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Reflection.Emit.ILGeneration, .\System.Reflection.Emit.ILGeneration.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Reflection.Emit.Lightweight, .\System.Reflection.Emit.Lightweight.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a System.Reflection.Primitives, .\System.Reflection.Primitives.dll, Version=6.0.0.0, PublicKeyToken=b03f5f7f11d50a3a Native modules: .\paintdotnet.exe, version=4.303.7994.40115 C:\WINDOWS\SYSTEM32\ntdll.dll, version=10.0.19041.1023 (WinBuild.160101.0800) C:\WINDOWS\System32\KERNEL32.DLL, version=10.0.19041.1348 (WinBuild.160101.0800) C:\WINDOWS\System32\KERNELBASE.dll, version=10.0.19041.1348 (WinBuild.160101.0800) C:\WINDOWS\System32\USER32.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\win32u.dll, version=10.0.19041.1320 (WinBuild.160101.0800) C:\WINDOWS\System32\GDI32.dll, version=10.0.19041.1202 (WinBuild.160101.0800) C:\WINDOWS\System32\gdi32full.dll, version=10.0.19041.1110 (WinBuild.160101.0800) C:\WINDOWS\System32\msvcp_win.dll, version=10.0.19041.789 (WinBuild.160101.0800) C:\WINDOWS\System32\ucrtbase.dll, version=10.0.19041.789 (WinBuild.160101.0800) C:\WINDOWS\System32\SHELL32.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\ADVAPI32.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\msvcrt.dll, version=7.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\System32\sechost.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\RPCRT4.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\IMM32.DLL, version=10.0.19041.546 (WinBuild.160101.0800) .\hostfxr.dll, version=6,0,21,52210 @Commit: 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 .\hostpolicy.dll, version=6,0,21,52210 @Commit: 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 .\coreclr.dll, version=6,0,21,52210 @Commit: 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 C:\WINDOWS\System32\ole32.dll, version=10.0.19041.1320 (WinBuild.160101.0800) C:\WINDOWS\System32\combase.dll, version=10.0.19041.1320 (WinBuild.160101.0800) C:\WINDOWS\System32\OLEAUT32.dll, version=10.0.19041.985 (WinBuild.160101.0800) C:\WINDOWS\System32\bcryptPrimitives.dll, version=10.0.19041.1348 (WinBuild.160101.0800) .\System.Private.CoreLib.dll, version=6.0.21.52210 .\clrjit.dll, version=6,0,21,52210 @Commit: 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 C:\WINDOWS\SYSTEM32\kernel.appcore.dll, version=10.0.19041.546 (WinBuild.160101.0800) .\paintdotnet.dll, version=4.303.7994.40115 .\System.Runtime.dll, version=6.0.21.52210 C:\WINDOWS\system32\uxtheme.dll, version=10.0.19041.1165 (WinBuild.160101.0800) .\PaintDotNet.Base.dll, version=4.303.7994.40115 .\System.Windows.Forms.dll, version=6.0.21.52301 .\System.Diagnostics.Process.dll, version=6.0.21.52210 .\TerraFX.Interop.Windows.dll, version=10.0.20348.0 .\PaintDotNet.SystemLayer.dll, version=4.303.7994.40115 .\System.Runtime.InteropServices.RuntimeInformation.dll, version=6.0.21.52210 .\System.Runtime.InteropServices.dll, version=6.0.21.52210 .\vcruntime140.dll, version=14.30.30704.0 built by: vcwrkspc .\vcruntime140_1.dll, version=14.30.30704.0 built by: vcwrkspc .\msvcp140.dll, version=14.30.30704.0 built by: vcwrkspc .\msvcp140_1.dll, version=14.30.30704.0 built by: vcwrkspc .\msvcp140_2.dll, version=14.30.30704.0 built by: vcwrkspc .\msvcp140_codecvt_ids.dll, version=14.30.30704.0 built by: vcwrkspc .\vcomp140.dll, version=14.30.30704.0 built by: vcwrkspc .\ijwhost.dll, version=6,0,21,52210 @Commit: 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6 .\PaintDotNet.SystemLayer.Native.x64.dll, version=4.303.7994.40115 C:\WINDOWS\SYSTEM32\PROPSYS.dll, version=7.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.1348_none_91a2627ccc89e3fb\gdiplus.dll, version=10.0.19041.1348 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\WindowsCodecs.dll, version=10.0.19041.1151 (WinBuild.160101.0800) C:\WINDOWS\System32\bcrypt.dll, version=10.0.19041.1 (WinBuild.160101.0800) .\System.Threading.dll, version=6.0.21.52210 .\System.Runtime.Extensions.dll, version=6.0.21.52210 .\System.Runtime.CompilerServices.VisualC.dll, version=6.0.21.52210 .\System.Collections.NonGeneric.dll, version=6.0.21.52210 .\System.Runtime.Intrinsics.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\windows.storage.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\Wldp.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\SHCORE.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\shlwapi.dll, version=10.0.19041.1165 (WinBuild.160101.0800) .\PaintDotNet.Core.dll, version=4.303.7994.40115 .\System.Private.Uri.dll, version=6.0.21.52210 .\System.ComponentModel.Primitives.dll, version=6.0.21.52210 .\System.Windows.Forms.Primitives.dll, version=6.0.21.52301 .\WindowsBase.dll, version=6.0.21.52301 .\PresentationFramework.dll, version=6.0.21.52301 .\System.Drawing.Primitives.dll, version=6.0.21.52210 .\System.Xaml.dll, version=6.0.21.52301 .\System.ComponentModel.dll, version=6.0.21.52210 .\System.Collections.dll, version=6.0.21.52210 .\System.Diagnostics.TraceSource.dll, version=6.0.21.52210 .\System.Threading.Thread.dll, version=6.0.21.52210 .\System.Text.Encoding.CodePages.dll, version=6.0.21.52210 .\Microsoft.Win32.Primitives.dll, version=6.0.21.52210 .\PaintDotNet.Resources.dll, version=4.303.7994.40115 .\Newtonsoft.Json.dll, version=13.0.1.25517 .\System.Linq.Expressions.dll, version=6.0.21.52210 .\System.ComponentModel.TypeConverter.dll, version=6.0.21.52210 .\System.ObjectModel.dll, version=6.0.21.52210 .\System.Configuration.ConfigurationManager.dll, version=6.0.21.52210 .\PresentationNative_cor3.dll, version=6,0,21,48001 @Commit: bf6f24c075ff5315d0ec0e5359138ee796b0491c .\System.Collections.Specialized.dll, version=6.0.21.52210 .\System.Runtime.Numerics.dll, version=6.0.21.52210 .\System.Xml.ReaderWriter.dll, version=6.0.21.52210 .\PaintDotNet.Data.dll, version=4.303.7994.40115 .\System.Private.Xml.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\icu.dll, version=64, 2, 0, 0 (WinBuild.160101.0800) .\System.Net.WebClient.dll, version=6.0.21.52210 .\System.ComponentModel.EventBasedAsync.dll, version=6.0.21.52210 .\System.Memory.dll, version=6.0.21.52210 .\System.Text.Encoding.Extensions.dll, version=6.0.21.52210 .\PaintDotNet.Framework.dll, version=4.303.7994.40115 .\System.Drawing.Common.dll, version=6.0.21.52210 .\Microsoft.Win32.SystemEvents.dll, version=6.0.21.52210 .\System.Collections.Immutable.dll, version=6.0.21.52210 .\System.Linq.dll, version=6.0.21.52210 .\Microsoft.Win32.Registry.dll, version=6.0.21.52210 .\System.Threading.ThreadPool.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\dxgi.dll, version=10.0.19041.1266 (WinBuild.160101.0800) C:\WINDOWS\System32\MSCTF.dll, version=10.0.19041.1165 (WinBuild.160101.0800) .\System.Collections.Concurrent.dll, version=6.0.21.52210 .\PresentationCore.dll, version=6.0.21.52301 .\DirectWriteForwarder.dll, version=6,0,21,52301 @Commit: 3f75a67c752a116de292affae29a22bbb5b71b18 .\System.Diagnostics.Debug.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\dwrite.dll, version=10.0.19041.1 (WinBuild.160101.0800) .\UIAutomationTypes.dll, version=6.0.21.52301 .\System.Diagnostics.FileVersionInfo.dll, version=6.0.21.52210 .\PaintDotNet.Effects.dll, version=4.303.7994.40115 .\Accessibility.dll, version=6.0.21.52301 C:\WINDOWS\System32\clbcatq.dll, version=2001.12.10941.16384 (WinBuild.160101.0800) C:\WINDOWS\System32\UIAnimation.dll, version=10.0.19041.746 (WinBuild.160101.0800) .\System.Threading.Tasks.Parallel.dll, version=6.0.21.52210 .\System.Reflection.MetadataLoadContext.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\version.dll, version=10.0.19041.546 (WinBuild.160101.0800) .\System.Reflection.Metadata.dll, version=6.0.21.52210 .\System.IO.Packaging.dll, version=6.0.21.52210 .\System.IO.MemoryMappedFiles.dll, version=6.0.21.52210 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\comctl32.dll, version=6.10 (WinBuild.160101.0800) .\System.Numerics.Vectors.dll, version=6.0.21.52210 .\System.Diagnostics.Tracing.dll, version=6.0.21.52210 .\ucrtbase.dll, version=10.0.19041.685 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\TextShaping.dll, version= .\System.Runtime.Loader.dll, version=6.0.21.52210 .\FileTypes\ImAPNG.FileType\ImAPNG.FileType.dll, version=1.4.0.0 .\FileTypes\ImAGIF.FileType\ImAGIF.FileType.dll, version=1.6.0.0 C:\WINDOWS\SYSTEM32\mfplat.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\cfgmgr32.dll, version=10.0.19041.1151 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\RTWorkQ.DLL, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\CompPkgSup.DLL, version=10.0.19041.746 (WinBuild.160101.0800) C:\Windows\System32\Windows.StateRepositoryPS.dll, version=10.0.19041.844 (WinBuild.160101.0800) .\Bundled\AvifFileType\AvifFileType.dll, version=1.1.17.0 .\Bundled\WebPFileType\WebPFileType.dll, version=1.3.7.0 .\Bundled\DDSFileTypePlus\DdsFileTypePlus.dll, version=1.10.10.0 .\System.IO.FileSystem.dll, version=6.0.21.52210 C:\Windows\System32\WinTypes.dll, version=10.0.19041.1320 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\d2d1.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\wtsapi32.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\WINSTA.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\d3d11.dll, version=10.0.19041.1202 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\D3D10Warp.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\dxcore.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\UIAutomationCore.dll, version=7.2.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\sxs.dll, version=10.0.19041.1 (WinBuild.160101.0800) .\System.Runtime.Serialization.Formatters.dll, version=6.0.21.52210 .\mscorlib.dll, version=6.0.21.52210 .\System.Security.Claims.dll, version=6.0.21.52210 .\System.CodeDom.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\dwmapi.DLL, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\system32\dataexchange.dll, version=10.0.19041.1151 (WinBuild.160101.0800) C:\WINDOWS\system32\dcomp.dll, version=10.0.19041.1266 (WinBuild.160101.0800) C:\WINDOWS\system32\twinapi.appcore.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\textinputframework.dll, version=10.0.19041.1320 (WinBuild.160101.0800) C:\WINDOWS\System32\CoreUIComponents.dll, version=10.0.19041.546 C:\WINDOWS\System32\CoreMessaging.dll, version=10.0.19041.746 C:\WINDOWS\System32\WS2_32.dll, version=10.0.19041.1081 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\ntmarta.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\powrprof.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\UMPDC.dll, version= .\System.Text.RegularExpressions.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\winmm.DLL, version=10.0.19041.1 (WinBuild.160101.0800) .\System.Runtime.CompilerServices.Unsafe.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\oleacc.dll, version=7.2.19041.746 (WinBuild.160101.0800) C:\WINDOWS\system32\explorerframe.dll, version=10.0.19041.1165 (WinBuild.160101.0800) .\System.Diagnostics.StackTrace.dll, version=6.0.21.52210 .\Microsoft.DiaSymReader.Native.amd64.dll, version=14.28.29715.1 built by: vcwrkspc C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_ea63d1eddd5853b5\igd10iumd64.dll, version=26.20.100.6911 C:\WINDOWS\SYSTEM32\ncrypt.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\NTASN1.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_ea63d1eddd5853b5\igdgmm64.dll, version=26.20.100.6911 C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_ea63d1eddd5853b5\igc64.dll, version=26.20.100.6911 .\System.Private.Xml.Linq.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\policymanager.dll, version=10.0.19041.1320 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\msvcp110_win.dll, version=10.0.19041.546 (WinBuild.160101.0800) .\System.IO.Compression.dll, version=6.0.21.52210 C:\WINDOWS\SYSTEM32\profapi.dll, version=10.0.19041.844 (WinBuild.160101.0800) .\System.Runtime.Serialization.Primitives.dll, version=6.0.21.52210 .\PresentationFramework-SystemXmlLinq.dll, version=6.0.21.52301 .\System.Xml.XDocument.dll, version=6.0.21.52210 .\System.Xml.Linq.dll, version=6.0.21.52210 .\System.Console.dll, version=6.0.21.52210 c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\commonextensions\microsoft\xamldiagnostics\x64\Microsoft.VisualStudio.DesignTools.WpfTapBootstrap.dll, version=16.0.31603.221 C:\WINDOWS\SYSTEM32\mscoree.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll, version=4.8.4180.0 built by: NET48REL1LAST_B c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\commonextensions\microsoft\xamldiagnostics\Core\x64\Microsoft.VisualStudio.DesignTools.WpfTap.dll, version=16.11.31603.221 .\System.IO.Pipes.dll, version=6.0.21.52210 .\System.Threading.Tasks.dll, version=6.0.21.52210 .\System.Runtime.Serialization.Json.dll, version=6.0.21.52210 .\System.Private.DataContractSerialization.dll, version=6.0.21.52210 .\System.Runtime.Serialization.Xml.dll, version=6.0.21.52210 .\System.Resources.ResourceManager.dll, version=6.0.21.52210 .\System.Reflection.Emit.ILGeneration.dll, version=6.0.21.52210 .\System.Reflection.Emit.Lightweight.dll, version=6.0.21.52210 .\System.Reflection.Primitives.dll, version=6.0.21.52210 C:\WINDOWS\System32\comdlg32.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\XmlLite.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\Windows\System32\Windows.FileExplorer.Common.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\LINKINFO.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\System32\DUI70.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\DUser.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\Windows\System32\thumbcache.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\Windows\System32\Windows.UI.FileExplorer.dll, version=10.0.19041.1202 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\edputil.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\atlthunk.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\System32\StructuredQuery.dll, version=7.0.19041.867 (WinBuild.160101.0800) C:\Windows\System32\iertutil.dll, version=11.00.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\system32\Windows.Storage.Search.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\SspiCli.dll, version=10.0.19041.1266 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\samcli.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\SAMLIB.dll, version=10.0.19041.1348 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\netutils.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\MPR.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\drprov.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\ntlanman.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\davclnt.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\System32\DAVHLPR.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\System32\wkscli.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\cscapi.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\System32\coml2.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\Windows\System32\twinapi.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\system32\msieftp.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\system32\urlmon.dll, version=11.00.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\system32\SHDOCVW.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\system32\srvcli.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\apphelp.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\system32\WININET.dll, version=11.00.19041.1165 (WinBuild.160101.0800) C:\Windows\System32\dlnashext.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\Windows\System32\PlayToDevice.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\Windows\System32\DevDispItemProvider.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\Users\osieka\AppData\Local\Microsoft\OneDrive\21.220.1024.0005\FileSyncShell64.dll, version=21.220.1024.0005 C:\WINDOWS\System32\CRYPT32.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\Secur32.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\USERENV.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\CRYPTBASE.DLL, version=10.0.19041.546 (WinBuild.160101.0800) C:\WINDOWS\system32\NetworkExplorer.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\Windows\System32\EhStorShell.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\SETUPAPI.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\ntshrui.dll, version=10.0.19041.1165 (WinBuild.160101.0800) C:\WINDOWS\System32\MMDevApi.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\DEVOBJ.dll, version=10.0.19041.1151 (WinBuild.160101.0800) C:\Windows\System32\PortableDeviceApi.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\System32\WINTRUST.dll, version=10.0.19041.1266 (WinBuild.160101.0800) C:\WINDOWS\System32\MSASN1.dll, version=10.0.19041.546 (WinBuild.160101.0800) C:\Windows\System32\PortableDeviceTypes.dll, version=10.0.19041.746 (WinBuild.160101.0800) C:\Windows\System32\EhStorAPI.dll, version=10.0.19041.1 (WinBuild.160101.0800) C:\WINDOWS\SYSTEM32\PhotoMetadataHandler.dll, version=10.0.19041.746 (WinBuild.160101.0800) ------------------------------------------------------------------------------ The VS output window shows Spoiler {X=0,Y=0,Width=500,Height=122}, dispose=0Save frame 46 of 486, region={X=0,Y=7,Width=500,Height=143}, dispose=0Save frame 47 of 486, region={X=0,Y=0,Width=500,Height=121}, dispose=0Exception thrown at 0x00007FFFEFDD4F69 (KernelBase.dll) in paintdotnet.exe: 0x0000071A: The remote procedure call was canceled, or if a call time-out was specified, the call timed out. The thread 0x1b80 has exited with code 0 (0x0). 'paintdotnet.exe' (Win32): Loaded 'C:\dev\paint.net.4.3.3.portable.x64\vcruntime140_cor3.dll'. The thread 0x8ec has exited with code -2146233029 (0x8013153b). The thread 0x1824 has exited with code -2146233029 (0x8013153b). The thread 0x42c8 has exited with code -2146233029 (0x8013153b). The thread 0x1398 has exited with code -2146233029 (0x8013153b). The thread 0xb2c has exited with code -2146233029 (0x8013153b). The thread 0x4760 has exited with code -2146233029 (0x8013153b). The thread 0x1224 has exited with code -2146233029 (0x8013153b). The thread 0x3d18 has exited with code -2146233029 (0x8013153b). The thread 0x47d0 has exited with code -2146233029 (0x8013153b). The thread 0x3d00 has exited with code -2146233029 (0x8013153b). The thread 0x4b74 has exited with code -2146233029 (0x8013153b). The thread 0x1e58 has exited with code -2146233029 (0x8013153b). The thread 0x22b8 has exited with code -2146233029 (0x8013153b). The thread 0x10e8 has exited with code -2146233029 (0x8013153b). The thread 0x40f8 has exited with code -2146233029 (0x8013153b). The thread 0x3ad8 has exited with code -2146233029 (0x8013153b). The thread 0x3244 has exited with code -2146233029 (0x8013153b). The thread 0x258c has exited with code -2146233029 (0x8013153b). The thread 0x44b4 has exited with code -2146233029 (0x8013153b). The thread 0x46c0 has exited with code -2146233029 (0x8013153b). The thread 0x2cc8 has exited with code -2146233029 (0x8013153b). The thread 0x460 has exited with code -2146233029 (0x8013153b). The thread 0x3d50 has exited with code -2146233029 (0x8013153b). The thread 0x4414 has exited with code -2146233029 (0x8013153b). The thread 0x47b0 has exited with code -2146233029 (0x8013153b). The thread 0x1e04 has exited with code -2146233029 (0x8013153b). The thread 0x4278 has exited with code -2146233029 (0x8013153b). The thread 0x1620 has exited with code -2146233029 (0x8013153b). The thread 0x3c9c has exited with code -2146233029 (0x8013153b). The thread 0x4418 has exited with code -2146233029 (0x8013153b). The thread 0x1338 has exited with code -2146233029 (0x8013153b). The thread 0x4034 has exited with code -2146233029 (0x8013153b). The thread 0x17ac has exited with code -2146233029 (0x8013153b). The thread 0x320c has exited with code -2146233029 (0x8013153b). The thread 0x4584 has exited with code -2146233029 (0x8013153b). The thread 0x3388 has exited with code -2146233029 (0x8013153b). The thread 0x960 has exited with code -2146233029 (0x8013153b). The thread 0x2b5c has exited with code -2146233029 (0x8013153b). The thread 0x158c has exited with code -2146233029 (0x8013153b). The thread 0x2558 has exited with code -2146233029 (0x8013153b). The thread 0x4874 has exited with code -2146233029 (0x8013153b). The thread 0x4354 has exited with code -2146233029 (0x8013153b). The thread 0x32c has exited with code -2146233029 (0x8013153b). The thread 0x3c6c has exited with code -2146233029 (0x8013153b). The thread 0x3548 has exited with code -2146233029 (0x8013153b). The thread 0x1e8c has exited with code -2146233029 (0x8013153b). The thread 0x40ec has exited with code -2146233029 (0x8013153b). The thread 0x1b70 has exited with code -2146233029 (0x8013153b). The thread 0x4b10 has exited with code -2146233029 (0x8013153b). The thread 0x248 has exited with code -2146233029 (0x8013153b). The thread 0x493c has exited with code -2146233029 (0x8013153b). The thread 0x28e0 has exited with code -2146233029 (0x8013153b). The thread 0x4994 has exited with code -2146233029 (0x8013153b). The thread 0x2b58 has exited with code -2146233029 (0x8013153b). The thread 0x4304 has exited with code -2146233029 (0x8013153b). The thread 0x3e20 has exited with code -2146233029 (0x8013153b). The thread 0x3504 has exited with code -2146233029 (0x8013153b). The program '[6612] paintdotnet.exe' has exited with code -2146233029 (0x8013153b). Means the save operation has been aborted while writing image frame 47 of 486. Or is this misleading now if paint.net reports the OperationCanceledException? Quote Link to comment Share on other sites More sharing options...
null54 Posted December 1, 2021 Share Posted December 1, 2021 2 hours ago, midora said: {X=0,Y=0,Width=500,Height=121}, dispose=0Exception thrown at 0x00007FFFEFDD4F69 (KernelBase.dll) in paintdotnet.exe: 0x0000071A: The remote procedure call was canceled, or if a call time-out was specified, the call timed out. It looks like the OperationCanceledException may be causing a second exception to be thrown from within the native code that kills the process. Although, I may be wrong about that. I ran into a similar issue with older versions of my WebP FileType. The OperationCanceledException was triggering an access violation in the native code. Quote Plugin Pack | PSFilterPdn | Content Aware Fill | G'MIC | Paint Shop Pro Filetype | RAW Filetype | WebP Filetype The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait Link to comment Share on other sites More sharing options...
midora Posted December 1, 2021 Author Share Posted December 1, 2021 Maybe I should tell that the plugin is using Microsoft WinAny DynamicNativeLibrary to load lthe latest libpng 1.6.37 from an embedded resource (just to avoid the external dll issues). The other unsafe native stuff is the typical Bitmap handling. I may check what happens switching to external dlls. Quote Link to comment Share on other sites More sharing options...
null54 Posted December 1, 2021 Share Posted December 1, 2021 2 hours ago, midora said: Maybe I should tell that the plugin is using Microsoft WinAny DynamicNativeLibrary to load lthe latest libpng 1.6.37 from an embedded resource (just to avoid the external dll issues). That could definitely cause an issue if the managed code throws an exception. I have worked with libpng in some of my projects, e.g. the G'MIC 8bf plugin. The error handling is based on setjmp, so I would recommend wrapping the libpng code in a C/C++ DLL that your PDN plugin calls. This is probably easier that trying to get the libpng error handling working from C#. The gmic-8bf PNG writer may be of use as an example: https://github.com/0xC0000054/gmic-8bf/blob/main/src/common/PngWriter.cpp The most important thing is that any exception that is thrown in a callback on the managed side must be caught and re-thrown after returning from the native code. This allows the native code to cleanly shutdown before Paint.NET sees any exceptions on the managed side. Quote Plugin Pack | PSFilterPdn | Content Aware Fill | G'MIC | Paint Shop Pro Filetype | RAW Filetype | WebP Filetype The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait Link to comment Share on other sites More sharing options...
midora Posted December 1, 2021 Author Share Posted December 1, 2021 To disable longjmp I'm using png_set_error_fn(png_ptr_ptr, IntPtr.Zero, Marshal.GetFunctionPointerForDelegate((Delegate) new png_error_ptr(HandleError)), Marshal.GetFunctionPointerForDelegate((Delegate) new png_error_ptr(HandleWarning))); public void HandleError(IntPtr png_ptr, string msg) { System.Diagnostics.Trace.WriteLine("ERROR: " + msg); throw new Exception(msg); } and this seems to work. During development I have seen the ERROR/Warning message in the log, paint.net catched the exception and showed it in an error dialog. I'm catching and rethrowing exceptions in the managed code (and dump them to the trace log). But it may be that if the plugin is just executing unmanaged code it does not catch the exception and fails to clean up. But why should the application die in the case of a c# eception? Quote Link to comment Share on other sites More sharing options...
Rick Brewster Posted December 1, 2021 Share Posted December 1, 2021 Yeah it sounds like an exception is happening in managed code (the OperationCanceledException) and it's propagating to native code, and it won't know what to do with it -- in fact, it may just ignore it and keep marching forward, which could easily result in an AV because your managed code is in an inconsistent state. When you have native code calling back into your managed code through a function pointer, it's important to catch any exceptions and translate them into something that the native code understands. For Win32 code this usually means HRESULTs. So, don't throw exceptions from managed code over into native code. It won't know what to do, and it may just drop them. Exceptions don't always propagate across the barrier, in other words. If you have a link to your code I can probably spot what's going on and give you some suggestions. Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
midora Posted December 1, 2021 Author Share Posted December 1, 2021 1 hour ago, Rick Brewster said: If you have a link to your code I can probably spot what's going on and give you some suggestions. Thanks for the offer. In the moment the code is just in a local repository to track changes. I may place it on github sometime but because I never did it, its just an isuue on my to do list 😉 So I may come back. In the moment I'm just setting SupportsCancellation to false. That's no long term solution but in the moment I'm more interested to get it to run. Because png offers more color variants than gif this part of the code is a little bit more complex. I may add an SIGSEGV handler but that's not really a solution. Quote Link to comment Share on other sites More sharing options...
null54 Posted December 1, 2021 Share Posted December 1, 2021 4 hours ago, midora said: To disable longjmp I'm using I see 2 issues with those snippets. 1. The delegates that you are passing to png_set_error_fn could be collected by the GC, the delegates should be a field in the containing class. 2. Your HandleError method need to call png_destroy_write_struct(png_ptr_ptr, info_ptr_ptr) to cleanup the libpng data before throwing the exception. Quote Plugin Pack | PSFilterPdn | Content Aware Fill | G'MIC | Paint Shop Pro Filetype | RAW Filetype | WebP Filetype The small increase in performance you get coding in C++ over C# is hardly enough to offset the headache of coding in the C++ language. ~BoltBait Link to comment Share on other sites More sharing options...
otuncelli Posted December 1, 2021 Share Posted December 1, 2021 OperationCanceledException thrown by Paint.NET on CancelableStream. Plugins have no idea what the stream type is nor whether if the underlying stream can throw that exception. It's not listed in possible exceptions: https://docs.microsoft.com/en-us/dotnet/api/system.io.stream.write?view=net-6.0#Exceptions System.OperationCanceledException: The operation was canceled. at System.Threading.CancellationToken.ThrowOperationCanceledException() at PaintDotNet.IO.CancelableStream.Write(Byte[] buffer, Int32 offset, Int32 count) in D:\src\pdn\src\PaintDotNet\IO\CancelableStream.cs:line 78 This problem generally means the plugin is not thread-safe. You should try using locks in more places and see if that crash repeats. If possible, try wrapping your whole OnSave method in a lock block. Your plugin needs to be thread-safe for preview generation. Also you should catch (in the plugin's code) OperationCanceledException and initiate the cleanup and reset state or you'll have memory leaks and crashes. I'd like to have an official way to disable Preview generation and have completely different API for preview generation (like OnGeneratePreview() method) so I don't have to use hacks like Stopwatch. Quote Link to comment Share on other sites More sharing options...
midora Posted December 1, 2021 Author Share Posted December 1, 2021 44 minutes ago, null54 said: 1. The delegates that you are passing to png_set_error_fn could be collected by the GC, the delegates should be a field in the containing class. You are absolutely right about this. Thanks. 45 minutes ago, null54 said: Your HandleError method need to call png_destroy_write_struct(png_ptr_ptr, info_ptr_ptr) to cleanup the libpng data before throwing the exception. I guess there was a complete misunderstanding on my side about the call stack. I guess I had in mind that the throw will be catched by the plugin which does the cleanup. Quote Link to comment Share on other sites More sharing options...
midora Posted December 1, 2021 Author Share Posted December 1, 2021 44 minutes ago, otuncelli said: Your plugin needs to be thread-safe for preview generation. But load and save are completly independent. And both should be thread safe for sure. I will not implement locks around the whole code just because paint.net throws an OperationCancelledException. I started this topic because I had only an idea what this new setting means and I (and maybe others) just learned that paint.net throws this exception and that you should clean up. Quote Link to comment Share on other sites More sharing options...
otuncelli Posted December 1, 2021 Share Posted December 1, 2021 (edited) 6 hours ago, midora said: I will not implement locks around the whole code just because paint.net throws an OperationCancelledException. For debugging only, to see if it still crashes. It's generally easy to wrap portions of code in a lock block and test. Load and Save are different and your managed code might be completely seems thread-safe/independent but if you've a native library reference, it's a different story. For example, every pinvoke call in one of my plugin (alternative pdf) in a lock block, otherwise it crashes because the native library I use is not thread-safe itself. Anyway, it seems like your issue was different and not related to thread-safety like mine. Edited December 2, 2021 by otuncelli Quote Link to comment Share on other sites More sharing options...
midora Posted December 2, 2021 Author Share Posted December 2, 2021 @otuncelliIt really depends on the library. The first thing in libpng is to request a kind of handle which is later used for other library calls and because there is one handle for read and another for write there is no issue. The main issue is that the access of the managed stream in the native code may throw an exception. I can catch it but this doesn't help because re-throw can not unwind the stack to the caller of the native code. managed save plug in => native write method => managed write call back => catched exception => re-throw kills Paint.NET This was really something I didn't had in mind and @null54may be right that the only solution is to wrap code in setjmp/longjmp. But there are so many native methods that I do not like this solution. managed save plug in => native write method, setjmp => managed write call back => catched exception, longjmp back to native method, return error to save plugin, throw exception. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.