freezy / dmd-extensions

A toolbox for virtual pinball dot matrix displays.
GNU General Public License v2.0
127 stars 54 forks source link

Flex DMD not working in latest builds #386

Closed wiesshund closed 1 year ago

wiesshund commented 1 year ago

dmdext-2.2.0-PLUGINS-r11-x86-Release and dmdext-2.2.0-PLUGINS-r11-x64-Release

when a table script gets to the command flexDMD.run to start flexDMD

it crashes Here the the crash message

image

rolled back to 2.1.3 R37 to compare No crash, works fine

wiesshund commented 1 year ago

2.2.0 Beta1 is also error free

If there is something i can do to help narrow down the cause, let me know

wiesshund commented 1 year ago

2.2.0 R9 through R11 have the issue I am not sure if i can roll back before R9, dont see the builds to try

freezy commented 1 year ago

Is there more in the Script Runtime Error box? A full stack trace would be nice. Maybe elsewhere in a log?

wiesshund commented 1 year ago

only what it shows and nothing in dmddevice log or flexdmd log appears to never get that far?

freezy commented 1 year ago

If it crashes then there should be a log. Any chance you could search for it in the vpinball folder? Sometimes it gets written in the tables folder or whatever the current working dir is.

wiesshund commented 1 year ago

Took a few tries

image

FlexDMD log

[1] 2023/06/27 15:16:34.313  INFO | FlexDMD version 1.9.0.0 
 [1] 2023/06/27 15:16:34.479  INFO | Render mode set to DMD_RGB 
 [1] 2023/06/27 15:16:34.479  INFO | Game name set to bhol_ltd 
 [1] 2023/06/27 15:16:34.487  INFO | Table File defined to LTD Black Hole.vpx 
 [1] 2023/06/27 15:16:34.512  INFO | Show DMD 
 [1] 2023/06/27 15:16:34.690  INFO | Loaded dmddevice64.dll from C:\vpx\VPinMAME\dmddevice64.dll to create a virtual DMD

DMDDevice log

[1] 2023/06/27 15:30:05.557 ERROR | System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: Cannot create ActiveX component.
   at Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String ServerName)
   at B2S.B2SData.get_VPinMAME()
   at B2S.Server.get_Games(String gamename)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
 [2] 2023/06/27 15:30:05.809 ERROR | System.TypeInitializationException: The type initializer for 'PinMameDevice.DmdDevice' threw an exception. ---> System.ArgumentException: The path is not of a legal form.
   at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.IO.Path.GetFullPath(String path)
   at System.Diagnostics.FileVersionInfo.GetFullPathWithAssert(String fileName)
   at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
   at LibDmd.Common.PathUtil.GetAssemblyVersion(String& fullVersion, String& sha)
   at LibDmd.DmdDevice.DmdDevice..ctor(IConfiguration config)
   at PinMameDevice.DmdDevice.DeviceInstance..ctor()
   at PinMameDevice.DmdDevice..cctor()
   --- End of inner exception stack trace ---
   at PinMameDevice.DmdDevice.Close()
   at FlexDMD.FlexDMD.ShowDMD(Boolean show)
   at FlexDMD.FlexDMD.set_Run(Boolean value)
   at FlexDMD.FlexDMD.Finalize() 

Vpinball Log

