RPA | BluePrism | stack imbalance - blueprism

I encountered one exception during stepping, I clicked Ok and set next stage to a previously executed stage. In these kind of scenarios blueprism mostly give below error :
"Internal : stack imbalance has reached"
Why am I getting this error?
Please help.

Stack imbalance errors can happen in Blue Prism if:
You step over too fast in Debug Mode (step over before the current stage ends)
The process or business object is in Exception mode and a new Exception is thrown(for instance if an Action stage throws an Exception after a Recover stage but before a Resume stage).
To recover from a Stack Imbalance error you can:
Reset
Or just run a Resume stage and continue debugging

Stack imbalance is caused by moving too fast forward while in debug mode. I can't know exactly how it works but I suspect the behavior is as follows:
When you press F10(Jump over), you will execute the process and system will push a return adress to the stack. If you then press F10 again before exiting the first process you will push new things onto of the stack and now you have created an imballance on the stack and the return adress will be false when the first process tries to pop from the stack.
To know more about the stack in general see wiki link: Wiki Call Stack

This error is thrown when you are in recover mode (an exception has already occurred but has not cleared by a resume stage) and manually set to run another stage and and another exception occur again.

It is most likely that you didn't handle the exception properly by passing the exception through Resume and Recover. If the an exception broke it must go through Recover and Resume to be resolved or else it will throw Stack imbalance Error

I started working on BluePrism just few months back, and believe me I have got this error a lot of times. According to what I have noticed, this error occurs in debug mode. That is when you are running your code by "Stepping In".
If you have run a Stage, and stepped in while the current Stage is still running you'll get this error.
To get your code back running, you can try the below:
Reset the page
Reset the Process/Object entirely
If you are getting this error while running a page that is being called from another page. Then - Run the page in debug mode again from where it is being called. In this case you will not have to reset your Code.

I think that you must hit the RESET buton.

Related

'Internal : End of subsheet without corresponding start' in blue prism

I encountered an error 'Internal : End of subsheet without corresponding start' in blue prism after stepping the end stage in process studio,can anyone knows what the error means and when it comes?
This happens when BP "gets lost" after the end of a page because it was not directed to the page using a Page Reference stage to begin with.It can happen if for example you are using Set Next Stage a bit too freely jumping between pages instead of following a more linear approach to debug your process. I would suggest to reset and try a more linear approach.
As mentioned in above answer, blue prism gets lost in the page flow. To fix this you can try using step out when you reach the end of the sub page.
You can get this error in Process Studio, if you have started the Execution of the sub-page using "Set Next Stage" option by right-clicking on Start Stage or any of the stages of the sub-page.
Once this reaches the End Stage on the sub-page, it will throw this error message as the Main Page did not make a call to the sub-page.
So you should always first add page reference on Main Page and then run the sub page from Main Page to avoid this error.
I am not sure but there can be other reasons also for this error.

Handle unexpected Lauterbach T32-Remote API connection aborts

Imagine you are using or developing an automated test for the T32-Remote API. In this case the C-API is wrapped into Java.
The connection is initialized with:
T32_Config("NODE=", "localhost"));
T32_Config("PACKLEN=", "1024"));
T32_Config("PORT=", "20000"));
T32_Init());
T32_Attach(T32.T32_DEV_ICE);
After that, the test starts and is aborted unexpectedly by the user without calling:
T32_Exit();
If you are restarting the test again now, this results in a connection error at T32_Attach() returning -1 (T32_ERR_COM_RECEIVE_FAIL). Restarting a second time does not cause any issues.
Is there any way from within the remote API to reset Trace32? Closing the program and open it again or restarting the test a second time is not an option.
I do not really know why this fixed the issue but if an error occurs, simply run the entire initialization routine again.
1st time: T32_Exit() not called
2nd time: simply do this
T32_Config("NODE=", "localhost"));
T32_Config("PACKLEN=", "1024"));
T32_Config("PORT=", "20000"));
T32_Init());
if(T32_Attach(T32.T32_DEV_ICE) != 0){
T32_Config("NODE=", "localhost"));
T32_Config("PACKLEN=", "1024"));
T32_Config("PORT=", "20000"));
T32_Init());
T32_Attach(T32.T32_DEV_ICE)
}

How to ignore specific errors from the New Relic Dashboard

