Knowledge Base
If FL Studio does not seem to respond or open when trying to launch it please work through the following list, in this order. You don’t need to complete all steps, just try items until FL Studio opens .
- Restart your computer and try to open FL Studio again.
- Disable all anti-virus programs and try again. If this is the cause Whitelist FL Studio.
- Reset the DPI scaling.
- Restart your computer and try a Clean Installation of FL Studio using the latest release.
- Reset your FL Studio settings.
- Windows — If the User data folder is set to a location inside Program Files, Windows may prevent FL Studio access and so FL Studio will fail to start. Reset the the User data folder to the default location . \Users\[your computer account]\Documents\Image-Line\. To reset the location; Open the FILE Settings and under the User data folder section click the [Reset] button in-front of the folder icon.
- Windows10 — Controlled Folder Access is activated and this is preventing FL Studio accessing the User data folder. Deactivate it or add FL Studio to the ‘Allowed applications’ list.
- macOS — The User data folder (in your Documents folder) requires write permissions to be set. Open Systemsettings > Security&Privacy > Privacy > Files and Documents > FL Studio and set a mark at ‘Documents Folder’
- macOS — Delete the Auto saved.ncp file from the location: «. Users/(Your Username)/Documents/Image-Line/FL Studio/Settings/Note color presets/Auto saved.ncp»
- macOS — Open Finder > Applications > Utilities > Activity Monitor. Kill / force-quit the process called ‘tccd‘
- Try manually installing the Shared program files.
- MSI and ASUS Motherboards — Check if you have the Nahimic (MSI) or Sonic Studio III (ASUS) audio software installed. Disable or uninstall it.
- If you computer is overclocked — Try returning to default settings. Overclocking can lead to, random, incorrect calculations / execution of instructions on the CPU that causes FL Studio to fail to start.
- Audio interface drivers — If you have two drivers installed for the same interface (USB and Thunderbolt for example) this can cause conflicts and prevent FL Studio from starting. Try uninstalling the Thunderbolt driver.
NOTE: If these options didn’t work, please create a support post on our Technical Support (FL Studio & Plugins) forum. Be sure to provide as much information as possible including the exact version of FL Studio you’re using, a screenshot of the error message you’re receiving, and which of these options you’ve tried so far.
Image Line Support Team
PRODUCTS
- FL Studio
- FL Cloud
- FL Studio Mobile
- Plugins & Instruments
- MIDI Controllers
- Merchandising
Install plugins
Plugins extend the core functionality of PyCharm. For example, install plugins to get the following features:
- Integration with version control systems, issue trackers, build management servers, and other tools.
- Coding assistance support for various languages and frameworks.
- Shortcut hints, live previews, File Watchers, and so on.
- Coding exercises that can help you to learn a new programming language.
By default, PyCharm includes a number of bundled plugins. You can disable bundled plugins, but they cannot be removed. You can install additional plugins from the plugin repository or from a local archive file (ZIP or JAR).
Open plugin settings

- Press Control+Alt+S to open the IDE settings and then select Plugins .
Use the Marketplace tab to browse and install plugins from JetBrains Marketplace or from a custom plugin repository.
Use the Installed tab to browse bundled and installed plugins, enable, disable, update, or remove them. Disabling unnecessary plugins can increase performance.
Most plugins can be used with any JetBrains product. Some are limited only to commercial products, others require a separate license.
If a plugin depends on some other plugin, you can find a list of the dependencies in the Additional Info tab. If your project depends on certain plugins, add them to the list of required plugins.
By default, PyCharm includes several bundled plugins. You can disable bundled plugins, but they cannot be removed. You can install additional plugins from the plugin repository or from a local archive file (ZIP or JAR).
Install plugin from Marketplace
- Press Control+Alt+S to open the IDE settings and then select Plugins .
- Click the Marketplace tab and type the plugin name in the search field.
- To install the plugin, click Install and restart PyCharm.
To install a specific version, go to the plugin page in JetBrains Marketplace, download and install it as described in Install plugin from disk. For example, you can do it if the most recent version of the plugin is broken.
Install plugin from disk

