-
Notifications
You must be signed in to change notification settings - Fork 9
Closed
Description
I have softIOC code developed on other systems that is failing to run on my Apple Silicon Macbook Pro M2 (in a Parallels virtual machine running Ubuntu), and it appears to be due to the devIocStats feature causing a buffer overflow and then core dump.
My machine:
Linux vm-ubuntu24 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:32:09 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
The easiest way to demonstrate the error; this is on a machine installed last July. I wasn't running devIocStats on it until now.
Python 3.12.4 | packaged by Anaconda, Inc. | (main, Jun 18 2024, 15:03:55) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from softioc import softioc
INFO: PVXS QSRV2 is loaded, permitted, and ENABLED.
>>> softioc.devIocStats('test')
*** buffer overflow detected ***: terminated
Aborted (core dumped)
I also tried to reproduce the problem on a freshly installed Ubuntu 24.04 machine I just made for a test. It fails to compile.
Collecting softioc
Downloading softioc-4.5.0.tar.gz (82 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting epicscorelibs<7.0.7.99.2,>=7.0.7.99.1.1 (from softioc)
Using cached epicscorelibs-7.0.7.99.1.1-cp312-cp312-linux_aarch64.whl
Collecting pvxslibs>=1.2.2 (from softioc)
Downloading pvxslibs-1.3.2.tar.gz (660 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 660.7/660.7 kB 411.8 kB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy in /usr/local/Anaconda3-2024.10-1/lib/python3.12/site-packages (from softioc) (1.26.4)
Collecting epicsdbbuilder>=1.4 (from softioc)
Downloading epicsdbbuilder-1.5-py3-none-any.whl.metadata (2.8 kB)
Requirement already satisfied: setuptools in /usr/local/Anaconda3-2024.10-1/lib/python3.12/site-packages (from epicscorelibs<7.0.7.99.2,>=7.0.7.99.1.1->softioc) (75.1.0)
Collecting setuptools-dso>=2.11a2 (from epicscorelibs<7.0.7.99.2,>=7.0.7.99.1.1->softioc)
Using cached setuptools_dso-2.11-py2.py3-none-any.whl.metadata (1.6 kB)
Downloading epicsdbbuilder-1.5-py3-none-any.whl (23 kB)
Using cached setuptools_dso-2.11-py2.py3-none-any.whl (23 kB)
Building wheels for collected packages: softioc, pvxslibs
Building wheel for softioc (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for softioc (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [149 lines of output]
running bdist_wheel
running build
running build_py
creating build/lib.linux-aarch64-cpython-312/softioc
copying softioc/__init__.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/__main__.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/_version_git.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/alarm.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/asyncio_dispatcher.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/builder.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/cothread_dispatcher.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/device.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/device_core.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/fields.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/imports.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/pvlog.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/pythonSoftIoc.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/softioc.py -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/access.acf -> build/lib.linux-aarch64-cpython-312/softioc
copying softioc/device.dbd -> build/lib.linux-aarch64-cpython-312/softioc
creating build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/Makefile -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStats.dbd -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStats.h -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStatsAnalog.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStatsString.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStatsSub.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStatsTest.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devIocStatsWaveform.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
copying softioc/iocStats/devIocStats/devVxStats.dbd -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
creating build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/Makefile -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/access.db -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/access.doc -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/ioc.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocAdminRTEMS.substitutions -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocAdminScanMon.substitutions -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocAdminSoft.substitutions -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocAdminVxWorks.substitutions -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocCluster.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocEnvVar.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocGeneralTime.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocQueue.db -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocRTEMSOnly.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocRTOS.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocScanMon.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocScanMonSum.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
copying softioc/iocStats/iocAdmin/Db/iocVxWorksOnly.template -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/iocAdmin/Db
creating build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/devIocStatsOSD.h -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdBootInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdClustInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdCpuUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdCpuUtilization.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdFdUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdHostInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdIFErrors.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdMemUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdPIDInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdPwdInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdSuspTasks.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdSystemInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
copying softioc/iocStats/devIocStats/os/default/osdWorkspaceUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
creating build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Darwin
copying softioc/iocStats/devIocStats/os/Darwin/devIocStatsOSD.h -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Darwin
creating build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/devIocStatsOSD.h -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/osdBootInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/osdCpuUtilization.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/osdFdUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/osdHostInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/osdMemUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
copying softioc/iocStats/devIocStats/os/WIN32/osdSystemInfo.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/WIN32
creating build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Linux
copying softioc/iocStats/devIocStats/os/Linux/osdCpuUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Linux
copying softioc/iocStats/devIocStats/os/Linux/osdCpuUtilization.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Linux
copying softioc/iocStats/devIocStats/os/Linux/osdFdUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Linux
copying softioc/iocStats/devIocStats/os/Linux/osdMemUsage.c -> build/lib.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Linux
running build_ext
building 'softioc._extension' extension
creating build/temp.linux-aarch64-cpython-312/softioc
creating build/temp.linux-aarch64-cpython-312/softioc/iocStats/devIocStats
creating build/temp.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/Linux
creating build/temp.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/os/default
gcc -pthread -B /usr/local/Anaconda3-2024.10-1/compiler_compat -fno-strict-overflow -Wsign-compare -DNDEBUG -O3 -Wall -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -D_GNU_SOURCE -D_DEFAULT_SOURCE -Dlinux -DUNIX -D_GLIBCXX_USE_CXX11_ABI=1 -I/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include -Isoftioc/iocStats/devIocStats -Isoftioc/iocStats/devIocStats/os/Linux -Isoftioc/iocStats/devIocStats/os/default -I/usr/local/Anaconda3-2024.10-1/include/python3.12 -c softioc/extension.c -o build/temp.linux-aarch64-cpython-312/softioc/extension.o -g0 -std=c99
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccess.h:20,
from softioc/extension.c:7:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbBase.h:164:5: warning: ‘rset’ is deprecated [-Wdeprecated-declarations]
164 | rset *prset;
| ^~~~
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbBase.h:22:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/recSup.h:68:8: note: declared here
68 | struct rset { /* record support entry table */
| ^~~~
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccess.h:24:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccessDefs.h:210:42: warning: ‘rset’ is deprecated [-Wdeprecated-declarations]
210 | DBCORE_API rset * dbGetRset(const struct dbAddr *paddr);
| ^~~~~~
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/recSup.h:68:8: note: declared here
68 | struct rset { /* record support entry table */
| ^~~~
gcc -pthread -B /usr/local/Anaconda3-2024.10-1/compiler_compat -fno-strict-overflow -Wsign-compare -DNDEBUG -O3 -Wall -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -D_GNU_SOURCE -D_DEFAULT_SOURCE -Dlinux -DUNIX -D_GLIBCXX_USE_CXX11_ABI=1 -I/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include -Isoftioc/iocStats/devIocStats -Isoftioc/iocStats/devIocStats/os/Linux -Isoftioc/iocStats/devIocStats/os/default -I/usr/local/Anaconda3-2024.10-1/include/python3.12 -c softioc/iocStats/devIocStats/devIocStatsAnalog.c -o build/temp.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/devIocStatsAnalog.o -g0 -std=c99
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccess.h:20,
from softioc/iocStats/devIocStats/devIocStatsAnalog.c:118:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbBase.h:164:5: warning: ‘rset’ is deprecated [-Wdeprecated-declarations]
164 | rset *prset;
| ^~~~
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbBase.h:22:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/recSup.h:68:8: note: declared here
68 | struct rset { /* record support entry table */
| ^~~~
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccess.h:24:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccessDefs.h:210:42: warning: ‘rset’ is deprecated [-Wdeprecated-declarations]
210 | DBCORE_API rset * dbGetRset(const struct dbAddr *paddr);
| ^~~~~~
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/recSup.h:68:8: note: declared here
68 | struct rset { /* record support entry table */
| ^~~~
gcc -pthread -B /usr/local/Anaconda3-2024.10-1/compiler_compat -fno-strict-overflow -Wsign-compare -DNDEBUG -O3 -Wall -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -D_GNU_SOURCE -D_DEFAULT_SOURCE -Dlinux -DUNIX -D_GLIBCXX_USE_CXX11_ABI=1 -I/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include -Isoftioc/iocStats/devIocStats -Isoftioc/iocStats/devIocStats/os/Linux -Isoftioc/iocStats/devIocStats/os/default -I/usr/local/Anaconda3-2024.10-1/include/python3.12 -c softioc/iocStats/devIocStats/devIocStatsString.c -o build/temp.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/devIocStatsString.o -g0 -std=c99
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccess.h:20,
from softioc/iocStats/devIocStats/devIocStatsString.c:93:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbBase.h:164:5: warning: ‘rset’ is deprecated [-Wdeprecated-declarations]
164 | rset *prset;
| ^~~~
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbBase.h:22:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/recSup.h:68:8: note: declared here
68 | struct rset { /* record support entry table */
| ^~~~
In file included from /tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccess.h:24:
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/dbAccessDefs.h:210:42: warning: ‘rset’ is deprecated [-Wdeprecated-declarations]
210 | DBCORE_API rset * dbGetRset(const struct dbAddr *paddr);
| ^~~~~~
/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include/recSup.h:68:8: note: declared here
68 | struct rset { /* record support entry table */
| ^~~~
gcc -pthread -B /usr/local/Anaconda3-2024.10-1/compiler_compat -fno-strict-overflow -Wsign-compare -DNDEBUG -O3 -Wall -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -O3 -isystem /usr/local/Anaconda3-2024.10-1/include -fPIC -D_GNU_SOURCE -D_DEFAULT_SOURCE -Dlinux -DUNIX -D_GLIBCXX_USE_CXX11_ABI=1 -I/tmp/pip-build-env-f4dm2sp3/overlay/lib/python3.12/site-packages/epicscorelibs/include -Isoftioc/iocStats/devIocStats -Isoftioc/iocStats/devIocStats/os/Linux -Isoftioc/iocStats/devIocStats/os/default -I/usr/local/Anaconda3-2024.10-1/include/python3.12 -c softioc/iocStats/devIocStats/devIocStatsSub.c -o build/temp.linux-aarch64-cpython-312/softioc/iocStats/devIocStats/devIocStatsSub.o -g0 -std=c99
softioc/iocStats/devIocStats/devIocStatsSub.c: In function ‘scanMonInit’:
softioc/iocStats/devIocStats/devIocStatsSub.c:91:16: error: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration]
91 | psub->dpvt = malloc(sizeof(epicsTimeStamp));
| ^~~~~~
softioc/iocStats/devIocStats/devIocStatsSub.c:26:1: note: include ‘<stdlib.h>’ or provide a declaration of ‘malloc’
25 | #include "devIocStats.h"
+++ |+#include <stdlib.h>
26 |
softioc/iocStats/devIocStats/devIocStatsSub.c:91:16: warning: incompatible implicit declaration of built-in function ‘malloc’ [-Wbuiltin-declaration-mismatch]
91 | psub->dpvt = malloc(sizeof(epicsTimeStamp));
| ^~~~~~
softioc/iocStats/devIocStats/devIocStatsSub.c:91:16: note: include ‘<stdlib.h>’ or provide a declaration of ‘malloc’
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for softioc
Building wheel for pvxslibs (pyproject.toml) ... done
Created wheel for pvxslibs: filename=pvxslibs-1.3.2-cp312-cp312-linux_aarch64.whl size=1947218 sha256=4d61814d8b17ea04a967b5889969140bac7584c0299ea5937933f3e18586de4b
Stored in directory: /root/.cache/pip/wheels/cb/b2/4e/5385924e571775421b6050a485cc1960c26227e972b21026c8
Successfully built pvxslibs
Failed to build softioc
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (softioc)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels