Control Flow Guard Exception When Using Outlook Object Model - outlook

We're seeing multiple clients of ours experiencing outlook crashing after upgrading Outlook to any of the November 9th updates across at least two of the update channels (Monthly Enterprise 2209 (15629.20258) and Semi-Annual Enterprise: 2202 (14931.20806)). We're still in the investigation phase of trying to determine root cause, but we have some data at this point.
The EventViewer error is:
Faulting application name: OUTLOOK.EXE, version: 16.0.15629.20258, time stamp: 0x63603097
Faulting module name: ucrtbase.dll, version: 10.0.19041.789, time stamp: 0x2bd748bf
Sometimes it is ntdll.dll instead of ucrtbase.dll
We've gotten a couple crash dumps from one of our customers and the line that throws exceptions are different, but they're also rather innocent. In one place we do this:
Dim propertyAccessor As Microsoft.Office.Interop.Outlook.PropertyAccessor = mail.PropertyAccessor
and the other:
Dim mail As Microsoft.Office.Interop.Outlook.MailItem = TryCast(item, Microsoft.Office.Interop.Outlook._MailItem)
We use Add-in Express and in both those cases, the callstack shows our code being called from:
AddinExpress.MSO.2005.dll!AddinExpress.MSO.ADXOutlookAppEvents.DoExplorerSelectionChange(object explorer)
AddinExpress.MSO.2005.dll!AddinExpress.MSO.ADXAddinModule.OlExplorerEvents_10_SinkHelper.AddinExpress.MSO.IExplorerEvents_10.SelectionChange()
Finally, the exception in the dump files from the customer is:
Unhandled exception at 0x00007FFF720BC67F (ntdll.dll) in OUTLOOK.EXE.7468.dmp: Indirect call guard check detected invalid control transfer.
Does anyone know how a variable assignment or a TryCast could trigger a Control Flow Exception? Or any steps we could do to get more information about the root cause?

Related

Error UiElement is not longer valid after publish process to UiPath Orchastrator

I created a robot on UiPath Studio and it were working well running at my machine.
Then I followed the steps to publish it at Orchestrator:
I created a machine on Orchestrator(and linked the key license to the Uipath Assistant)
I created a robot
I created an environment
I created a process linked to the robot
So when I run it from Orchestrator I got the error:
Process: IMPEXTRCOBR
Environment:
Robot: IMPEXTRCOB
Machine name: C205
Info: The UiElement is no longer valid
RemoteException wrapping UiPath.Core.InvalidUiElementException: O UiElement já não é válido ---> RemoteException wrapping System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80040215
at UiPath.UiNodeClass.get_visibility()
at UiPath.Core.UiElement.IsVisible()
--- End of inner exception stack trace ---
at UiPath.Core.Activities.ScopeActivity.OnFaulted(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom)
at System.Activities.Runtime.FaultCallbackWrapper.Invoke(NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propagatedFrom)
at System.Activities.Runtime.FaultCallbackWrapper.FaultWorkItem.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
Start Time: 04/24/2020 11:16:22 AM
End Time: 04/24/2020 11:16:29 AM
Input Values: null
Output Values: Empty
Has Recording: false
And now If I try to run it from my machine I got the same error. And if I try to "fix" the selector of the activity I got the error:
What am I doing wrong?
Is it possible for you to give us a screenshot of your UiPath Sequence project?
Typically these errors occur when a selector is too specific and information that might change, like a page title, is included.
Inherited properties
Often properties in a selector are inherited. So a UiPath scraping activity might be getting its title property from an Attach Browser activity from which it is connected. In that case, the ability to delete the title in the attached activity will be disabled. You'd have to go to the parent.
I have the same problem like you,
when I used the click method
I have gotten through this problem by changing the method using Click Image Activity instead of Click Activity.
This can solve common click errors of not using any selectors to click on specific UI elements.
maybe far from your expectations but this method can help.

How to investigate JNI errors that only appear in Visual Studio debugger

