[JUCE-unrelated] Reason 10 issue with LimeLM on Windows

Hey guys,

Apologies for the off-topic, but I am guessing there might be someone who has figured this out and I can really use a hint (pretty close to a release).

Does anyone use LimeLM (TurboActivate)? The first call my plugin makes to the TurboActivate API triggers an exception in latest Reason on Windows. This is the output Reason produces (attached debugger from Visual Studio):

Exception thrown at 0x00007FFF68625A3E (THIS-IS-MY-PLUGIN.dll) in Reason.exe: 0xC0000096: Privileged instruction.
Exception thrown at 0x00007FFFC6743FB8 in Reason.exe: Microsoft C++ exception: NSBacteria::XInvariantCorrupt at memory location 0x00000000007D6458.
Exception thrown at 0x00007FFFC6743FB8 in Reason.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFFC6743FB8 in Reason.exe: Microsoft C++ exception: NSBacteria::XInvariantCorrupt at memory location 0x00000000007D6458.
Exception thrown at 0x00007FFFC6743FB8 in Reason.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFFC6743FB8 in Reason.exe: Microsoft C++ exception: NSBacteria::XInvariantCorrupt at memory location 0x00000000007D6458.

This gets triggered by a call to the TA_IsGenuineEx (). My activation works everywhere else I’ve tested, on both Windows and Mac, and even in Reason - the Mac version doesn’t have this problem.

I have contacted both Propellerhead and LimeLM, but decided to see if someone here might have seen this with their plugins.

Regards,
Nikolay

Update:

  • Could there be something Reason doesn’t allow as access on disk (not sure where does TA keep activation data, but it is somewhere on the disk… maybe “Privileged instruction” means something like that)? Nope, should actually be this: https://stackoverflow.com/a/89716/880114

I have no idea about LimeLM, but we also access the configuration file. No one reported an issue so far. Maybe there is a limited access to special disk locations. All i know is that reason sandboxes the plugins to avoid any instabilities of the host.

edit: maybe you have to contact the reason team for this.

Hi,

Did you find any solution to this? I have some users of my plugin facing the same problem on Reason 10 crashing when reaching TA_IsGenuineEx function in my plugin. Unfortunately it does work fine at my end, so it’s difficult to debug.

I contacted Propellerheads, but not a single answer in almost 10 days. Shameful.

Hope you found some workaround.

Thanks.

Mariano

Same here…I had to completely not support Reason 10 VST.

That sucks, to have to discard such an important DAW because of a technical issue like that…

Hi,

To my knowledge, this was never resolved, unfortunately. The LimeLM creator Wyatt basically said “this is not my problem” and refused to make any changes to support Reason.

On the side of Propellerhead - they said they wanted to work on it, but they didn’t have the time at moment…

I proxied communication between the 2 companies for over a month and I gave up…

The problem was (if I remember correctly) - LimeLM tests for a specific CPU feature. On some CPU’s (Core i7 4770 for example), this feature is missing, so the test raises an exception. According to Wyatt Reason doesn’t need to handle this exception, but they do and it breaks the plugin (I don’t remember how it manifested exactly in the UI). The issue only happens on Windows.

The last thing that a dev from the Propellerhead team proposed was this:

There is perhaps a workaround. If you can move your serial check to the GUI code, you may be able to bypass our crash protection. It’s only active when Reason calls the VST.
I have not had time to test this, but I thought I’d share it with you if it’s easy for you to test.

I’m pretty sure I’ve tested this before (if it wasn’t my default implementation) I got this hint, but perhaps it’s worth the try.

Apologies I wasn’t able to help out with a solution.

Best of luck,
Nikolay

Hi Nikolay! Thanks for the info.

Yeah, Reason handles the exception and is like: “Oh, there was an exception, I’m going to assume that’s a crash”. That’s wrong, and I agree with Wyatt that the problem is on Propellerheads’ side. If I remember correctly, Reason shows a message to the user saying that the plug-in crashed.

If you can move your serial check to the GUI code, you may be able to bypass our crash protection.

I’m not sure how that’s supposed to work for copy protection. In a DAW, the plug-in’s GUI code may not get called at all. The user could still play audio etc.
But maybe the check can be deferred a little, and made asynchronously a “short time” after instantiating the plug-in. But a long enough delay for Reason to finish checking the plug-in.

Seems I will need to nag Properllerheads to come up with the fix they had promised. But I need to call them because they haven’t given a single reply to a request I posted 2 weeks back:-(

I already tried calling the activation (TA_IsGenuineEx) from a UI action, thinking that maybe the loading time of the plugin was sensitive, but the plugin crashes just the same at that time.

Just checking to see if there are any updates to this @swar. You’ve gotten further than us with contacting Reason. We’ve gotten a developer, but no responses.

Well unfortunately at this time I have still received no response from them. They don’t seem to care, since it’s not a major chunk of their users.

To be frank, I have dropped the case for the moment.

1 Like