Helllo,
My application is a web server that fires many requests to other servers. We set up a maximum timeout on those requests, and whenever the timeout is reached, the connection is closed and a ESOCKETTIMEDOUT rises.
Error: socket hang up
at createHangUpError (http.js:1472:15)
at Socket.socketCloseListener (http.js:1522:23)
at Socket.EventEmitter.emit (events.js:117:20)
at TCP.close (net.js:465:12)
I want to exclude these errors from the New Relic Dashboard, since they distort the error rate and other metrics. Hiding them doesn't work either, because they still count in the error rate.
How can remove specific errors (that do not have a HTTP status code) from my Dashboard?
You can pass status codes to ignore to the error collector. If you are configuring the New Relic agent using environment variables you can use a comma separated list of codes as the value for NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES.
See the README.
If you are using newrelic.js to do so you can set the error_collector.ignore_codes value to an Array of status codes to ignore:
See the example config.
Important caveat: when setting this value manually you are overriding the default value of 404 which means that if you do not specify 404 in your manual configuration the Error Collector will start logging all 404 errors in your application (which you probably do not want).
I noticed you have javascript, I'm not sure if my solution can help you but I'll answer in the hope it does.
I use Java agent, and we have the same kind of problem. So far the only way that I found that can do something near what I want is having the specific errors wrapped in a dedicated exception ("NewRelicIgnorableException") and wrap whatever error I don't want to see in it.
Then I'd have to go into the dashboard/application and select "error collection". Last, I'd fill in the "Ignore these errors" with the full package name AND exception class name, like com.mypackage.NewRelicIgnorableException. Save and enjoy. These particular errors should not impact your apdex, but they will still count towards RPM and other metrics.
Other solutions have drawbacks. For example if I call ignoreexception the RPM and time metrics will not count. If you click the "hide error" button you only hide them from the error panel, but everything else will be as usual. If you ignore by status code you can get more or less the same results as ignoring the specific exception, but without any hope for fine control.
It's a pity that there's so little documentation on their site, I had to run tests to find these out.

User Exit CONFPP05 (T-code co11n) Exception condition "DUPREC" raised

I'm currently working on the user exit CONFPP05 (T-code co11n)
and I'm facing a problem, when i give error message with type E.
When the program execute that error, the program succesfully run the error message, but after that, when I press ENTER or SAVE button, it gives me a runtime error
here I catch some error
Exception condition "DUPREC" raised.
Error analysis
A RAISE statement in the program "SAPLCORB" raised the exception
condition "DUPREC".
Since the exception was not intercepted by a superior
program, processing was terminated.
Short description of exception condition:
For detailed documentation of the exception condition, use
Transaction SE37 (Function Library). You can take the called
function module from the display of active calls.
-
Trigger Location of Runtime Error
Program SAPLCORB
Include LCORBU08
Row 100
Module type (FUNCTION)
Module Name CO_RU_DI_AFRU_INSERT
It would be easier to confirm if we had access to your code.
However, the export parameters for the user exit are CAUVD_TAB (table of orders) and AFRUD_TAB (table of confirmations). I think that when you are showing your error message, you are not exiting the function properly and are still appending either or both of these tables. This means that when the database tries to update, it ends up with a duplicate key which results in the runtime error.

Trappable error 0xC0000005

