V8.b10 Gradient Edit menu sends internal error with multi-monitors

Couldn’t find if this is already known, but I have a 3 monitor set-up, whenever the Gradient Edit menu gets called to open with Pro Motion NG displayed on a monitor that isn’t set as the primary monitor for Windows 10 it will send a Internal Error like the program has crashed. If you simply click continue application the program will continue like normal with the Gradient Edit menu working fine until it needs to be opened again which results in the same error.

I tried this with the Stable version and it doesn’t happen there, but I tested it on Beta 10 and Beta 9 which does make it happen.

Here’s some of the bug report it generates for me:

exception class    : EAccessViolation
exception message  : Access violation at address 00000000011D0BC4 in module 'pmotion.exe'. Read of address 000000000000000C.

main thread ($e14):
011d0bc4 +004 pmotion.exe  apGradient            602   +1 TGradient.getLength
014612b1 +101 pmotion.exe  apDlgEditGradient     592  +11 TDlgEditGradient.renderGradientSlots
0146151f +00f pmotion.exe  apDlgEditGradient     619   +1 TDlgEditGradient.updateGradientDisplays
01460a58 +008 pmotion.exe  apDlgEditGradient     482   +1 TDlgEditGradient.FormResize
00e01330 +020 pmotion.exe  Vcl.Controls         5781   +1 TControl.Resize
00e0df9f +09f pmotion.exe  Vcl.Controls        11092  +20 TWinControl.WMSize
00f3ecac +02c pmotion.exe  Vcl.Forms            3616   +3 TScrollingWinControl.WMSize
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00e051dd +36d pmotion.exe  Vcl.Controls         7548  +91 TControl.WndProc
00e0c64b +97b pmotion.exe  Vcl.Controls        10583 +170 TWinControl.WndProc
00f427ac +9dc pmotion.exe  Vcl.Forms            4979 +222 TCustomForm.WndProc
00e0b7ea +02a pmotion.exe  Vcl.Controls        10271   +3 TWinControl.MainWndProc
00d2d173 +023 pmotion.exe  System.Classes      18392   +8 StdWndProc
7fff23e1 +089 USER32.dll                                  CallWindowProcW
00e0c7bc +10c pmotion.exe  Vcl.Controls        10624  +30 TWinControl.DefaultHandler
00f45d2e +06e pmotion.exe  Vcl.Forms            6293  +11 TCustomForm.DefaultHandler
00e061a6 +016 pmotion.exe  Vcl.Controls         7863   +1 TControl.WMWindowPosChanged
00e0de58 +0e8 pmotion.exe  Vcl.Controls        11042  +12 TWinControl.WMWindowPosChanged
00f48242 +012 pmotion.exe  Vcl.Forms            7217   +1 TCustomForm.WMWindowPosChanged
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00e051dd +36d pmotion.exe  Vcl.Controls         7548  +91 TControl.WndProc
00e0c64b +97b pmotion.exe  Vcl.Controls        10583 +170 TWinControl.WndProc
00f427ac +9dc pmotion.exe  Vcl.Forms            4979 +222 TCustomForm.WndProc
00e0b7ea +02a pmotion.exe  Vcl.Controls        10271   +3 TWinControl.MainWndProc
00d2d173 +023 pmotion.exe  System.Classes      18392   +8 StdWndProc
7fff253f +01f ntdll.dll                                   KiUserCallbackDispatcher
7fff23e2 +04f USER32.dll                                  SetWindowRgn
00f6406b +08b pmotion.exe  Vcl.Forms           18088  +11 TFormStyleHook.ChangeSize
00f645d7 +267 pmotion.exe  Vcl.Forms           18222  +57 TFormStyleHook.WMWindowPosChanging
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00ef9575 +1b5 pmotion.exe  Vcl.Themes           7689  +38 TStyleHook.WndProc
00ef98c2 +012 pmotion.exe  Vcl.Themes           7788   +1 TMouseTrackControlStyleHook.WndProc
00f64a18 +088 pmotion.exe  Vcl.Forms           18289  +14 TFormStyleHook.WndProc
00ef88d9 +089 pmotion.exe  Vcl.Themes           7394  +20 TStyleHook.HandleMessage
00f5eb13 +013 pmotion.exe  Vcl.Forms           16475   +1 TFormStyleHook.HandleMessage
00fe4050 +0c0 pmotion.exe  Vcl.Styles           3601  +22 TStyleEngine.HandleMessage
00ef3bec +07c pmotion.exe  Vcl.Themes           5858  +11 TStyleManager.HandleMessage
00e099a4 +024 pmotion.exe  Vcl.Controls         9412   +1 TWinControl.DoHandleStyleMessage
00e0bd8d +0bd pmotion.exe  Vcl.Controls        10414   +1 TWinControl.WndProc
00f427ac +9dc pmotion.exe  Vcl.Forms            4979 +222 TCustomForm.WndProc
00e0b7ea +02a pmotion.exe  Vcl.Controls        10271   +3 TWinControl.MainWndProc
00d2d173 +023 pmotion.exe  System.Classes      18392   +8 StdWndProc
7fff253f +01f ntdll.dll                                   KiUserCallbackDispatcher
00e10325 +085 pmotion.exe  Vcl.Controls        12362   +5 TWinControl.SetBounds
00f44946 +306 pmotion.exe  Vcl.Forms            5800  +28 TCustomForm.SetWindowToMonitor
00f41b0d +04d pmotion.exe  Vcl.Forms            4668   +8 TCustomForm.SetVisible
00f4a11d +00d pmotion.exe  Vcl.Forms            7898   +1 TCustomForm.Show
00f4a458 +1e8 pmotion.exe  Vcl.Forms            7971  +30 TCustomForm.ShowModal
0165fe7c +0cc pmotion.exe  apDlgGradientSelect   125   +9 TDlgGradientSelect.btnAddClick
00e058e1 +0a1 pmotion.exe  Vcl.Controls         7664   +9 TControl.Click
00e40166 +026 pmotion.exe  Vcl.StdCtrls         5877   +3 TCustomButton.Click
01020c48 +0c8 pmotion.exe  Vcl.Buttons          2423  +26 TBitBtn.Click
00e41a12 +022 pmotion.exe  Vcl.StdCtrls         6510   +1 TCustomButton.CNCommand
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00e051dd +36d pmotion.exe  Vcl.Controls         7548  +91 TControl.WndProc
00e0c64b +97b pmotion.exe  Vcl.Controls        10583 +170 TWinControl.WndProc
00e3fb80 +090 pmotion.exe  Vcl.StdCtrls         5710  +13 TButtonControl.WndProc
00e04cd0 +030 pmotion.exe  Vcl.Controls         7326  +10 TControl.Perform
00e0c829 +029 pmotion.exe  Vcl.Controls        10652  +12 DoControlMsg
00e0da03 +013 pmotion.exe  Vcl.Controls        10930   +1 TWinControl.WMCommand
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00e051dd +36d pmotion.exe  Vcl.Controls         7548  +91 TControl.WndProc
00e0c64b +97b pmotion.exe  Vcl.Controls        10583 +170 TWinControl.WndProc
00e0b7ea +02a pmotion.exe  Vcl.Controls        10271   +3 TWinControl.MainWndProc
00d2d173 +023 pmotion.exe  System.Classes      18392   +8 StdWndProc
7fff23e1 +0d5 USER32.dll                                  SendMessageW
00e50bef +04f pmotion.exe  Vcl.StdCtrls        11594   +4 TButtonStyleHook.DoClick
00e510c6 +036 pmotion.exe  Vcl.StdCtrls        11756   +8 TButtonStyleHook.WMLButtonUp
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00ef9575 +1b5 pmotion.exe  Vcl.Themes           7689  +38 TStyleHook.WndProc
00ef98c2 +012 pmotion.exe  Vcl.Themes           7788   +1 TMouseTrackControlStyleHook.WndProc
00e50ce2 +092 pmotion.exe  Vcl.StdCtrls        11631  +21 TButtonStyleHook.WndProc
00ef88d9 +089 pmotion.exe  Vcl.Themes           7394  +20 TStyleHook.HandleMessage
00fe4050 +0c0 pmotion.exe  Vcl.Styles           3601  +22 TStyleEngine.HandleMessage
00ef3bec +07c pmotion.exe  Vcl.Themes           5858  +11 TStyleManager.HandleMessage
00e099a4 +024 pmotion.exe  Vcl.Controls         9412   +1 TWinControl.DoHandleStyleMessage
00e0bd8d +0bd pmotion.exe  Vcl.Controls        10414   +1 TWinControl.WndProc
00e3fb80 +090 pmotion.exe  Vcl.StdCtrls         5710  +13 TButtonControl.WndProc
00e0b7ea +02a pmotion.exe  Vcl.Controls        10271   +3 TWinControl.MainWndProc
00d2d173 +023 pmotion.exe  System.Classes      18392   +8 StdWndProc
7fff23e1 +254 USER32.dll                                  DispatchMessageW
00f5155e +12e pmotion.exe  Vcl.Forms           11336  +23 TApplication.ProcessMessage
00f515d3 +013 pmotion.exe  Vcl.Forms           11366   +1 TApplication.HandleMessage
00f4a51f +2af pmotion.exe  Vcl.Forms            7991  +50 TCustomForm.ShowModal
016601ac +03c pmotion.exe  apDlgGradientSelect   195   +4 TDlgGradientSelect.showModal
016eb687 +057 pmotion.exe  apMainForm          11414   +4 TMainForm.btnSelectGradientClick
00e058e1 +0a1 pmotion.exe  Vcl.Controls         7664   +9 TControl.Click
0121bbb4 +054 pmotion.exe  JvButton                       TJvCustomGraphicButton.Click
00e0601d +0ad pmotion.exe  Vcl.Controls         7803   +7 TControl.WMLButtonUp
00b502f2 +042 pmotion.exe  System              18822  +10 TObject.Dispatch
00e051dd +36d pmotion.exe  Vcl.Controls         7548  +91 TControl.WndProc
01217a66 +296 pmotion.exe  JvExControls                   TJvExGraphicControl.WndProc
00e04cd0 +030 pmotion.exe  Vcl.Controls         7326  +10 TControl.Perform
00e0bb5b +0cb pmotion.exe  Vcl.Controls        10348  +15 TWinControl.IsControlMouseMsg
00e0c3ff +72f pmotion.exe  Vcl.Controls        10525 +112 TWinControl.WndProc
00e0b7ea +02a pmotion.exe  Vcl.Controls        10271   +3 TWinControl.MainWndProc
00d2d173 +023 pmotion.exe  System.Classes      18392   +8 StdWndProc
7fff23e1 +254 USER32.dll                                  DispatchMessageW
00f5155e +12e pmotion.exe  Vcl.Forms           11336  +23 TApplication.ProcessMessage
00f515d3 +013 pmotion.exe  Vcl.Forms           11366   +1 TApplication.HandleMessage
00f51a2a +0ea pmotion.exe  Vcl.Forms           11505  +27 TApplication.Run
017eb222 +1f2 pmotion.exe  Pmotion              1121  +58 initialization
7fff2486 +00e KERNEL32.DLL                                BaseThreadInitThunk
7fff253a +01b ntdll.dll                                   RtlUserThreadStart

