PL8.1/Win11.
Recently I noticed several PhotoLab core dumps (170-180 MB *.dmp files) in %localappdata%\CrashDumps. Does it happen to anyone else?
It looks harmless but annoying. All crash dumps files were created few seconds after shutting down PL, with no message in PL logs that something was wrong. The last three lines in DxO.PhotoLab.txt were as usual:
DxONET.Extensibility.ServiceLocator - Info | Closing service ‘CrashHandlingService’ (init order = 1).
DxONET.Extensibility.ServiceLocator - Info | Closing service ‘SentryExceptionProcessor’ (init order = 1).
DxONET.Extensibility.ServiceLocator - Info | Closing service ‘ServiceLocator’ (init order = 0).
Crashes do not happen on each shutdown, so maybe some RAW file causes this, but I would guess it’s some race condition in PL code.
Some details:
In Windows Application EventLog all messages looked similar:
Application: DxO.PhotoLab.exe
Framework Version: v4.0.30319 (base version, the true version is 4.8.9282.0, as seen in PL log DxO.PhotoLab.txt, MS mess)
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NullReferenceException
at DxONET.CorrectionEngine.Base.NativeObjectDxO::Image.get_Data(DxONET.CorrectionEngine.Base.NativePtrDxO::Image*)
at DxONET.CorrectionEngine.Image.Image.get_Width()
at DxO.PhotoLab.Viewer.TileGrid.ImageTileProvider+<>c__DisplayClass21_1.b__1()
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window)
at DxO.PhotoLab.App.Main()
Visual Studio shows the crash here:
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
internal unsafe NativePtr_003CDxO_003A_003AImage_003E Data
{
get
{
//IL_0016: Expected I, but got I8
uint num = 0u;
long num2 = ((long)P_0 = (long)m_nativePtr); // <<=== CRASHES HERE ==
if (num2 != 0L)
{
global::_003CModule_003E.DxO_002EObject_002ERetain((DxO.Object*)num2);
}
Stack dump by VS:
[Managed to Native Transition]
> DxONET.CorrectionEngine.dll!DxONET.CorrectionEngine.Base.NativeObjectDxO::Image.get_Data(DxONET.CorrectionEngine.Base.NativePtrDxO::Image* value) Line 250 C#
DxONET.CorrectionEngine.dll!DxONET.CorrectionEngine.Image.Image.Width.get() Line 336 C#
DxO.PhotoLab.Viewer.dll!DxO.PhotoLab.Viewer.TileGrid.ImageTileProvider.UpdateTiles.AnonymousMethod__1() Line 110 C#
… (and so on, like in EventLog)