Jump to content

VPX Crashing Upon Startup w/external DMD turned on (dmddevice freezy)


Recommended Posts

After exhausting many options I've decided to create this topic.  I have successfully loaded and played many games with color ROM via freezy DMDdevice.  Here's the issue

If I load a colored rom first (which has external DMD turned on) in vpx the app crashes.  If I load a non colored rom with no external DMD checked it loads and if I close the table and load that same color ROM, it will load fine and color works great.

 

Problem is bc it won't load first I can't load these color ROMs through PinballX either bc vpx crashes in background.

 

I've been troubleshooting for two nights no luck.  Anyone have suggestion as to why this is happening?

Btw what an amazing add on.  Simply incredible having color option even on par with my team color dmd

 

Link to comment
Share on other sites

  • Content Provider

Maybe you can find something out using Windows Event Viewer. Take a look at it after you have a crash.

Some people have had to copy dmddevice.dll to Windows Syswow64 folder. Have you tried that?

Freezy's dmddevice.dll uses .NET. There was a recent update distributed by Microsoft to v4.7. If you have updated maybe you can roll it back. If you have not updated then maybe you can go ahead and install the update.

If all else fails reboot.

If reboot fails then you may have to resort to a clean Windows re-install.

That's all I can suggest short of submitting a bug report and waiting for freezy to have some time to get back to the project


Sent from my iPad using Tapatalk

Link to comment
Share on other sites

  • Content Provider

I had these crashes too with the dmddevice.dll from freeze but it is working with my dll. Seems that vpx is timing critical.
Hope @freezy can reproduce these crashes to fix the problem.

Link to comment
Share on other sites

44 minutes ago, lucky1 said:

I had these crashes too with the dmddevice.dll from freeze but it is working with my dll. Seems that vpx is timing critical.
Hope @freezy can reproduce these crashes to fix the problem.

Appreciate the response lucky.  What dll are you referring too that works and can you share here?  You mention vpx is timing critical - wasn't following.

Link to comment
Share on other sites

oh ok - just to be clear, that will only work on pin2dmd hardware not the virtual dmd right?  I only have the virtual dmd option

On my end, still troubleshooting and now it works just randomly.  I just open table, it crashes, repeat and now it opens. But it's not repeatable.  I get an error from VP but not sure that's helpful.  What's the best thing to look for to report this bug?

Link to comment
Share on other sites

Turn on debugging for the dmddevice. Try the same tables, untick the use external dmd - doesn't it happen then, well, then the log might be something freezy would be interested in looking at one time in the future. Bugs should be posted on github. You have to remember - you're running bleeding edge software where there will be bugs, so, if this IS related to that dll, well, then you're kind of out of luck because the programmer doesn't have time right now to work on the project. We have to respect that, it is after all something he does for free out of love for pinball and this community.

Link to comment
Share on other sites

Yeah totally understand.  Tech is very impressive

Tables work perfectly when external is not checked.  How do I turn on debugging?

For now I'm defaulting to no external checked, loading though Pinballx and then F1 to change to external than f3.  Work around for now.  Not sure if they're are shortcuts to uncheck/check. Also noticed that powered by mame is showing when the table loads. Before it would just load without showing screen. Likely due to me deleting the rom name in registry during troubleshooting. Need to figure out how to change that back.

Link to comment
Share on other sites

SOLUTION!

Change this registry line item from 1 to 0 fixed it!!!

at91jit

For others with the same issue - check this out first.  It would have saved me 12 hours!  Line item at91jit which is in the individual roms settings under vpmame in registry.  Who the F would have thought to change that?  User STV recommended it.  Thanks!

Link to comment
Share on other sites

  • 1 month later...

Happy to see you back Freezy!    Your virtual color DMD driver has been one of the best things to hit my cab!  

For the JIT crashing - Please try the latest SAM beta builds.

I believe there are issues with long memory jumps in the JIT code.   My theory is that JIT starts up, allocates a small pool of memory, opens up DMDDevice.dll, and its dependent libraries, and then finally starts running the ROM.  It then allocates more memory for generated code on the fly, but when DMDDevice is in use, the new blocks end up further away from the code it generated in the first page and this sometimes results in crashing.    When you don't use DMDDevice the dynamically generated pages end up closer to the initial code page, so they don't crash.   In x86 assembly you use different JMP instructions depending on the distance. 

 I very recently changed it to pre-allocate a larger block on startup to prevent this issue, and it stopped crashing in TWD on my cab.   There's still a bug in there somewhere.   It's not an easy problem to solve.    I'm far from an expert on dynamic recompliers (frankly I'm pretty proud of myself for having found and fixed as many issues with it as I have :) ).    

