robocorp / robocorp

Create 🐍 Python AI Actions and 🤖 Automations, and deploy & operate them anywhere
https://robocorp.com/
Apache License 2.0
405 stars 50 forks source link

robocorp-windows can print tracebacks due to faulthandler being installed when `GetNextSiblingControl` is called #283

Open fabioz opened 4 months ago

fabioz commented 4 months ago

Target components

windows

What is wrong

A traceback is printed when GetNextSiblingControl is called. Apparently this is because faulthandler is enabled and the API is raising the signal that faulthandler uses and then the traceback is printed (but the execution just works as usual).

System info

Windows 11

Example script

No response

fabioz commented 4 months ago

Tracebacks would be something as:

Current thread 0x00005be8 (most recent call first):
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\windows\_vendored\uiautomation\uiautomation.py", line 6364 in GetNextSiblingControl
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\windows\_vendored\uiautomation\uiautomation.py", line 6406 in GetChildren
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\windows\_iter_tree.py", line 142 in iter_tree
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\windows\_control_element.py", line 627 in _iter_children_nodes
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\windows\_control_element.py", line 466 in _raise_or_warn_control_not_found
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\windows\_control_element.py", line 543 in find
  File "c:\Users\Raivo\Robots\new-test-bots\windows_app.py", line 8 in use_app
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\_task.py", line 78 in run     
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\_commands.py", line 438 in run
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\_argdispatch.py", line 22 in _dispatch
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\_argdispatch.py", line 227 in process_args
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\cli.py", line 78 in main      
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\__main__.py", line 4 in <module>
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\runpy.py", line 86 in _run_code
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\runpy.py", line 196 in _run_module_as_main
Windows fatal exception: code 0x80040155

Thread 0x00007030 (most recent call first):
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\threading.py", line 320 in wait
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\queue.py", line 171 in get
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\site-packages\robocorp\tasks\_log_output_setup.py", line 73 in write_in_thread
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\threading.py", line 953 in run
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\threading.py", line 1016 in _bootstrap_inner
  File "c:\ProgramData\robocorp\ht\6758545_b1f3c24_59f207d3\lib\threading.py", line 973 in _bootstrap
fabioz commented 4 months ago

The current workaround is having the user do:

import faulthandler
faulthandler.disable()