thread $578:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $2ed4:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $1f58:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $1ca4:
7fff22e6 +e9 KERNELBASE.dll  WaitForMultipleObjectsEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $1ddc:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $1e20:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $1d44:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $20bc:
7fff2486 +0e KERNEL32.DLL  BaseThreadInitThunk
7fff253a +1b ntdll.dll     RtlUserThreadStart

thread $1f9c:
7fff22e6 +e9 KERNELBASE.dll  WaitForMultipleObjectsEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $1664: <priority:-15>
7fff22e3 +87 KERNELBASE.dll  WaitForSingleObjectEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $468: <priority:-15>
7fff22e3 +87 KERNELBASE.dll  WaitForSingleObjectEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $650: <priority:-15>
7fff22e3 +87 KERNELBASE.dll  WaitForSingleObjectEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $2680: <priority:-15>
7fff22e3 +87 KERNELBASE.dll  WaitForSingleObjectEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $2628:
7fff22e3 +87 KERNELBASE.dll  WaitForSingleObjectEx
7fff2486 +0e KERNEL32.DLL    BaseThreadInitThunk
7fff253a +1b ntdll.dll       RtlUserThreadStart

thread $3600:
7fff22e6 +e9 KERNELBASE.dll           WaitForMultipleObjectsEx
00c4f159 +49 pmotion.exe    madExcept ThreadExceptFrame
7fff2486 +0e KERNEL32.DLL             BaseThreadInitThunk
7fff253a +1b ntdll.dll                RtlUserThreadStart