There's a reason I've put a bunch of effort into the JIT core in the first place - The serial LED support used in the LE games requires precise, responsive handling of IRQ events.  The C++ core doesn't check for these events as frequently as the checks are costly.     If JIT is off you may experience timing failures in the serial LED stuff which results in the lights dying, and the DMD frames running slow.  

 

Link to comment
Share on other sites

  • 1 year later...

Just to let you know I'm having the same issue here (May 2019) with Freezy's 1.73 dll, latest SAM build (r4777) and VPX beta (rev3705).

When I run any newer STERN table (AC/DC, Tron Legacy or Metallica for example) with external DMD checked, VPX crashes just as the DMD is about to start.

When I test the same ROM through VPinMAME, or uncheck use external DMD, the table opens and plays fine.

I don't really want to disable the JIT core for the reasons stated above by DJRobX.

What to do???

*EDIT* Turning JIT off for each Stern ROM in the registry does allow the table to run. All other non-Stern tables are unaffected, regardless of JIT setting.

So is this a Freezy, VPinMAME or VPX issue?

Link to comment
Share on other sites

I've seen so many cases of this reported and I'm on Win7 myself, needing to keep the jit disabled for Stern'.

I expect that is this combo Win7 / Stern /Freezy that just isn't working as well as the same combo on Win10. Still, not going to update to that spyware OS for this reason alone :)

Link to comment
Share on other sites

I could start with - once, there was a smart mind around and he said this. But, well - he is very much still around and this still applies. It is just buried into great forum post.

https://vpinball.com/wiki/visual-pinball-knowledge-base/turning-onoff-at91jit/

Solution ? Not really I guess. I advice you to read what DjRobX wrote about the matter. Not the fix. It explains WHY you don't want to disable it. But, I doesn't help I guess for most Win7 users. I have had it enabled and disabled, testing a lot of times. It is for me like a gamble. If I turn it off, table start all the time. If it turn it on. I can get lucky and it will load and there is no issues. Let's face it - its a unresolved problem. Sometime in a year or two we should at least tell people that they need to upgrade to this really annoying OS Win10. Win7 will be unsuppoted by M$. Not a very big deal for machines that aren't connected to the internet at all or have a smart guy in the other end of the keyboard I guess. But, well - we have to accept I guess ... some day down the road that we don't care about our private lives and data since want to play pinball. Up yours M$ !

Link to comment
Share on other sites

  • 10 months later...

So I recently ran into an issue after installing a few updates for PinEvent and then to set up teensy for addressable rgbs.  in VPX I had freezy working fine and then all the sudden, any table in VPX I had running the freezy with "use external DMD (.dll)" enabled on would cause the DMD not to show, where the playfield and Backglass would still display.  Then once you tried to close that table and go back out to the VPX editor view, it would be non responsive and lock up.   What could of changed/gone wrong?  I've checked the registry and deleted all my table files out and tried again and tried setting that at91jit to 0, but nothing is getting it to work again.  

If I turn off the "use external DMD (.dll)"  in a table it works fine and VPX won't lock up.   I'm at a loss.  All help is much appreciated. 

Link to comment
Share on other sites

  • 1 year later...
On 5/30/2019 at 11:32 PM, mremulator said:

Just to let you know I'm having the same issue here (May 2019) with Freezy's 1.73 dll, latest SAM build (r4777) and VPX beta (rev3705).

When I run any newer STERN table (AC/DC, Tron Legacy or Metallica for example) with external DMD checked, VPX crashes just as the DMD is about to start.

When I test the same ROM through VPinMAME, or uncheck use external DMDthe table opens and plays fine.

I don't really want to disable the JIT core for the reasons stated above by DJRobX.

What to do???

*EDIT* Turning JIT off for each Stern ROM in the registry does allow the table to run. All other non-Stern tables are unaffected, regardless of JIT setting.

So is this a Freezy, VPinMAME or VPX issue?

So here we are many years later (2022) and I had to turn off jit in the registry for ripley's for the same reason's. Using @freezys latest, and truly GREATEST 1.10.0.1 dll the table simply will not finish loading. The virtual dmd window tries to start but just crashes. Turning off jit clears it right up. I'm hoping it doesnt affect the events timing.... too much :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...