-
Notifications
You must be signed in to change notification settings - Fork 2
genie_python Troubleshooting
Genie_python writes its logs to ...\Instrument\var\logs\genie_python
.
The following is written to the log when a virtual circuit disconnects from the IOC side:
2018-05-21T15:21:31 (CA) (15712) ERROR: CAException: type=-1 state=192 op=5 file=..\cac.cpp lineNo=1223
2018-05-21T15:21:31 (CA) (15712) ERROR: CAException: type=6 state=192 op=0 file=..\getCopy.cpp lineNo=92
The time stamp on these are for the first get_pv
call or equivalent after a disconnect.
There can be multiple problems, check:
- Block exists
- Block is spelt correctly, use
b.
and autocomplete - Try getting the underlying PV
g.get_pv("IN:<instrument>:CS:SB:<Block name?")
- Restart the GUI genie_python console
Have you pulled and rebuilt the latest version of the repository under \Apps\Python3
?
If genie_python
crashes on start with a windows error but the underlying Python appears to start ok try importing numpy
. We have a problem with the latest CPUs (skylakex
) running under the hypervisor which means that the OPENBLAS
library has an unknown instruction in it. The current fix is to set the environment variable so it appears it is running a different core type. Do this with:
OPENBLAS_CORETYPE=Haswell
This is set within the system environment on the PC; currently, this fix is only needed on RIKENFE
and MUONFE
.
If you get an error message similar to
*** Cannot find GENIE-PYTHON 3 - some things are not likely to work ***
on running config_env.bat
, you need to ensure you have Python 3 available on your system.
When running dev_build_python.bat
, you may get an error when Windows tries to apply a patch to the CaChannel.py
file. E.g.
can't find file to patch at input line XXX
Perhaps you should have used the -p or --strip option?
This seems to be caused by using patch from strawberry perl patch and not from git.
If this happens, comment out the patch
command in common_build_python.bat
, then run the script again. Once it's finished, open a Git Bash window, cd
to /c/Instrument/Apps/Python3/package_builder
and run the same patch
command you commented out, changing the Windows paths to UNIX paths (\
-> /
and C:
-> /c
). Then, check the CaChannel.py
file to ensure it was patched properly.
Users seems not to get set properly using g.change_users, see ticket 5812. Look into this it is more than a one off.
If you get repeated errors of the form:
2020-11-11T17:20:48 (CMD) (17808) 2020-11-11 17:20:48.374781: Exception in waitfor loop: UnableToConnectToPVException: Unable to connect to PV IN:LARMOR:DAE:GOODUAH: does not exist
2020-11-11T17:20:48 (CMD) (17808) 2020-11-11 17:20:48.512496: Exception cleared
You may need to restart the genie_python session. The root cause of this issue is currently unknown. See ticket 5893 for details, including a script which can scan all instruments for occurrences of this issue. If this issue is seen again, please create a new ticket to investigate further and also link it here.
In one case this was due to the firewall rule for A:\python3\python.exe
had been disabled - a process firewall exception is needed to allow it to receive the UDP name query reply
If you get an error of the form:
Traceback (most recent call last):
File "c:\Jenkins\workspace\System_Tests\test_genie_python_common_imports.py", line 33, in _attempt_to_import_module_by_name
mod = importlib.import_module(module_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Instrument\Apps\Python3\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Instrument\Apps\Python3\Lib\site-packages\setuptools_dso\__init__.py", line 10, in <module>
from .dsocmd import DSO, Extension, install, build, build_dso, build_ext, bdist_egg
File "C:\Instrument\Apps\Python3\Lib\site-packages\setuptools_dso\dsocmd.py", line 729, in <module>
_needs_builddso(_build, right_before='build_clib')
File "C:\Instrument\Apps\Python3\Lib\site-packages\setuptools_dso\dsocmd.py", line 715, in _needs_builddso
assert issubclass(command, Command)
When trying to import channel access libraries (CaChannel
, pcaspy
, aioca
, p4p
etc), this may be because import pip
has previously been run in the same python session. See https://github.com/pypa/pip/issues/8761 for some details/links. import pip
is not generally supported/recommended by python and is a bad idea - if wanting to install packages dynamically, use subprocess
instead to explicitly spawn a new process which calls pip.
It's also technically possible to replace import pip
with:
import _distutils_hack
_distutils_hack.remove_shim()
import pip
But this is not recommended for obvious reasons.