cpu registers:
rax = 0000024555556e00
rbx = 0000000000000000
rcx = 0000000000000000
rdx = 0000024555556e00
rsi = 00000245554d0390
rdi = 0000024555556e00
rip = 00000000011d0bc4
rsp = 000000620effbbd0
rbp = 000000620effbbd0
r8  = 0000000000000220
r9  = 0000000000000044
r10 = 000000000000000d
r11 = 000000620effbaa0
r12 = 0000000000000000
r13 = 0000000000000005
r14 = 0000000000000000
r15 = 0000000000000000

stack dump:
620effbbd0  00 00 00 00 00 00 00 00 - b0 f7 7f 0f 62 00 00 00  ............b...
620effbbe0  00 bf b7 49 45 02 00 00 - 00 00 00 00 00 00 00 00  ...IE...........
620effbbf0  00 00 00 00 22 00 00 00 - 00 00 00 00 00 00 00 00  ...."...........
620effbc00  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
620effbc10  00 00 00 00 22 00 00 00 - 00 00 00 00 00 00 00 00  ...."...........
620effbc20  00 00 00 00 00 00 00 00 - 70 61 c0 47 00 00 00 00  ........pa.G....
620effbc30  c0 bc ff 0e ff ff ff ff - 00 12 98 49 45 02 00 00  ...........IE...
620effbc40  50 da eb 00 00 00 00 00 - 9a d8 eb 00 00 00 00 00  P...............
620effbc50  00 00 00 00 00 00 00 00 - d2 43 c1 00 00 00 00 00  .........C......
620effbc60  0b 00 00 00 00 00 00 00 - d0 0c 0d 46 00 00 00 00  ...........F....
620effbc70  00 00 00 00 00 00 00 00 - 50 bc ff 0e 62 00 00 00  ........P...b...
620effbc80  20 20 0d 46 45 02 00 00 - 01 00 00 00 00 00 00 00    .FE...........
620effbc90  a0 bc ff 0e 62 00 00 00 - 76 d1 d2 00 00 00 00 00  ....b...v.......
620effbca0  60 46 75 49 45 02 00 00 - c0 bc ff 0e 62 00 00 00  `FuIE.......b...
620effbcb0  b0 ff b7 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
620effbcc0  48 00 00 00 00 00 00 00 - 01 00 00 00 00 00 00 00  H...............
620effbcd0  00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
620effbce0  30 00 00 00 00 00 00 00 - ff ff ff ff ff ff ff ff  0...............
620effbcf0  ff ff ff ff ff ff ff ff - 93 e6 e1 23 ff 7f 00 00  ...........#....
620effbd00  00 00 00 00 00 00 00 00 - 22 00 00 00 00 00 00 00  ........".......

disassembling:
011d0bc0     public apGradient.TGradient.getLength:  ; function entry point
011d0bc0 601   push    rbp
011d0bc1       mov     rbp, rsp
011d0bc4 602 > mov     rax, [rcx+$c]
011d0bc8       mov     eax, [rax+$10]
011d0bcb 603   mov     rsp, rbp
011d0bce       pop     rbp
011d0bcf       ret

Thanks for all the amount of support and continued development you’ve done for the program btw. I recently discovered PM-NG and it quickly became my favorite pixel art program out of all the ones I’ve used and I’d love to see it continue to grow.

1 Like

Thanks for the report and the kind words.

Although I could not make it happen here, I think I fixed it. It should have been a race condition that depended on timing of UI events and their processing.

(Should be) fixed with V8 beta 11.

1 Like