- Download the plugin archive (ZIP or JAR).
- Press Control+Alt+S to open the IDE settings and then select Plugins .
- On the Plugins page, click and then click Install Plugin from Disk… .
- Select the plugin archive file and click OK .
- Click OK to apply the changes and restart the IDE if prompted.
Install plugin from command line

- Quit the IDE on which you want to install the plugin.
- From JetBrains Marketplace page, find the page of the required plugin, select the Versions tab, and click any version to copy pluginId . pluginId is a short name of the plugin you want to install. For example, tanvd.grazi .
- Install the plugin:
Navigate to the bin directory under your PyCharm installation directory and run the following command:
pycharm64.exe installPlugins
For example:
pycharm64.exe installPlugins tanvd.grazi
Run the following command:
open -na «PyCharm.app» —args installPlugins
For example:
open -na «PyCharm.app» —args installPlugins tanvd.grazi
Navigate to the bin directory under your PyCharm installation directory and run the following command:
pycharm.sh installPlugins
For example:
pycharm.sh installPlugins tanvd.grazi
Remove plugin
You cannot remove bundled plugins.

- Press Control+Alt+S to open the IDE settings and then select Plugins .
- Open the Installed tab and find the plugin that you want to remove.
- Expand the Disable list and select Uninstall .
Disable plugin
You can disable a plugin without removing it if you do not need the corresponding functionality.
- Press Control+Alt+S to open the IDE settings and then select Plugins .
- Open the Installed tab, find and select the plugin that you want to disable.
- On the plugin’s description pane, click Disable . Alternatively, you can use the checkboxes in the list of plugins or the Disable all buttons for plugin categories.
You can disable or enable all manually installed plugins at once (non-bundled) in the menu under .

Required plugins
A project may require plugins that provide support for certain technologies or frameworks. You can add such plugins to the list of required plugins for the current project, so that PyCharm will verify that the plugins are installed and enabled. It will notify you if you forget about some plugin, or someone on your team is not aware about the dependency as they work on the project.
Add a required plugin for your current project

- Make sure the required plugin is installed.
- Press Control+Alt+S to open the IDE settings and then select Build, Execution, Deployment | Required Plugins .
- On the Required Plugins page, click and select the plugin. Optionally, specify the minimum and maximum version of the plugin.
To specify the required version of PyCharm itself, add IDE Core to the list of required plugins.
The list of required plugins is stored in the .idea/externalDependencies.xml file of your project. When you open the project in PyCharm, it will notify you if the required plugin is disabled, not installed, or requires an update.

Click the link in the notification message to quickly enable, install, or update the required plugin.
Suggested plugins
When you open a project, PyCharm can suggest installing and enabling plugins based on libraries used in your project. Do not confuse suggested plugins with required plugins that you can manually add to a project so that your teammates also use it.
For more information about the criteria for suggesting plugins, refer to the JetBrains Marketpalce documentation.
If you don’t need a particular plugin, you can prevent PyCharm from suggesting it. You can also use your notification settings to disable or enable notifications of all plugin suggestions and the way they are displayed.
Disable suggestions of a plugin
- When a notification of a suggested plugin appears, click Don’t suggest again .
Next time when you open a project, PyCharm will not suggest this plugin.
Check a project for suggested plugins
You can check your project for suggested plugins except for plugins for which you have disabled suggestions.

- Press Control+Shift+A and start typing Check Suggested Plugins .
- Select the Check Suggested Plugins action.
- If PyCharm has a plugin applicable to your project, you’ll see the notification message. Click the link in the notification message to install or enable the suggested plugin.
Alternatively, you can open the IDE settings ( Control+Alt+S ) and go to Plugins | Marketplace : If there are plugins suggested for your project, they will be displayed on top of the plugin list, in the Suggested section.

Custom plugin repositories
By default, PyCharm is configured to use plugins from JetBrains Marketplace. This is a public repository where everyone can host their plugins. However, if you develop plugins for internal use only, you can set up a custom plugin repository for them.
For more information about setting up a custom plugin repository, see the IntelliJ Platform SDK documentation.
Once you set up your plugin repository, add it to PyCharm:
Add custom repositories

