Online Forums
Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.
Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.
Do not use the Contact page for technical issues.
- Forum
- Discussions
- Feature Requests & Product Improvement Ideas
- [5.71.273] Stop referencing Microsoft.Net.Http for net6.0 target
[5.71.273] Stop referencing Microsoft.Net.Http for net6.0 target
thank you very much for the call stacks. It has helped a lot.
We have made a fix that should address at least the "internal error" issues. Whether or not it will also resolve the slowness with unreachable PLC needs to be tested.
Please rebuild with QuickOPC 5.71.302 or later, and retest. It is now on www.nuget.org and on our Downloads page.
Best regards
Please Log in or Create an account to join the conversation.
at System.Threading.Monitor.Exit(Object obj)
at OpcLabs.EasyOpc.UA.Toolkit.Client.UASessionConverter.ExitSdkNamespaceUris()
Please Log in or Create an account to join the conversation.
WPF, using only the imperative parts of quickopcHello.
Please create a new forum thread next time (and possibly link to the original one) in such case, as we are now on to a different issue.
I am quite interested in resolving this. The three messages you posted are triggered by one or two causes. The "internal error" should never happen, no matter what your code does or what the downstream OPC systems do. I have some questions:
1. What kind of project do you have (such as Windows WPF app, Windows services, Web app, Web service, console app, etc.)?
Yes, nuget.org 5.71.2962. The messages below are now taken from version 5.71, right? - please confirm.
I fear not, sorry. But I noticed a significant speed up and no more Unavailable-Session-Log-Entries after removing our "Unreachable-PLC"-Subscription. I can't do this workaround in production as it is expected that sometimes we loose connection to our PLCs3. Do you perhaps have a self-contained reproducible scenario that we can run here?
4. If not, can you configure the debugger to break when exception of type System.Threading.SynchronizationLockException is thrown, and obtain a call stack and post it here?
Sure!
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.Client.UASessionConverter.ExitSdkNamespaceUris()
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.PerformWithSdkNamespaceUris(System.Func<Opc.Ua.StringTable, System.Exception> function)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.ConvertToNodeId(Opc.Ua.ExpandedNodeId sdkExpandedNodeId, out OpcLabs.EasyOpc.UA.AddressSpace.UANodeId nodeId = null)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.ConvertToExtensionObject(Opc.Ua.ExtensionObject sdkExtensionObject = {Opc.Ua.ExtensionObject}, out OpcLabs.EasyOpc.UA.UAExtensionObject extensionObject = null)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.MakeValueFromSdkExtensionObject(Opc.Ua.ExtensionObject sdkExtensionObject, out object value = null, out System.Collections.Generic.List<System.Exception> warnings)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.ConvertSdkValue(object sdkValue, Opc.Ua.BuiltInType sdkBuiltInType, OpcLabs.EasyOpc.UA.UAAttributeId attributeId, out object value, out System.Collections.Generic.List<System.Exception> warnings)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.ConvertAndCheckSdkValue(object sdkValue, Opc.Ua.BuiltInType sdkBuiltInType, OpcLabs.EasyOpc.UA.UAAttributeId attributeId, out object value = null, out System.Collections.Generic.List<System.Exception> warnings = Count = 0)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.MakeValueFromSdkVariant(Opc.Ua.Variant sdkVariant, OpcLabs.EasyOpc.UA.UAAttributeId attributeId, out object value = null, out System.Collections.Generic.List<System.Exception> warnings)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.MakeDataValue(Opc.Ua.DataValue sdkDataValue = {Opc.Ua.DataValue}, Opc.Ua.TimestampsToReturn sdkTimestampsExpected = Both, OpcLabs.EasyOpc.UA.UAAttributeId attributeId, out OpcLabs.EasyOpc.UA.UADataValue dataValue = null, out System.Collections.Generic.List<System.Exception> warnings = Count = 0)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAConverter.MakeAttributeData(Opc.Ua.DataValue sdkDataValue, Opc.Ua.TimestampsToReturn sdkTimestampsExpected, OpcLabs.EasyOpc.UA.UAAttributeId attributeId, out OpcLabs.EasyOpc.UA.UAAttributeData attributeData = null, out System.Collections.Generic.List<System.Exception> warnings)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.Client.UAClientMonitoredItem.SendDataChangeNotification(System.Exception exception = null, Opc.Ua.MonitoredItemNotification sdkMonitoredItemNotification = {Opc.Ua.MonitoredItemNotification})
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.Client.UAClientMonitoredItem.OnSdkNotification(Opc.Ua.Client.MonitoredItem sdkMonitoredItem = {Opc.Ua.Client.MonitoredItem}, Opc.Ua.Client.MonitoredItemNotificationEventArgs sdkMonitoredItemNotificationEventArgs = {Opc.Ua.Client.MonitoredItemNotificationEventArgs})
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.Client.UAClientMonitoredItemBase.MonitoredItem_Notification.AnonymousMethod__0()
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.UAEngineBase.SdkCallbackEnvelope(System.Func<System.IDisposable> usingFunction, string name = "MonitoredItem.Notification", System.Action callback)
OpcLabs.EasyOpcUA.dll!OpcLabs.EasyOpc.UA.Toolkit.Client.UAClientMonitoredItemBase.MonitoredItem_Notification(Opc.Ua.Client.MonitoredItem sdkMonitoredItem = {Opc.Ua.Client.MonitoredItem}, Opc.Ua.Client.MonitoredItemNotificationEventArgs sdkMonitoredItemNotificationEventArgs = {Opc.Ua.Client.MonitoredItemNotificationEventArgs})
Opc.Ua.Client.dll!Opc.Ua.Client.MonitoredItem.SaveValueInCache(Opc.Ua.IEncodeable newValue)
Opc.Ua.Client.dll!Opc.Ua.Client.Subscription.SaveDataChange(Opc.Ua.NotificationMessage message = {Opc.Ua.NotificationMessage}, Opc.Ua.DataChangeNotification notifications = {Opc.Ua.DataChangeNotification}, System.Collections.Generic.IList<string> stringTable = Count = 0)
Opc.Ua.Client.dll!Opc.Ua.Client.Subscription.OnMessageReceived()
System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.Threading.Tasks.Task>.InnerInvoke()
System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread threadPoolThread = {System.Threading.Thread}, System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)
System.Private.CoreLib.dll!System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref System.Threading.Tasks.Task currentTaskSlot = Id = 5580, Status = Running, Method = "System.Threading.Tasks.Task OnMessageReceived()", Result = "{Not yet computed}", System.Threading.Thread threadPoolThread)
System.Private.CoreLib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()
System.Private.CoreLib.dll!System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
Thanks for your fast responses, even during your holiday!Many thanks
Please Log in or Create an account to join the conversation.
Please create a new forum thread next time (and possibly link to the original one) in such case, as we are now on to a different issue.
I am quite interested in resolving this. The three messages you posted are triggered by one or two causes. The "internal error" should never happen, no matter what your code does or what the downstream OPC systems do. I have some questions:
1. What kind of project do you have (such as Windows WPF app, Windows services, Web app, Web service, console app, etc.)?
2. The messages below are now taken from version 5.71, right? - please confirm.
3. Do you perhaps have a self-contained reproducible scenario that we can run here?
4. If not, can you configure the debugger to break when exception of type System.Threading.SynchronizationLockException is thrown, and obtain a call stack and post it here?
Many thanks
Please Log in or Create an account to join the conversation.
Unfortunately I can't upgrade yet, as versions newer than 5.62.1032 cause my app to be really slow, as soon as there is a subscription to an unreachable plc. Sadly there isn't much useful in the logs. The first log message appears periodically and seems most related. Using Isolated clients or setting SynchronizationContext to null didn't help. I'm using dotnet 7.0
OpcLabs.EasyOpc.UA.Engine.UAEngineException: Timed out waiting (2000 milliseconds) for a session to become available for a conversion.
+ The client method called (or event/callback invoked) was 'DataChangeNotification'.
+ Total internal error(s): 1, total internal warning(s): 0
OpcLabs.Reflection.AssemblyLoading Error: 0 : Assembly "OpcLabs.BaseLib.resources, Version=5.71.296.1, Culture=de-DE, PublicKeyToken=6faddca41dacb409" extended load requested by "OpcLabs.BaseLib, Version=5.71.296.1, Culture=neutral, PublicKeyToken=6faddca41dacb409" failed, exception: System.ArgumentException: An item with the same key has already been added. Key: PresentationFramework-SystemXmlLinq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
at OpcLabs.BaseLib.Collections.Generic.Extensions.IDictionaryExtension.AddWithCheck[TKey,TValue](IDictionary`2 dictionary, TKey key, TValue value)
at OpcLabs.BaseLib.Collections.Generic.Extensions.IDictionaryExtension.AddNew[TKey,TValue](IDictionary`2 dictionary, TKey key, TValue value)
at OpcLabs.BaseLib.Collections.Generic.Extensions.IDictionaryExtension.TryAddNew[TKey,TValue](IDictionary`2 dictionary, TKey key, TValue value)
at OpcLabs.BaseLib.Reflection.AssemblyLoader.LoadByFallbackSearch(AssemblyName assemblyName, Assembly requestingAssembly)
at OpcLabs.BaseLib.Reflection.AssemblyLoader.InternalLoad(String name, Assembly requestingAssembly)
at OpcLabs.BaseLib.Reflection.AssemblyLoader.LoadExtended(String name, Assembly requestingAssembly)
Exception thrown: 'System.Threading.SynchronizationLockException' in OpcLabs.EasyOpcUA.dll
OpcLabs.EventTracing.LogEntries Error: 1 : LogEntry("OPCLabs-UAEngine",Error,0,1). INTERNAL ERROR. The OPC-UA engine might be in an unstable state. An exception of type "System.Threading.SynchronizationLockException" from source "System.Private.CoreLib" has occurred in OPC-UA SDK callback 'MonitoredItem.Notification'. The exception descend follows. (0) System.Threading.SynchronizationLockException System.Private.CoreLib (Exit) -> Object synchronization method was called from an unsynchronized block of code.
OpcLabs.EasyOpc.UA.EasyUAClient: Trace: OPC Log: Error(1): INTERNAL ERROR. The OPC-UA engine might be in an unstable state.
An exception of type "System.Threading.SynchronizationLockException" from source "System.Private.CoreLib" has occurred in OPC-UA SDK callback 'MonitoredItem.Notification'. The exception descend follows.
(0) System.Threading.SynchronizationLockException System.Private.CoreLib (Exit) -> Object synchronization method was called from an unsynchronized block of code.
Exception thrown: 'System.Security.SecurityException' in Microsoft.Win32.Registry.dll
Exception thrown: 'System.Security.SecurityException' in System.Diagnostics.EventLog.dll
OpcLabs.EasyOpc.UA.UAEngineBase Critical: 0 : Exception "System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security.
at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate)
at System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate)
at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName)
at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
at System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
at System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type)
at OpcLabs.BaseLib.Diagnostics.Utilities.EventLogUtilities.TryWriteEntry(String source, String message, EventLogEntryType type)" writing an internal error or warning to the event log: An exception of type "System.Threading.SynchronizationLockException" from source "System.Private.CoreLib" has occurred in OPC-UA SDK callback 'MonitoredItem.Notification'. The exception descend follows.
(0) System.Threading.SynchronizationLockException System.Private.CoreLib (Exit) -> Object synchronization method was called from an unsynchronized block of code.
Please Log in or Create an account to join the conversation.
the issue should now be fixed. Please use QuickOPC 5.71.296 (or later). It is now on www.nuget.org, and on Downloads page on our Web site.
The package reference to Microsoft.Net.Http has been removed from the .nuspec as unnecessary/unused .
Thank you for reporting this!
Best regards
Please Log in or Create an account to join the conversation.
I will investigate why is that and how it can be rectified; but please bear with me, I am travelling now and we will be able to work on this in roughly 2 weeks. I will reply here when I have an update.
Best regards
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
As far as I can tell, we do not directly reference Microsoft.Bcl or Microsoft.Net.Http in QuickOPC 5.71 anywhere. It is possible that some dependent package references them, but in such case, we cannot prevent it. Also, as far as I can tell, the warnings are harmless.
If you have an information to the contrary to what as I wrote above, please let me know.
Best regards
Please Log in or Create an account to join the conversation.
Causes:
warning NU1701: Package 'Microsoft.Bcl 1.1.10' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.
warning NU1701: Package 'Microsoft.Net.Http 2.2.29' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.
Please Log in or Create an account to join the conversation.
- Forum
- Discussions
- Feature Requests & Product Improvement Ideas
- [5.71.273] Stop referencing Microsoft.Net.Http for net6.0 target