I am working on a .NET application that is required to use a third-party library (a .NET eBMS/AS4 client); that third-party library is itself a JNI wrapper around a Java library. When I call the library, an exception is occurring within the Java library, but whoever implemented the wrapper did not do a good job of it, because any information that the Java exception contained (e.g. error codes, specific error messages) is not added to the .NET exception that gets passed back up to my application, all I get is the most generic of error messages. As you can imagine, this makes supporting the application in production a difficult proposition.
However, if I run the same code on my developer PC from within Visual Studio, then if I watch the Output window, the debugger writes a lot of information from the Java library - I can see it initialising itself, loading all of its modules, then executing, and finally I can see my Java exception occurring, and the actual error is right there in the Output window.
Jul 25, 2018 8:46:42 AM com.ibm.b2b.as4.client.internal.MessageBatcherImpl logEventAudit
INFO: Event Details: App Context Component:[COMMS]; App Context Service Inst:[AS4]; Trans Id:[ebb64ae1-762d-4175-9ca3-61c0b7d74f48]; Stage:[PROCESSING_IN_PROGRESS]; Event Date Time:[25/07/2018 8:46:42 AM]; Event Action:[SENDING_REQUEST]; Event Status:[SUCCESS]; Event Data:[Mime Packing and sending request]; Is Processing:[false]; Is Final:[false]; Exchange Profile Id:[BatchBulkAsyncPull-EVTE-9ea3427a-ed94-474c-8785-460d2dc28a61]; Storage Ref:[Content-Type:[multipart/related]; Storage Blob Id:[000000020028418e00617564697400000000000000000000aa1c854f9817c08d00000164ddec3291]; ]; Role:[REQUEST]; Exchange Group Id:[e88e4628-13fc-411f-ab83-2a297dccb186]; External Reference:[Destination IP=[test2.ato.sbr.gov.au]];
Jul 25, 2018 8:46:42 AM com.ibm.b2b.as4.client.internal.MessageBatcherImpl logEventAudit
INFO: Event Details: App Context Component:[COMMS]; App Context Service Inst:[AS4]; Trans Id:[ebb64ae1-762d-4175-9ca3-61c0b7d74f48]; Stage:[PROCESSING_IN_PROGRESS]; Event Date Time:[25/07/2018 8:46:42 AM]; Event Action:[UNPACKAGING]; Event Status:[SUCCESS]; Event Data:[Unpacking Mime Message]; Is Processing:[false]; Is Final:[false]; Exchange Profile Id:[BatchBulkAsyncPull-EVTE-9ea3427a-ed94-474c-8785-460d2dc28a61]; Storage Ref:[Content-Type:[multipart/related]; Storage Blob Id:[000000020028dcb9006175646974000000000000000000007ca39a2ac13a687b00000164ddec3571]; ]; Role:[REQUEST]; Exchange Group Id:[e88e4628-13fc-411f-ab83-2a297dccb186]; External Reference:[Destination IP=[test2.ato.sbr.gov.au]];
Exception in thread "main" EBMS ERRORS : 1 - [ error Code : EBMS:0006, Severity : WARNING, Description : There is no message available for pulling from this MPC at this moment., Error Details : EmptyMsgPartitionChannelException: Pulling message from pull destination failed., RefToMessageInError : A1528423965023.21c28b02-2092-4faf-a394-96a1264f7e6e#1528423965023, Origin : EBMS, Category : Communication, Short description : EmptyMessagePartitionChannel].
at com.ibm.b2b.as4.client.internal.ResponseImpl.workWithError(ResponseImpl.java:214)
at com.ibm.b2b.as4.client.internal.ResponseImpl.<init>(ResponseImpl.java:89)
at com.ibm.b2b.as4.client.internal.RequestImpl.createResponse(RequestImpl.java:341)
at com.ibm.b2b.as4.client.internal.RequestImpl.createResponse(RequestImpl.java:317)
at com.ibm.b2b.as4.client.internal.RequestImpl.sendBDO(RequestImpl.java:249)
at com.ibm.b2b.as4.client.internal.RequestImpl.send(RequestImpl.java:226)
Exception thrown: 'IBM_AS4Client.AS4ClientEbMSException' in AS4Client_x64.dll
So my question is: how can I get to that information that the debugger can see, but the .NET runtime is not aware of? Some of it looks like logging output, but it's not being written to any logs on the file system that I can find.
UPDATE
The third-party code seems to make some use of log4cxx (at least, it comes with a log4cxx.properties and a log4cxx_x64.dll, but the log4cxx.properties seems to be pure log4j); anyway, I tweaked it to show DEBUG level instead of the default INFO level it was showing before, and now I can see some of the output, but only DEBUG level, not INFO or higher. The INFO entries in the sample below are in a different layout to that used by the DEBUG entries, so I suspect they are not being written by log4j.
Further digging (hey, I'm a .NET guy, not a Java guy, so I have no idea what this stuff does until I prod it with a pointed stick) yields a logging.properties file, which together with the logging sample above, suggests that the INFO: stuff is being written by java.utils.logging, so some more investigation there would be merited.

NativeScript Hybrid Mobile App: Tracking/Capturing Crashes

I am building a NativeScript mobile app and among other things I am capturing for analytics purposes, I need to capture "app crashes" possibly with errors/reasons it crashed.
I came across this SO post but there it was in the response of a question on how not to let the app crash. Following was suggested to catch crash events:
var application = require("application");
application.on(application.uncaughtErrorEvent, function (args) {
if (args.android) {
// For Android applications, args.android is an NativeScriptError.
console.log("NativeScriptError: " + args.android);
} else if (args.ios) {
// For iOS applications, args.ios is NativeScriptError.
console.log("NativeScriptError: " + args.ios);
}
});
If I go by the above then I have the following questions. Would appreciate if somebody can confirm if this means every-time the app is crashing it will generate this application.uncaughtErrorEvent event? Can I rely on it?
If it is true then maybe I can make a REST call to my backend and store date, time and whatever is in args.android or args.ios.
If above is not the correct way then can somebody please help me on how to go about doing this?
Any help is highly appreciated. Thank you!
The application.onUncaughtError will be hit probably 95-98% of the time during a crash; it is pretty reliable. I have seen the app crash without any notice at all it just goes poof, but I'm not sure any reporting system can handle that one.
The way I do it is during the app startup I register a couple things:
I create a global.error function; this is used for anything (like try/catch, promise/catch) that needs to send the errors through to be logged remotely. So anywhere in my codebase I can do a global.error(theError); and it will be handled; this way I do NOT have to worry about trying to load or require things while an error is taking place, as that can cause other errors.
I use the onUncaughtError event to catch anything that is not normally caught, and then notify the user that an error has occurred and quit the app. (in this case, trying to recover is not recommended as you have no idea where the error was thrown from...)
If I use a worker thread, When I startup a worker I register the worker.onerror to forward its data to the main threads global.error function AND I have a specific message from the workers' version of the global.error that sends the error back to the primary thread. This way if the worker itself calls global.error that message is passed back to the main thread and then to the global.error on the main thread which handles everything properly.
This technique allows me to catch pretty much all errors that can occur. The main global.error function and the onUncaughtError both use a simple reporting library that I built that reports all the data back to one of my servers, IF the device is online. If the device is offline, it can optionally save the data to a reporting file to be uploaded later; or just ignore it.
It also has safety checks to verify the error isn't a network error (we don't want the error reporting to go into a loop, i.e. trying to report the error causes an error, which then tries to report the error; so in the event it is a certain type of network error; it will ignore those. )

ASP.NET MVC3: System.NotSupportedException: Specified method is not supported

Hello I am Developing a ASP.NET MVC3 application and MYSQL Database accessed by entity framework. I am done with the deployment part and now i am trying to deploy it on GO DADDY server after deploying it so far every page is working fine but only in one page the following error is coming
Specified method is not supported.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NotSupportedException: Specified method is not supported.
i have tried a lot searching to find the solution of the error please help me with this
following is the snap shot of the error
You happen to have a query that results in the DbApplyExpression node in the command tree. This node is typically translated to CROSS/OUTER APPLY construct in SQL however MySQL does not support CROSS/OUTER APPLY. Most likely you will have to change your query a little bit to avoid the CROSS/OUTER APPLY. Take a look a this msdn article for more details. I also found something at DevArt website that can be helpful

What causes "Method ~ of object ~ failed" in a VB6 application?

I am working on an old VB6 app and have recently added the Siemens OPC component. When running in VB6 debugger I have no problems.
I then created a deployment package (Siemens OPC dlls included in the package) and deployed the app on the same PC. I then get the following error message when accessing the OPC object:
'Method ~ of object ~ failed'
Can anyone suggest what might be causing this or what I can do to get more information?
UPDATE
I am aware of other questions around this error message. What is puzzling me here is that there are no problems when using the VB debugger. The problems occur after deployment - even on the same machine. I would have thought that all the components remain registered and available.
CODE
Public Sub InitialiseOPC(ServerIP As String, OpcServerName As String, BaseAddress As String)
On Error GoTo ProcError
IsInitialised = False
Set MyOpcServer = New OPCServer
Dim LocalServers
LocalServers = MyOpcServer.GetOPCServers(ServerIP)
....
The error occurs when GetOPCServers is called. This is the first time the OPC component is accessed.
Is there any way to trace what VB is doing at this time (e.g. dll loading) ?
UPDATE
I tried deploying the Siemens dlls to the application folder instead of the default locations and this error message no longer appears.
Method ~ of object ~ failed is generated when an exception (SEH) is thrown during a late-bound call. VB6 makes the effort to "wrap" each late-bound call to catch such unexpected behavior.
In your case most probably a VC component is trying to load a dependent DLL or COM object and fails but does not handle the failure gracefully. Instead it tries to call a method on the empty reference and bombs with an Access Violation or similar exception.

Resources