2023-06-27 15:23:15.820 INFO  [8268] [PinTable::Play@2116] Starting Play mode [table: Black Hole, camera mode: 0]
2023-06-27 15:23:16.109 INFO  [8268] [PinTable::Play@2318] Compiling script
2023-06-27 15:23:16.112 INFO  [8268] [PinTable::Play@2362] Creating main window
2023-06-27 15:23:16.121 INFO  [8268] [Player::Init@1151] Initializing renderer (global states & resources)
2023-06-27 15:23:16.222 INFO  [8268] [EnvmapPrecalc@61] Computing environment map radiance
2023-06-27 15:23:16.584 INFO  [8268] [Player::Init@1198] Initializing inputs & implicit objects
2023-06-27 15:23:16.623 INFO  [8268] [Player::Init@1324] Initializing physics
2023-06-27 15:23:16.672 INFO  [8268] [Player::Init@1399] Initializing octree
2023-06-27 15:23:16.756 INFO  [8268] [Player::Init@1468] Texture preloading: 'sidewood_h'
2023-06-27 15:23:16.756 INFO  [8268] [Player::Init@1468] Texture preloading: '_ColorGrade_2'
2023-06-27 15:23:16.761 INFO  [8268] [Player::Init@1468] Texture preloading: 'Bumper'
2023-06-27 15:23:16.762 INFO  [8268] [Player::Init@1468] Texture preloading: '_defvert'
2023-06-27 15:23:16.764 INFO  [8268] [Player::Init@1468] Texture preloading: 'Lateral Hit Target'
2023-06-27 15:23:16.765 INFO  [8268] [Player::Init@1468] Texture preloading: 'metal3'
2023-06-27 15:23:16.766 INFO  [8268] [Player::Init@1468] Texture preloading: 'Right_rail_brighter'
2023-06-27 15:23:16.770 INFO  [8268] [Player::Init@1468] Texture preloading: 'Instruction Card-EN'
2023-06-27 15:23:16.771 INFO  [8268] [Player::Init@1468] Texture preloading: 'ballshadow'
2023-06-27 15:23:16.773 INFO  [8268] [Player::Init@1468] Texture preloading: 'ScrewChromeSatin1inverted'
2023-06-27 15:23:16.787 INFO  [8268] [Player::Init@1468] Texture preloading: 'Apron'
2023-06-27 15:23:16.791 INFO  [8268] [Player::Init@1468] Texture preloading: 'DropTargetSimple-Red'
2023-06-27 15:23:16.792 INFO  [8268] [Player::Init@1468] Texture preloading: 'LockdownBar'
2023-06-27 15:23:16.793 INFO  [8268] [Player::Init@1468] Texture preloading: 'sling_kicker'
2023-06-27 15:23:16.794 INFO  [8268] [Player::Init@1468] Texture preloading: 'black256'
2023-06-27 15:23:16.795 INFO  [8268] [Player::Init@1468] Texture preloading: 'DropTargetSimple-Yellow'
2023-06-27 15:23:16.795 INFO  [8268] [Player::Init@1468] Texture preloading: 'Left_rail_brighter'
2023-06-27 15:23:16.807 INFO  [8268] [Player::Init@1468] Texture preloading: 'Playfield'
2023-06-27 15:23:16.810 INFO  [8268] [Player::Init@1468] Texture preloading: 'CustomWhiteTip'
2023-06-27 15:23:16.824 INFO  [8268] [Player::Init@1468] Texture preloading: 'DTBG'
2023-06-27 15:23:16.824 INFO  [8268] [Player::Init@1468] Texture preloading: '_ColorGrade_0'
2023-06-27 15:23:16.829 INFO  [8268] [Player::Init@1468] Texture preloading: 'Chrome Ball'
2023-06-27 15:23:16.853 INFO  [8268] [Player::Init@1468] Texture preloading: 'Plastics'
2023-06-27 15:23:16.859 INFO  [8268] [Player::Init@1468] Texture preloading: 'spinner'
2023-06-27 15:23:16.860 INFO  [8268] [Player::Init@1468] Texture preloading: 'JPBall_Chrome'
2023-06-27 15:23:16.860 INFO  [8268] [Player::Init@1468] Texture preloading: 'MetalExitBall'
2023-06-27 15:23:16.860 INFO  [8268] [Player::Init@1468] Texture preloading: '_ColorGrade_1'
2023-06-27 15:23:16.860 INFO  [8268] [Player::Init@1468] Texture preloading: 'JPBall-Scratches'
2023-06-27 15:23:16.861 INFO  [8268] [Player::Init@1485] Initializing renderer
2023-06-27 15:23:16.931 INFO  [8268] [Player::Init@1557] Starting script
2023-06-27 15:23:17.226 ERROR [8268] [CodeViewer::OnScriptError@1109] Script Error at line 1175 : The type initializer for 'PinMameDevice.DmdDevice' threw an exception.
2023-06-27 15:29:55.173 INFO  [8268] [Player::Init@1576] Prerendering static parts
2023-06-27 15:29:55.589 INFO  [8268] [Player::Init@1604] Startup done
2023-06-27 15:29:55.773 ERROR [8268] [CodeViewer::OnScriptError@1109] Script Error at line 190 : Cannot create ActiveX component.
2023-06-27 15:29:55.956 INFO  [8268] [PinTable::StopPlaying@2419] Ending Play mode [table: Black Hole]