- Press Control+Alt+S to open the IDE settings and then select Plugins .
- On the Plugins page, click and select Manage Plugin Repositories… .
- In the Custom Plugin Repositories dialog, click and specify your repository URL. It must point to the location of the XML file that describes your plugin, for example, updatePlugins.xml . The file can be on the same server as your custom plugins, or on a dedicated one.
- Click OK in the Custom Plugin Repositories dialog to save the list of plugin repositories.
- Click OK in the Settings dialog to apply the changes.
When you search for plugins, PyCharm will show you results both from default JetBrains Marketplace and any custom repositories that you specify. To browse only a certain custom plugin repository, type repository: followed by the URL of the repository in the search field on the Marketplace tab of the Plugins page. For example:
repository:http://plugins.example.com:8080/updatePlugins.xml myPlugin
Alternatively, you can add your custom plugin repositories using the idea.plugin.hosts property:
- Go to Help | Edit Custom Properties .
- Add the idea.plugin.hosts property to the platform properties file and specify the URL of the XML file that describes your plugin. For example:
idea.plugin.hosts=»http://plugins.example.com:8080/updatePlugins.xml»
You may want to replace default JetBrains Marketplace with your custom plugin repository. This can be helpful if you want only your custom repository plugins to be available from PyCharm.
Replace the default plugin repository
- Go to Help | Edit Custom Properties .
- Add the idea.plugins.host property to the platform properties file and specify the URL of the application that can properly handle requests from PyCharm, that is, act as the default plugin repository application instead of JetBrains Marketplace. In particular, it should handle the following requests:
- Get the list of plugins
- Download the latest plugin update
- Restart PyCharm.
If you replace the default plugin repository, the search field on the Marketplace tab of the Plugins dialog will browse only the plugins in the new default repository and any custom repositories that you add.
Productivity tips
Filter and sort search results
- Type a forward slash / in the search string to see options for filtering and sorting search results. For example, you can add the following options to your search string to list only language-related plugins and sort them alphabetically by name:
Troubleshoot Dataverse plug-ins
This article contains information about errors that can occur during plug-in execution, or Dataverse errors that are related to plug-ins, and how to avoid or fix them.
Error «Time conversion could not be completed»
Error Code: -2147220956
Error Message: The conversion could not be completed because the supplied DataTime did not have the Kind property set correctly. For example, when the Kind property is DateTimeKind.Local, the source time zone must be TimeZoneInfo.Local.
This error can occur during a TimeZoneInfo.ConvertTimeToUtc(DateTime, TimeZoneInfo) call in the plug-in code to convert a DateTime value in the Santiago or Volgograd time zone to Coordinated Universal Time (UTC).
This is a known product limitation, and there’s presently no workaround.
Error «Sandbox Worker process crashed»
Error Code: -2147204723
Error Message: The plug-in execution failed because the Sandbox Worker process crashed. This is typically due to an error in the plug-in code.
This error simply means that the worker process running your plug-in code crashed. Your plug-in may be the reason for the crash, but it could also be another plug-in running concurrently for your organization. Because the process crashed, we can’t extract any more specific information about why it crashed. But after examining data from the crash dumps after the fact, we found that this error usually occurs due to one of the four reasons:
- Unhandled exception in the plug-in
- Stack Overflow error in the plug-in
- Using threads to queue work with no try/catch in thread delegate
- Worker process reaches the memory limit
Unhandled exception in the plug-in
As mentioned in Handle exceptions in plug-ins, when you write a plug-in, you should try to anticipate which operations may fail and wrap them in a try-catch block. When any errors occur, you should use the InvalidPluginExecutionException class to gracefully terminate the operation with an error meaningful to the user.
A common scenario for this exception is when using the HttpClient.SendAsync or HttpClient.GetAsync method. These HttpClient methods are asynchronous operations that return a Task. To work in a plug-in where code needs to be synchronous, people may use the Task.Result property. When an error occurs, Result returns an AggregateException. An AggregateException consolidates multiple failures into a single exception, which can be difficult to handle. A better design is to use Task.GetAwaiter().GetResult() because it propagates the results as the specific error that caused the failure.
The following example shows the correct way to manage the exception and an outbound call using the HttpClient.GetAsync method. This plug-in attempts to get the response text for a Uri set in the unsecure config for a step registered for it.
using Microsoft.Xrm.Sdk; using System; using System.Net.Http; namespace ErrorRepro < public class AsyncError : IPlugin < private readonly string webAddress; public AsyncError(string unsecureConfig) < if (string.IsNullOrEmpty(unsecureConfig)) < throw new InvalidPluginExecutionException("The ErrorRepro.AsyncError plug-in requires that a Url be set in the unsecure configuration for the step registration."); >webAddress = unsecureConfig; > public void Execute(IServiceProvider serviceProvider) < ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); tracingService.Trace($"Starting ErrorRepro.AsyncError"); tracingService.Trace($"Sending web request to "); try < string responseText = GetWebResponse(webAddress, tracingService); tracingService.Trace($"Result: "); > catch (Exception ex) < tracingService.Trace($"Error: ErrorRepro.AsyncError "); throw new InvalidPluginExecutionException(ex.Message); > tracingService.Trace($"Ending ErrorRepro.AsyncError"); > //Gets the text response of an outbound web service call public string GetWebResponse(string webAddress, ITracingService tracingService) < try < using (HttpClient client = new HttpClient()) < client.Timeout = TimeSpan.FromMilliseconds(15000); //15 seconds client.DefaultRequestHeaders.ConnectionClose = true; //Set KeepAlive to false HttpResponseMessage response = client.GetAsync(webAddress).GetAwaiter().GetResult(); //Make sure it is synchronous response.EnsureSuccessStatusCode(); tracingService.Trace($"ErrorRepro.AsyncError.GetWebResponse succeeded."); string responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); //Make sure it is synchronous tracingService.Trace($"ErrorRepro.AsyncError.GetWebResponse responseContent parsed successfully."); return responseContent; >> catch (Exception ex) < //Capture the inner exception message if it exists. // It should have a more specific detail. string innerExceptionMessage = string.Empty; if (ex.InnerException != null) < innerExceptionMessage = ex.InnerException.Message; >tracingService.Trace($"Error in ErrorRepro.AsyncError : InnerException: "); if (!string.IsNullOrEmpty(innerExceptionMessage)) < throw new Exception($"A call to an external web service failed. ", ex); > throw new Exception("A call to an external web service failed.", ex); > > > >
Stack overflow error in the plug-in
This type of error occurs most frequently right after you make some changes in your plug-in code. Some people use their own set of base classes to streamline their development experience. Sometimes these errors originate from changes to those base classes that a particular plug-in depends on.
For example, a recursive call without a termination condition, or a termination condition, which doesn’t cover all scenarios, can cause this error to occur. For more information, see StackOverflowException Class > Remarks.
You should review any code changes that were applied recently for the plug-in and any other code that the plug-in code depends on.
Example
The following plug-in code causes a StackOverflowException due to a recursive call with no limits. Despite the use of the tracing and attempting to capture the error, the tracing and the error aren’t returned because the worker process that would process them has terminated.
using Microsoft.Xrm.Sdk; using System; namespace ErrorRepro < public class SOError : IPlugin < public void Execute(IServiceProvider serviceProvider) < ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); tracingService.Trace($"Starting ErrorRepro.SOError"); try < tracingService.Trace($"Calling RecursiveMethodWithNoLimit to trigger StackOverflow error."); RecursiveMethodWithNoLimit(tracingService); //StackOverflowException occurs here. >catch (Exception ex) < //This trace will not be written tracingService.Trace($"Error in ErrorRepro.SOError "); //This error will never be thrown throw new InvalidPluginExecutionException($"Error in ErrorRepro.SOError. "); > //This trace will never be written tracingService.Trace($"Ending ErrorRepro.SOError"); > public static void RecursiveMethodWithNoLimit(ITracingService tracingService) < tracingService.Trace($"Starting ErrorRepro.SOError.RecursiveMethodWithNoLimit"); RecursiveMethodWithNoLimit(tracingService); tracingService.Trace($"Ending ErrorRepro.SOError.RecursiveMethodWithNoLimit"); >> >
In a synchronous plug-in step, the plug-in code above returns the following error in the Web API when the request is configured to include additional details with errors.
The following shows how this error is recorded in the plug-in trace log:
Unhandled exception: Exception type: System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault] Message: The plug-in execution failed because the Sandbox Worker process crashed. This is typically due to an error in the plug-in code. System.ServiceModel.CommunicationException: The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error. at Microsoft.Crm.Sandbox.SandboxWorkerProcess.Execute(SandboxCallInfo callInfo, SandboxPluginExecutionContext requestContext, Guid pluginAssemblyId, Int32 sourceHash, String assemblyName, Guid pluginTypeId, String pluginTypeName, String pluginConfiguration, String pluginSecureConfig, Boolean returnTraceInfo, Int64& wcfExecInMs, Int64& initializeInMs, Int64& trackCallInMs, Int64& trackGoodReturnInMs, Int64& waitInMs, Int64& taskStartDelay) +0x330: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #4BC22433Detail: 48c5818e-4912-42f0-b1b6-e3bbe7ae013d -2147204723 The plug-in execution failed because the Sandbox Worker process crashed. This is typically due to an error in the plug-in code. System.ServiceModel.CommunicationException: The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error. at Microsoft.Crm.Sandbox.SandboxWorkerProcess.Execute(SandboxCallInfo callInfo, SandboxPluginExecutionContext requestContext, Guid pluginAssemblyId, Int32 sourceHash, String assemblyName, Guid pluginTypeId, String pluginTypeName, String pluginConfiguration, String pluginSecureConfig, Boolean returnTraceInfo, Int64& wcfExecInMs, Int64& initializeInMs, Int64& trackCallInMs, Int64& trackGoodReturnInMs, Int64& waitInMs, Int64& taskStartDelay) +0x330: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #4BC22433 2021-03-06T22:14:22.0629638Z false WorkerCommunication System.ServiceModel.CommunicationException: The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error. Server stack trace: at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at Microsoft.Crm.Sandbox.SandboxWorkerProcess.Execute(SandboxCallInfo callInfo, SandboxPluginExecutionContext requestContext, Guid pluginAssemblyId, Int32 sourceHash, String assemblyName, Guid pluginTypeId, String pluginTypeName, String pluginConfiguration, String pluginSecureConfig, Boolean returnTraceInfo, Int64& wcfExecInMs, Int64& initializeInMs, Int64& trackCallInMs, Int64& trackGoodReturnInMs, Int64& waitInMs, Int64& taskStartDelay)
Using threads to queue work with no try/catch in thread delegate
You shouldn’t use parallel execution patterns in plug-ins. This anti-pattern is called out in the best practice article: Don’t use parallel execution within plug-ins and workflow activities. Using these patterns can cause issues managing the transaction in a synchronous plug-in. However, another reason not to use these patterns is that any work done outside of a try / catch block in a thread delegate can crash the worker process.
Worker process reaches the memory limit
Each worker process has a finite amount of memory. There are conditions where multiple concurrent operations that include large amounts of data could exceed the available memory and cause the process worker to crash.
RetrieveMultiple with File data
The common scenario, in this case, is when a plug-in executes for a RetrieveMultiple operation where the request includes file data. For example, when retrieving emails that include any file attachments. The amount of data that may be returned in a query like this is unpredictable because any email may be related to any number of file attachments, and the attachments can vary in size.
When multiple requests of a similar nature are running concurrently, the amount of memory required becomes large. If the amount of memory exceeds the limit, the process crashes. The key to preventing this situation is limiting RetrieveMultiple queries that include entities with related file attachments. Retrieve the records using RetrieveMultiple , but retrieve any related files as needed using individual Retrieve operations.
Memory Leaks
A less common scenario is where the code in the plug-in is leaking memory. This can occur when the plug-in isn’t written as stateless, which is another best practice. For more information, see Develop IPlugin implementations as stateless. When the plug-in isn’t stateless, and there’s an attempt to continually add data to a stateful property like an array, the amount of data grows to the point where it uses all the available memory.
Transaction errors
There are two common types of errors related to transactions:
Error Code: -2146893812
Error Message: ISV code reduced the open transaction count. Custom plug-ins should not catch exceptions from OrganizationService calls and continue processing.
Error Code: -2147220911
Error Message: There is no active transaction. This error is usually caused by custom plug-ins that ignore errors from service calls and continue processing.
The top error was added most recently. It should occur immediately and in the context of the plug-in that contains the problem. The bottom error can still occur in different circumstances, typically involving custom workflow activities. It may be due to problems in another plug-in.
To understand the message, you need to appreciate that anytime an error related to a data operation occurs within a synchronous plug-in the transaction for the entire operation has ended.
A common cause is that a developer believes they can attempt to perform an operation that might succeed, so they wrap that operation in a try / catch block and attempt to swallow the error when it fails.
While this pattern may work for a client application, within the execution of a plug-in, any data operation failure results in rolling back the entire transaction. You can’t swallow the error, so you must make sure to always return an InvalidPluginExecutionException.
Error «Sql error: Execution Timeout Expired»
Error Code: -2147204783
Error Message: Sql error: ‘Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.’
Cause
There are a wide variety of reasons why a SQL timeout error may occur. Three of them are described below:
- Blocking
- Cascade operations
- Indexes on new tables
Blocking
The most common cause for a SQL timeout error is that the operation is waiting for resources that are being blocked by another SQL transaction. The error is the result of Dataverse protecting the integrity of the data and from long-running requests that impact performance for users.
Blocking may be due to other concurrent operations. Your code may work fine in isolation in a test environment and still be susceptible to conditions that only occur when multiple users are initiating the logic in your plug-in.
When writing plug-ins, it’s essential to understand how to design customizations that are scalable. For more information, see Scalable Customization Design in Dataverse.
Cascade operations
Certain actions you make in your plug-in, such as assigning or deleting a record, can initiate cascading operations on related records. These actions could apply locks on related records causing subsequent data operations to be blocked, which in turn can lead to a SQL timeout.
You should consider the possible impact of these cascading operations on data operations in your plug-in. For more information, see Table relationship behavior.
Because these behaviors can be configured differently between environments, the behavior may be difficult to reproduce unless the environments are configured in the same way.
Indexes on new tables
If the plug-in is performing operations using a table or column that has been created recently, some Azure SQL capabilities to manage indexes might make a difference after a few days.
Errors due to user privileges
In a client application, you can disable commands that users aren’t allowed to perform. Within a plug-in, you don’t have this ability. Your code may include some automation that the calling user doesn’t have the privileges to perform.
You can register the plug-in to run in the context of a user known to have the correct privileges by setting the Run in User’s Context value to that user. Or you can execute the operation by impersonating another user. For more information, see:
- Register a plug-in
- Impersonate a user
Error «Message size exceeded when sending context to Sandbox»
Error Code: -2147220970
Error Message: Message size exceeded when sending context to Sandbox. Message size: ### Mb
This error occurs when a message payload is greater than 116.85 MB, and a plug-in is registered for the message. The error message includes the size of the payload that caused this error.
The limit helps ensure that users running applications can’t interfere with each other based on resource constraints. The limit helps provide a level of protection from unusually large message payloads that threaten the availability and performance characteristics of the Dataverse platform.
116.85 MB is large enough that it should be rare to encounter this case. The most likely situation where this case might occur is when you retrieve a record with multiple related records that include large binary files.
If you receive this error, you can:
- Remove the plug-in for the message. If there are no plug-ins registered for the message, the operation completes without an error.
- If the error is occurring in a custom client, you can modify your code so that it doesn’t attempt to perform the work in a single operation. Instead, write code to retrieve the data in smaller parts.
Error «The given key wasn’t present in the dictionary»
Error codes
This error occurs when the key value in the code doesn’t exist in the collection. This is a run-time error rather a platform error. When this error occurs within a plug-in, the error code depends on whether the error was caught.
If the developer caught the exception and returned InvalidPluginExecutionException, as described in Handle exceptions in plug-ins, the following error is returned:
Error Code: -2147220891
Error Message: ISV code aborted the operation.
However, with this error, it’s common that the developer doesn’t catch it properly and the following error is returned:
Error Code: -2147220956
Error Message: An unexpected error occurred from ISV code.
«ISV» stands for Independent Software Vendor.
Cause
This error frequently occurs at design time and can be due to a misspelling or using the incorrect casing. The key values are case-sensitive.
At run-time, the error is frequently due to the developer assuming that the value is present when it isn’t. For example, in a plug-in that’s registered for the update of a table, only those values that are changed are included in the Entity.Attributes collection.
Resolution
To solve this error, you must check that the key exists before attempting to use it to access a value.
For example, when accessing a table column, you can use the Entity.Contains(String) method to check whether a column exists in a table, as shown in the following code.
// Obtain the execution context from the service provider. IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext)); // The InputParameters collection contains all the data passed in the message request. if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) < // Obtain the target entity from the input parameters. Entity entity = (Entity)context.InputParameters["Target"]; //Check whether the name attribute exists. if(entity.Contains("name"))
Some developers use the Entity.GetAttributeValue(String) method to avoid this error when accessing a table column. Be aware that this method returns the default value of the type if the column doesn't exist. If the default value is null, this method works as expected. But if the default value doesn't return null, such as with a DateTime , the value returned is 1/1/0001 00:00 rather than null.
Error "You cannot start a transaction with a different isolation level than is already set on the current transaction"
Error Code: -2147220989
Error Message: You cannot start a transaction with a different isolation level than is already set on the current transaction
Plug-ins are intended to support business logic. Modifying any part of the data schema within a synchronous plug-in isn't supported. These operations frequently take longer and may cause cached metadata used by applications to become out of sync. However, these operations can be performed in a plug-in step registered to run asynchronously.
Known issue: Activity.RegardingObjectId name value not set with plug-in
The most common symptom of this issue is that the Regarding field in an activity record shows (No Name) rather than the primary name attribute value.
Within a plug-in, you can set lookup attributes with an EntityReference value. The EntityReference.Name property isn't required. Typically you don't need to include it when setting a lookup attribute value because Dataverse will set it. You should set values like this during the PreOperation stage of the event pipeline. For more information, see Event execution pipeline.
The exception to this rule is when setting the ActivityPointer.RegardingObjectId lookup. All the entity types that are derived from ActivityPointer inherit this lookup. By default, these include Appointment, Chat, Email, Fax, Letter, PhoneCall, RecurringAppointmentMaster, and any custom tables that were created as activity types. For more information, see Activity tables.
If you set this value in the PreOperation stage, the name value isn't added by Dataverse. The value will be null, and the formatted value that should contain this value isn't present when you retrieve the record.
Workaround
There are two ways to work around this issue:
- You can set the EntityReference.Name property value with the correct primary name field value prior to setting the value of the lookup attribute.
- You can set the lookup value in the PreValidation stage rather than PreOperation stage.
More information
- Use plug-ins to extend business processes
- Workflow extensions
Please close the host that is running the plug in and restart it что делать
I had an outdated FabFilter Plugin bundle that I just updated, but I'm running into an issue:
When I create a track and add (for example) FabFilter's Pro-Q3 plugin, it prompts me to enter my license. I type in my license from the original purchase and it seems to work, saying:
"Your license will be verified next time FabFilter Pro Q3 is started. Please close the host that is running the plugin and restart it."
When I restart the reaper session it doesn't remember the license and asks me to verify again.
| Weston Minissali |
| View Public Profile |
| Send a private message to Weston Minissali |
| Find More Posts by Weston Minissali |
Human being with feelings
Join Date: Dec 2012
Posts: 13,322
Perhaps the key is saving to protected folder and you have no admin rights or not running Reaper as administrator?
__________________
Donate ► Chroma - coloring tool ► SoundCloud ►All the REAPER names
Human being with feelings
Join Date: Apr 2016
Location: South Fl.
Originally Posted by Weston Minissali
I had an outdated FabFilter Plugin bundle that I just updated, but I'm running into an issue:
When I create a track and add (for example) FabFilter's Pro-Q3 plugin, it prompts me to enter my license. I type in my license from the original purchase and it seems to work, saying:
"Your license will be verified next time FabFilter Pro Q3 is started. Please close the host that is running the plugin and restart it."
When I restart the reaper session it doesn't remember the license and asks me to verify again.
It's your "Fabfilter" asking for this, not Reaper.
Human being with feelings
Join Date: Jan 2015
Location: Munich
Originally Posted by Weston Minissali
When I restart the reaper session it doesn't remember the license and asks me to verify again.
Start REAPER as administrator and try again. That is, right-click the REAPER shortcut
and select "Run as administrator" from the contextual menu.
This helps in cases where the license will be written to a place that requires
administrator rights.
| Heart Doctor |
| View Public Profile |
| Send a private message to Heart Doctor |
| Find More Posts by Heart Doctor |
Human being with feelings
Join Date: Oct 2012
Okay I think you are on to something. I did save the plugins into a folder in my Program Files and it windows required me to give administrator permission. Would you suggest I move the location of that folder to somewhere in documents? Or is there a way to give reaper ongoing administrator access? I wouldn't want to have to right click and then click "run as administrator" every time.
Thanks for the feedback everyone!
| Weston Minissali |
| View Public Profile |
| Send a private message to Weston Minissali |
| Find More Posts by Weston Minissali |
Human being with feelings
Join Date: Dec 2012
Posts: 13,322
Originally Posted by Weston Minissali
Okay I think you are on to something. I did save the plugins into a folder in my Program Files and it windows required me to give administrator permission. Would you suggest I move the location of that folder to somewhere in documents? Or is there a way to give reaper ongoing administrator access? I wouldn't want to have to right click and then click "run as administrator" every time.
Thanks for the feedback everyone!
You just need to do it once to allow plugin save the license. Maybe also check whether after you change anything in Preferences, after restarting Reaper it's saved. Perhaps you just need to move Reaper to another drive or just to C:\ root.
__________________
Donate ► Chroma - coloring tool ► SoundCloud ►All the REAPER names
Human being with feelings
Join Date: May 2006
Location: Surrey, UK
Posts: 19,646
Here, Reaper runs fine when installed into a Program Files sub-folder. "Run as administrator" is not needed.
But, installing plug-ins into folders in Program Files can cause problems, as you have seen. Many users create folders such as C:/VST2 as the top-level folder for their plug-ins. You may need to uninstall / reinstall yours.
I wonder where FabFiter stores its plug-in authorization info.
__________________
DarkStar . interesting, if true. . . . Inspired by .
Human being with feelings
Join Date: Jun 2018
Location: Edmonton, AB, Canada
Posts: 1,380
Originally Posted by Weston Minissali
Or is there a way to give reaper ongoing administrator access? I wouldn't want to have to right click and then click "run as administrator" every time.
Just to answer this question, yes, like any application.
You'd need to update all your Reaper shortcuts though (or at least, the ones you use). Just right click on the shortcut, pick properties, go to Compatibility tab and checkmark "Run this program as an administrator". This is how you do it in Windows 10.. other versions of Windows may vary. Note: if the shortcuts you use are from the start menu, there is one extra step: right click them and pick "open file location", then do the steps above.
That said, I am not so sure you should have to always run Reaper as administrator. As DarkStar said, maybe you can just install Fabfilter outside of program files and it will work without Reaper having Admin.
__________________
My Rig (also serves as my gaming PC): MSI Mag X570 Tomahawk Mobo, Ryzen R9 3900X, 32GB RAM, Samsung 960 Evo 500gb NVMe, Crucial 1TB NVMe, NVidia RTX 2080 Super, Arturia Minifuse 2, Nektar Impact LX25+ MIDI Controller Keyboard.