We have one very old legacy application written on Classic ASP. Recently on a couple of servers we've started to get fatal errors. IIS process crashes. We've got few error's stack traces with IIS Debug Tool. There is 2 common types of errors.
We are using only few types of COM components in our application: ADO, Scripting.Dictionary, Scripting.FileSystem & MSXML6.
IIS logs says that error description is access violation exception (0xC0000005).
Do you have any ideas about the reason of errors or any ways for future debugging. Any ways to get more info about this errors will be very appreciated.
Thanks.
Stack traces:
1.
1996e18
oleaut32!VariantCopy+173
oleaut32!SafeArrayCopyData+14e
oleaut32!SafeArrayCopy+e3
oleaut32!VariantCopy+5b
oleaut32!VariantCopyInd+1a1
asp!CComponentObject::GetVariant+27
asp!CApplnVariants::get_Item+da
oleaut32!DispCallFunc+16a
oleaut32!CTypeInfo2::Invoke+234
asp!CDispatchImpl<IVariantDictionary>::Invoke+55
oleaut32!CTypeInfo2::Invoke+58a
asp!CDispatchImpl<IApplicationObject>::Invoke+55
vbscript!IDispatchInvoke2+b2
vbscript!IDispatchInvoke+59
vbscript!InvokeDispatch+13a
vbscript!InvokeByName+42
vbscript!CScriptRuntime::RunNoEH+22b2
vbscript!CScriptRuntime::Run+62
vbscript!CScriptEntryPoint::Call+51
vbscript!CSession::Execute+c8
vbscript!COleScript::ExecutePendingScripts+144
vbscript!COleScript::SetScriptState+14d
asp!CActiveScriptEngine::TryCall+19
asp!CActiveScriptEngine::Call+31
asp!CallScriptFunctionOfEngine+5b
asp!ExecuteRequest+17e
asp!Execute+24c
asp!CHitObj::ExecuteChildRequest+12c
asp!CErrInfo::LogCustomErrortoBrowser+28a
asp!CErrInfo::LogErrortoBrowserWrapper+8b
asp!CErrInfo::LogError+77
asp!HandleError+100
asp!HandleErrorMissingFilename+ac
asp!CActiveScriptEngine::Call+a7
asp!CallScriptFunctionOfEngine+5b
asp!ExecuteRequest+17e
asp!Execute+24c
asp!CHitObj::ViperAsyncCallback+3f0
asp!CViperAsyncRequest::OnCall+92
comsvcs!CSTAActivityWork::STAActivityWorkHelper+32
ole32!EnterForCallback+c4
ole32!SwitchForCallback+1a3
ole32!PerformCallback+54
ole32!CObjectContext::InternalContextCallback+159
ole32!CObjectContext::DoCallback+1c
comsvcs!CSTAActivityWork::DoWork+12d
comsvcs!CSTAThread::DoWork+18
comsvcs!CSTAThread::ProcessQueueWork+37
comsvcs!CSTAThread::WorkerLoop+190
msvcrt!_endthreadex+a3
kernel32!BaseThreadStart+34
2.
scrrun!FreeList+f   
scrrun!VBADictionary::~VBADictionary+28   
scrrun!VBADictionary::`scalar deleting destructor'+d   
scrrun!VBADictionary::Release+17   
oleaut32!VariantClear+b1   
oleaut32!ReleaseResources+98   
oleaut32!_SafeArrayDestroyData+4d   
oleaut32!_SafeArrayDestroy+b3   
oleaut32!SafeArrayDestroy+f   
oleaut32!VariantClear+75   
vbscript!VAR::Clear+a6   
vbscript!CScriptRuntime::Cleanup+63   
vbscript!CScriptRuntime::Run+8d  
vbscript!CScriptEntryPoint::Call+51  
vbscript!CScriptRuntime::RunNoEH+1e02 
vbscript!CScriptRuntime::Run+62  
vbscript!CScriptEntryPoint::Call+51   
vbscript!CScriptRuntime::RunNoEH+1e02  
vbscript!CScriptRuntime::Run+62   
vbscript!CScriptEntryPoint::Call+51   
vbscript!CScriptRuntime::RunNoEH+1e02   
vbscript!CScriptRuntime::Run+62   
vbscript!CScriptEntryPoint::Call+51   
vbscript!CScriptRuntime::RunNoEH+1e02   
vbscript!CScriptRuntime::Run+62   
vbscript!CScriptEntryPoint::Call+51   
vbscript!CSession::Execute+c8  
vbscript!COleScript::ExecutePendingScripts+144  
vbscript!COleScript::SetScriptState+14d  
asp!CActiveScriptEngine::TryCall+19   
asp!CActiveScriptEngine::Call+31   
asp!CallScriptFunctionOfEngine+5b   
asp!ExecuteRequest+17e  
asp!Execute+24c   
asp!CHitObj::ViperAsyncCallback+3f0   
asp!CViperAsyncRequest::OnCall+92   
comsvcs!CSTAActivityWork::STAActivityWorkHelper+32   
ole32!EnterForCallback+c4   
ole32!SwitchForCallback+1a3   
ole32!PerformCallback+54   
ole32!CObjectContext::InternalContextCallback+159   
ole32!CObjectContext::DoCallback+1c   
comsvcs!CSTAActivityWork::DoWork+12d   
comsvcs!CSTAThread::DoWork+18   
comsvcs!CSTAThread::ProcessQueueWork+37   
comsvcs!CSTAThread::WorkerLoop+190   
msvcrt!_endthreadex+a3
kernel32!BaseThreadStart+34
We had very similar situation last couple weeks. It was very complicated to track down this issue. The problem is in OnError handler of VB6 code. There are 2 cases to reproduce:
you do not have OnError handler, error occurs and goes directly to
IIS
error occurs in OnError handler and goes directly to IIS.
After ~100 such errors IIS will fail to work normally. It will be absolutely unpredictable behavior after this moment.

Resources