I guess because i enabled logging i got a crash text, even though vpx didnt crash per se, just went back to edit screen.

`Crash report VPX rev1278 (13ba9da)

Process: VPinballX64.exe Reason: 0xC0000005 - EXCEPTION_ACCESS_VIOLATION at 0033:0000000140036C87 Attempt to write to 0x11778078 Thread ID: 0x204C [8268]

Call stack

0000000040036C87 (0x00000000 0x004A5850 0x00000000 0x00000000)

Environment

Date/time: 27/6/2023, 15:30:05:462 Number of CPUs: 4 Processor type: 8664 System: Windows 10 (10.0 22000)

Memory status

Total Reserved: 468304K (457M) bytes Total Commited: 671068K (655M) bytes Total Free: 3054868K (2983M) bytes Largest Free: 2056084K (2007M) bytes

Registers

RAX=00000000 RBX=11778070 RCX=FFFFFFFF RDX=004A5850 RSI=00000010 RDI=11778070 RBP=00000000 RSP=0014E020 RIP=40036C87 FLG=00010202 CS=0033 DS=002B SS=002B ES=002B FS=0053 GS=002B

Failed to save minidump. `

32 or 64 bit same results

Also flexDMDUI is unable to display any of the examples Not flex or UltraDMD

And this was tested in DMDDevice 2.2 r15

freezy commented 1 year ago

Thanks! It looks like the crash actually happened in B2S.Server. Could you

1) Post the entire DmdDevice.log, so I can see which version, bitness and other entries there are 2) Roughly describe how to reproduce?

wiesshund commented 1 year ago

this is the entire DMDDevice.log

[1] 2023/06/27 15:30:05.557 ERROR | System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: Cannot create ActiveX component.
   at Microsoft.VisualBasic.Interaction.CreateObject(String ProgId, String ServerName)
   at B2S.B2SData.get_VPinMAME()
   at B2S.Server.get_Games(String gamename)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
 [2] 2023/06/27 15:30:05.809 ERROR | System.TypeInitializationException: The type initializer for 'PinMameDevice.DmdDevice' threw an exception. ---> System.ArgumentException: The path is not of a legal form.
   at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.IO.Path.GetFullPath(String path)
   at System.Diagnostics.FileVersionInfo.GetFullPathWithAssert(String fileName)
   at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
   at LibDmd.Common.PathUtil.GetAssemblyVersion(String& fullVersion, String& sha)
   at LibDmd.DmdDevice.DmdDevice..ctor(IConfiguration config)
   at PinMameDevice.DmdDevice.DeviceInstance..ctor()
   at PinMameDevice.DmdDevice..cctor()
   --- End of inner exception stack trace ---
   at PinMameDevice.DmdDevice.Close()
   at FlexDMD.FlexDMD.ShowDMD(Boolean show)
   at FlexDMD.FlexDMD.set_Run(Boolean value)
   at FlexDMD.FlexDMD.Finalize() 

B2S Server is disabled

To reproduce Take a FlexDMD table. I used this one because it is a simple DMD and no external assets https://www.vpforums.org/index.php?app=downloads&showfile=17108 ROM File https://www.vpforums.org/index.php?app=downloads&showfile=475

simply enable to option in the table script to use flexDMD launch table crashes back to editor with error i reported.

revert to 2.2.0 Beta1 and no issues.

wiesshund commented 1 year ago

Anything else i can provide?

freezy commented 1 year ago

No, I'll try to reproduce later. I've just pushed a potential fix though, if you could have a look when it's built that'd be great.

https://ci.appveyor.com/project/freezy/dmd-extensions/builds/47410652

wiesshund commented 1 year ago

I will throw the hamsters a carrot and some corn

wiesshund commented 1 year ago

Ok 32bit seems to work now

64 bit does not but now does something different seems to kill vpinmame? but the DMD does start

image

DMDDevice log

 [1] 2023/06/27 16:44:18.749  INFO | Starting VPinMAME API 2.2.0-PLUGINS-r16 (ec4479a) through VPinballX64.exe. 
 [1] 2023/06/27 16:44:18.749  INFO | Assembly located at C:\vpx\VPinMAME\dmddevice64.dll 
 [1] 2023/06/27 16:44:18.749  INFO | Running in C:\vpx\Tables 
 [1] 2023/06/27 16:44:18.749  INFO | [dll] Create(): New output id is 1 
 [1] 2023/06/27 16:44:18.749  INFO | [dll] Open(1) 
 [1] 2023/06/27 16:44:18.749  INFO | [dll] PM_GameSettings(1, bhol_ltd, 0) 
 [1] 2023/06/27 16:44:18.749  INFO | Disabling game colorization 
 [1] 2023/06/27 16:44:18.749  INFO | Setting game name: bhol_ltd 
 [1] 2023/06/27 16:44:18.749  INFO | Setting color: #FFFF5820 
 [1] 2023/06/27 16:44:18.764  INFO | Opening virtual display... 
[18] 2023/06/27 16:44:18.921  INFO | Added VirtualDMD renderer. 
[18] 2023/06/27 16:44:18.921  INFO | Transformation options: Resize=Fit, HFlip=False, VFlip=False 
[18] 2023/06/27 16:44:18.921  INFO | Applying default color to render graphs (#FFFF5820). 
[18] 2023/06/27 16:44:18.957  INFO | Setting up 2-bit Passthrough Graph for 1 destination(s) [ Virtual DMD ] 
[18] 2023/06/27 16:44:18.968  INFO |   -> Connecting DmdDevice 2-bit Source to Virtual DMD (Gray2 => Gray2) 
[18] 2023/06/27 16:44:18.986  INFO | Setting up 4-bit Passthrough Graph for 1 destination(s) [ Virtual DMD ] 
[18] 2023/06/27 16:44:18.986  INFO |   -> Connecting DmdDevice 4-bit Source to Virtual DMD (Gray4 => Gray4) 
[18] 2023/06/27 16:44:18.986  INFO | Setting up RGB24 Passthrough Graph for 1 destination(s) [ Virtual DMD ] 
[18] 2023/06/27 16:44:18.986  INFO |   -> Connecting DmdDevice RGB24 Source to Virtual DMD (Rgb24 => Rgb24) 
[18] 2023/06/27 16:44:18.986  INFO | Setting up Alphanumeric Passthrough Graph for 1 destination(s) [ Virtual DMD ] 
[18] 2023/06/27 16:44:19.104  INFO | Creating FBOs for 128x32 

FlexDMD log

 [1] 2023/06/27 16:44:13.856  INFO | FlexDMD version 1.9.0.0 
 [1] 2023/06/27 16:44:13.939  INFO | Render mode set to DMD_RGB 
 [1] 2023/06/27 16:44:13.939  INFO | Game name set to bhol_ltd 
 [1] 2023/06/27 16:44:13.939  INFO | Table File defined to LTD Black Hole.vpx 
 [1] 2023/06/27 16:44:13.939  INFO | Show DMD 
 [1] 2023/06/27 16:44:13.956  INFO | Loaded dmddevice64.dll from C:\vpx\VPinMAME\dmddevice64.dll to create a virtual DMD 
 [1] 2023/06/27 16:44:19.168  INFO | dmdscreen64.dll was not loaded since it is not available from C:\vpx\VPinMAME\dmdscreen64.dll 
 [1] 2023/06/27 16:44:19.169  INFO | Starting render thread for game 'bhol_ltd' using render mode DMD_RGB 
[17] 2023/06/27 16:44:19.169  INFO | RenderThread start 
 [1] 2023/06/27 16:44:19.191  INFO | Bitmap added to cache:FlexDMD.Resources.dmds.black.png 
 [1] 2023/06/27 16:44:19.295  INFO | Path for resolving VPX embedded ressources defined to 'FlexDMD.VPXFile' 
 [1] 2023/06/27 16:44:19.295  INFO | Bitmap added to cache:VPX.bholeDMD 
 [1] 2023/06/27 16:44:19.335  INFO | Font added to cache:FlexDMD.Resources.udmd-f5by7.fnt&tint=FF00FF00&border_size=0&border_tint=FFFF0000 
 [1] 2023/06/27 16:44:19.345  INFO | Font added to cache:FlexDMD.Resources.teeny_tiny_pixls-5.fnt&tint=FFFFFF00&border_size=0&border_tint=FF0000FF 
 [1] 2023/06/27 16:44:19.345  INFO | Bitmap added to cache:VPX.black128 
[17] 2023/06/27 16:44:19.764  WARN | Abnormally long elapsed time between frames of 0.5777462s (rendering lasted 577.746ms, sleeping was 0ms), limiting to 66ms 
[17] 2023/06/27 16:44:42.363  WARN | Abnormally long elapsed time between frames of 0.094959s (rendering lasted 94.9587ms, sleeping was 0ms), limiting to 66ms 

VPX log but no longer triggers a crash dump

2023-06-27 16:47:55.831 INFO  [13224] [PinTable::Play@2116] Starting Play mode [table: Black Hole, camera mode: 0]
2023-06-27 16:47:56.127 INFO  [13224] [PinTable::Play@2318] Compiling script
2023-06-27 16:47:56.131 INFO  [13224] [PinTable::Play@2362] Creating main window
2023-06-27 16:47:56.140 INFO  [13224] [Player::Init@1151] Initializing renderer (global states & resources)
2023-06-27 16:47:56.245 INFO  [13224] [EnvmapPrecalc@61] Computing environment map radiance
2023-06-27 16:47:56.648 INFO  [13224] [Player::Init@1198] Initializing inputs & implicit objects
2023-06-27 16:47:56.685 INFO  [13224] [Player::Init@1324] Initializing physics
2023-06-27 16:47:56.727 INFO  [13224] [Player::Init@1399] Initializing octree
2023-06-27 16:47:56.800 INFO  [13224] [Player::Init@1468] Texture preloading: 'black256'
2023-06-27 16:47:56.801 INFO  [13224] [Player::Init@1468] Texture preloading: 'DropTargetSimple-Yellow'
2023-06-27 16:47:56.803 INFO  [13224] [Player::Init@1468] Texture preloading: '_ColorGrade_4'
2023-06-27 16:47:56.805 INFO  [13224] [Player::Init@1468] Texture preloading: 'ScrewChromeSatin1inverted'
2023-06-27 16:47:56.806 INFO  [13224] [Player::Init@1468] Texture preloading: 'sidewood_h'
2023-06-27 16:47:56.808 INFO  [13224] [Player::Init@1468] Texture preloading: 'LockdownBar'
2023-06-27 16:47:56.813 INFO  [13224] [Player::Init@1468] Texture preloading: 'spinner'
2023-06-27 16:47:56.814 INFO  [13224] [Player::Init@1468] Texture preloading: 'sling_kicker'
2023-06-27 16:47:56.814 INFO  [13224] [Player::Init@1468] Texture preloading: '_ColorGrade_3'
2023-06-27 16:47:56.818 INFO  [13224] [Player::Init@1468] Texture preloading: 'Instruction Card-EN'
2023-06-27 16:47:56.818 INFO  [13224] [Player::Init@1468] Texture preloading: '_ColorGrade_1'
2023-06-27 16:47:56.821 INFO  [13224] [Player::Init@1468] Texture preloading: 'JPBall_Chrome'
2023-06-27 16:47:56.832 INFO  [13224] [Player::Init@1468] Texture preloading: 'Plastics'
2023-06-27 16:47:56.833 INFO  [13224] [Player::Init@1468] Texture preloading: 'MetalExitBall'
2023-06-27 16:47:56.833 INFO  [13224] [Player::Init@1468] Texture preloading: 'DropTargetSimple-Red'
2023-06-27 16:47:56.834 INFO  [13224] [Player::Init@1468] Texture preloading: 'Right_rail_brighter'
2023-06-27 16:47:56.839 INFO  [13224] [Player::Init@1468] Texture preloading: 'Chrome Ball'
2023-06-27 16:47:56.839 INFO  [13224] [Player::Init@1468] Texture preloading: 'JPBall-Scratches'
2023-06-27 16:47:56.840 INFO  [13224] [Player::Init@1468] Texture preloading: 'metal3'
2023-06-27 16:47:56.840 INFO  [13224] [Player::Init@1468] Texture preloading: 'ballshadow'
2023-06-27 16:47:56.856 INFO  [13224] [Player::Init@1468] Texture preloading: 'Playfield'
2023-06-27 16:47:56.868 INFO  [13224] [Player::Init@1468] Texture preloading: 'Apron'
2023-06-27 16:47:56.868 INFO  [13224] [Player::Init@1468] Texture preloading: 'Lateral Hit Target'
2023-06-27 16:47:56.887 INFO  [13224] [Player::Init@1468] Texture preloading: 'DTBG'
2023-06-27 16:47:56.887 INFO  [13224] [Player::Init@1468] Texture preloading: '_ColorGrade_5'
2023-06-27 16:47:56.887 INFO  [13224] [Player::Init@1468] Texture preloading: '_defvert'
2023-06-27 16:47:56.887 INFO  [13224] [Player::Init@1468] Texture preloading: '_ColorGrade_2'
2023-06-27 16:47:56.888 INFO  [13224] [Player::Init@1468] Texture preloading: 'CustomWhiteTip'
2023-06-27 16:47:56.889 INFO  [13224] [Player::Init@1468] Texture preloading: 'Left_rail_brighter'
2023-06-27 16:47:56.889 INFO  [13224] [Player::Init@1468] Texture preloading: '_ColorGrade_0'
2023-06-27 16:47:56.891 INFO  [13224] [Player::Init@1468] Texture preloading: 'Bumper'
2023-06-27 16:47:56.891 INFO  [13224] [Player::Init@1485] Initializing renderer
2023-06-27 16:47:56.954 INFO  [13224] [Player::Init@1557] Starting script
2023-06-27 16:47:58.535 ERROR [13224] [CodeViewer::OnScriptError@1109] Script Error at line 115 : Cannot create ActiveX component.
2023-06-27 16:48:01.327 INFO  [13224] [Player::Init@1576] Prerendering static parts
2023-06-27 16:48:01.694 INFO  [13224] [Player::Init@1604] Startup done
2023-06-27 16:48:01.825 ERROR [13224] [CodeViewer::OnScriptError@1109] Script Error at line 190 : Cannot create ActiveX component.
2023-06-27 16:48:01.977 INFO  [13224] [PinTable::StopPlaying@2419] Ending Play mode [table: Black Hole]
2023-06-27 16:48:05.189 INFO  [13224] [WinMain@848] Closing VPX...
wiesshund commented 1 year ago

hold off on that a sec, let me make sure i am placing blame in the right spot

wiesshund commented 1 year ago

Ok disregard 64bit My fault, i left something disconnected so to speak from testing previously when going back and forth testing each bit platform

freezy commented 1 year ago

Cool, thanks for the debugging help. I'll close this one then.

wiesshund commented 1 year ago

SCORE!