Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable rust powerpc-unknown-linux-gnuspe for qoriq #5879

Merged
merged 58 commits into from
Feb 5, 2024

Conversation

th0ma7
Copy link
Contributor

@th0ma7 th0ma7 commented Sep 11, 2023

Description

  1. Add powerpc-unknown-linux-gnuspe rust toolchain for properly supporting qoriq arch
  2. Enable debug_symbols for qoriq (and x64 to help diagnosing) - TEMPORARY

Helps debugging #5684 and #5847
Fixes #

Checklist

  • Build rule all-supported completed successfully
  • New installation of package completed successfully
  • Package upgrade completed successfully (Manually install the package again)
  • Package functionality was tested
  • Any needed documentation is updated/created

Type of change

  • Bug fix
  • New Package
  • Package update
  • Includes small framework changes
  • This change requires a documentation update (e.g. Wiki)

Objective

Objective is when building not getting lwsync:

powerpc-e500v2-linux-gnuspe-objdump -d ./cryptography/hazmat/bindings/_rust.abi3.so | grep lwsync

Additional Change(s)

Introduction of $(ADDITIONAL_RUSTFLAGS) that allows passing, well, additional flags to rustc at build time, similarly to other existing flags.

@th0ma7 th0ma7 requested a review from hgy59 September 11, 2023 21:02
@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 11, 2023

@hgy59 Heads-up, this should create packages with full debug_symbols enabled and thus help with gdb to analyze core dumps with a lot more details. Note that I enabled it on both qoriq and x64, later to help us out play with it (for instance on my virtual DSM on my syno DS918+).

e.g. feel free to add additional arches you may want to play with, or unlimit unconditionnaly as you see fit.

EDIT: I'll try to figure out how to build gdb for ppc.

@hgy59
Copy link
Contributor

hgy59 commented Sep 12, 2023

EDIT: I'll try to figure out how to build gdb for ppc.

I am working on this (needs patches to build sim/ppc/)

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 12, 2023

@hgy59 I did find a patch to fix building of gdb-7.12.1. Although what is really really weird is that I can build it from cross/gdb-7.12 but cannot under spk or diyspk ?!?!? Further, after investigating the exact same build issue is also occurring under gdb-13.2 (although from both cross and spk/diyspk).

I was finally able to figure out why (now needs to know how to fix it). When it goes into the configure script under sim/ppc at a certain point it tests the "build" c compiler:

checking for i686-pc-linux-gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/spksrc/qoriq-debug/spksrc/cross/gdb-latest/work-qoriq-6.2.4/gdb-13.2/sim/ppc/build.4119280':
configure: error: C compiler cannot create executables
See `config.log' for more details
mv: cannot stat 'config.h': No such file or directory

The end-result way later on is that build-config.h is then missing:

fatal error: build-config.h: No such file or directory
   23 | #include "build-config.h"
      |          ^~~~~~~~~~~~~~~~
compilation terminated.

As at the end of sim/ppc/configure it does a mv config.h ../build-config.h but config.h was not generated in the first place.

What I ended-up doing is commenting out the tmpdir removal from that configure script:

  CFLAGS="${saved_CFLAGS}"
  mv config.h ../build-config.h
  cd ..
  ###rm -rf $tempdir

Which allowed me to keep track of the real error hapening in background:

configure:2482: checking whether the C compiler works
configure:2504: gcc -g -O -I/home/spksrc/qoriq-debug/spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/include -mcpu=8548 -mhard-float -mfloat-gprs=double -I/home/spksrc/qoriq-debug/spksrc/cross/gdb-latest/work-qoriq-6.2.4/install/usr/local/gdb/include   conftest.c  >&5
gcc: warning: '-mcpu=' is deprecated; use '-mtune=' or '-march=' instead
gcc: error: unrecognized command-line option '-mfloat-gprs=double'
configure:2508: $? = 1
configure:2546: result: no

Now why you ask it does not work? Simple, while testing the "build" compiler it includes the "target" flags which includes -mcpu=8548 -mhard-float -mfloat-gprs=double. In turns theses flags should never get used on with "build" compiler making it to fail.

Now the question is, how to fix that?

EDIT: I've contacted the gdb mailing list in hope for help https://sourceware.org/pipermail/gdb/2023-September/050897.html

@hgy59
Copy link
Contributor

hgy59 commented Sep 12, 2023

Although what is really really weird is that I can build it from cross/gdb-7.12 but cannot under spk or diyspk ?!?!? Further, after investigating the exact same build issue is also occurring under gdb-13.2 (although from both cross and spk/diyspk).

exactly my findings.... (didn't try diyspk and in spk/synocli-devel I thought it depends on the build order of dependen packages)

where did you get the patch from? (I created my own).

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 12, 2023

where did you get the patch from? (I created my own).

Backported from https://738272.bugs.gentoo.org/attachment.cgi?id=655808

@hgy59
Copy link
Contributor

hgy59 commented Sep 13, 2023

Although what is really really weird is that I can build it from cross/gdb-7.12 but cannot under spk or diyspk.

This must have something to do with the MAKELEVEL (or include of makefiles), as it fails to build in cross/gdb folder too.

the first difference in the configure output is
gdb-7.12 folder:

checking for powerpc-e500v2-linux-gnuspe-gcc... powerpc-e500v2-linux-gnuspe-gcc

gdb/diyspk/spk folder:

checking for powerpc-e500v2-linux-gnuspe-gcc... /spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/bin/powerpc-e500v2-linux-gnuspe-gcc

The working version finds powerpc-e500v2-linux-gnuspe-gcc and the other use the full path. This difference is for the succeeding logs like calling gcc the same. An for other toolchain tools too (ar, as, nm, ranlib, strip, objcopy, objdump, readelf).

Only the evaluation of ld tool differs:
gdb-7.12 folder:

checking for ld... (cached) /spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/bin/powerpc-e500v2-linux-gnuspe-ld
checking for powerpc-e500v2-linux-gnuspe-ld... (cached) /spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/bin/powerpc-e500v2-linux-gnuspe-ld

gdb/diyspk/spk folder:

checking for ld... (cached) /spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/bin/../lib/gcc/powerpc-e500v2-linux-gnuspe/4.9.3/../../../../powerpc-e500v2-linux-gnuspe/bin/ld
checking for powerpc-e500v2-linux-gnuspe-ld... (cached) /spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/bin/../lib/gcc/powerpc-e500v2-linux-gnuspe/4.9.3/../../../../powerpc-e500v2-linux-gnuspe/bin/ld

Does this sound like toolchain specific handling (PATH=$(TC_PATH):$$PATH) ?

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 13, 2023

@hgy59 I was exactly at that same point until I read this https://scm.linefinity.com/common/openwrt/commit/079d57b0f290a79c9dbc013b6e9c83cebf8a2f99 which at first looked unrelated but it does allow it to build, fully, on both gdb-7.12.1 and gdb-13.2.

I've now created a separete PR for the libpng fix #5880 so we can only have the package needed in this one once rebased against master (waiting for the builds to complete, if ever).

What remains to be confirmed is, is it ok to disable sim on ppc? sim stands for simulator which in turns makes sense that it fails to build a simulator on it's own arch?!? At first glance I belive we can live without this functionality.

@hgy59
Copy link
Contributor

hgy59 commented Sep 13, 2023

@hgy59 I was exactly at that same point until I read this https://scm.linefinity.com/common/openwrt/commit/079d57b0f290a79c9dbc013b6e9c83cebf8a2f99 which at first looked unrelated but it does allow it to build, fully, on both gdb-7.12.1 and gdb-13.2.

@th0ma7 I just created a patch to build sim/ppc, but don't know whether it is broken anyway.
002-fix-configure-of-sim-ppc.patch

EDIT:
reading the given links, IHMO those have problems building sim/ppc (and not running it).

@hgy59
Copy link
Contributor

hgy59 commented Sep 13, 2023

What remains to be confirmed is, is it ok to disable sim on ppc? sim stands for simulator which in turns makes sense that it fails to build a simulator on it's own arch?!? At first glance I belive we can live without this functionality.

I am totally new on this, but I thought that with the simulator we might try to find the qoriq crash on x64 or other archs.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 13, 2023

@th0ma7 I just created a patch to build sim/ppc, but don't know whether it is broken anyway. 002-fix-configure-of-sim-ppc.patch

If that works out then excellent! As long as we have a working solution. Still, more I read and less I believe the ppc simulator is actually needed anyway.

@hgy59 I wonder, shouldn't this be CPPFLAGS="${CPPFLAGS_FOR_BUILD}" ?

@hgy59
Copy link
Contributor

hgy59 commented Sep 13, 2023

@hgy59 I wonder, shouldn't this be CPPFLAGS="${CPPFLAGS_FOR_BUILD}" ?

No, CPPFLAGS_FOR_BUILD is not a variable of the configure file, only CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD are.
It wouldn't change anything, but would imply that such a variable is available....

@hgy59
Copy link
Contributor

hgy59 commented Sep 13, 2023

@th0ma7 sim/ppc is broken in cross/gdb-latest (i.e. 13.2) (but builds fine in cross/gdb-7.12)

make[7]: *** [Makefile:137: icache.o] Error 1
make[7]: Leaving directory '/spksrc/cross/gdb-latest/work-qoriq-6.2.4/gdb-13.2/sim/ppc'
make[6]: *** [Makefile:2556: all-recursive] Error 1
make[6]: Leaving directory '/spksrc/cross/gdb-latest/work-qoriq-6.2.4/gdb-13.2/sim'
make[5]: *** [Makefile:1633: all] Error 2
make[5]: Leaving directory '/spksrc/cross/gdb-latest/work-qoriq-6.2.4/gdb-13.2/sim'
make[4]: *** [Makefile:9950: all-sim] Error 2
make[4]: *** Waiting for unfinished jobs....

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 13, 2023

What remains to be confirmed is, is it ok to disable sim on ppc? sim stands for simulator which in turns makes sense that it fails to build a simulator on it's own arch?!? At first glance I belive we can live without this functionality.

I am totally new on this, but I thought that with the simulator we might try to find the qoriq crash on x64 or other archs.

Indeed, and note that I am relatively new as well to this.

But using this train of thought (and if I get this right), you would need to build gdb for your x86_64 linux that includes the ppc simulator so you can reproduce that locally. Where you would enable --enable-sim-powerpc --enable-sim-bitsize=32 --enable-sim-endian=little.

My theory is that in the current case, having a ppc simulator on a ppc build is most probably useless. Still, I've checked and when it builds from cross/gdb-7.12 it does build sim also ... sigh.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 13, 2023

@hgy59 now rebased against master. resulting github-action results should now reflect our actual needs.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 14, 2023

@hgy59 interestingly, enabling debug_info symbols make qoriq fail to build for python311 which I believe it demonstrates where the bug may lie (don't bother with the _tkinter message, but rather on the assembler):

.../spksrc/spk/python311/work-qoriq-6.2.4/Python-3.11.5/Modules/_ctypes/stgdict.o -L. -L/home/spksrc/qoriq-debug/spksrc/spk/python311/work-qoriq-6.2.4/install/var/packages/python311/target/lib -L/home/spksrc/qoriq-debug/spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/lib -L/home/spksrc/qoriq-debug/spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/lib -L/home/spksrc/qoriq-debug/spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/lib -L/home/spksrc/qoriq-debug/spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/lib/gcc -lffi -ldl -o build/lib.linux-powerpc-3.11/_ctypes.cpython-311-powerpc-linux-gnuspe.so

The necessary bits to build these optional modules were not found:
_tkinter
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

running build_scripts
creating build/scripts-3.11
copying and adjusting /home/spksrc/qoriq-debug/spksrc/spk/python311/work-qoriq-6.2.4/Python-3.11.5/Tools/scripts/pydoc3 -> build/scripts-3.11
copying and adjusting /home/spksrc/qoriq-debug/spksrc/spk/python311/work-qoriq-6.2.4/Python-3.11.5/Tools/scripts/idle3 -> build/scripts-3.11
copying and adjusting /home/spksrc/qoriq-debug/spksrc/spk/python311/work-qoriq-6.2.4/Python-3.11.5/Tools/scripts/2to3 -> build/scripts-3.11
changing mode of build/scripts-3.11/pydoc3 from 644 to 755
changing mode of build/scripts-3.11/idle3 from 644 to 755
changing mode of build/scripts-3.11/2to3 from 644 to 755
renaming build/scripts-3.11/pydoc3 to build/scripts-3.11/pydoc3.11
renaming build/scripts-3.11/idle3 to build/scripts-3.11/idle3.11
renaming build/scripts-3.11/2to3 to build/scripts-3.11/2to3-3.11
/tmp/ccUd4luC.s: Assembler messages:
/tmp/ccUd4luC.s:1391613: Error: operand out of range (0x0000000000008000 is not between 0xffffffffffff8000 and 0x0000000000007fff)
/tmp/ccUd4luC.s:1391619: Error: operand out of range (0x0000000000008004 is not between 0xffffffffffff8000 and 0x0000000000007fff)
/tmp/ccUd4luC.s:1391626: Error: operand out of range (0x0000000000008008 is not between 0xffffffffffff8000 and 0x0000000000007fff)
/tmp/ccUd4luC.s:1391972: Error: operand out of range (0x000000000000800c is not between 0xffffffffffff8000 and 0x0000000000007fff)
/tmp/ccUd4luC.s:1391989: Error: operand out of range (0x0000000000008010 is not between 0xffffffffffff8000 and 0x0000000000007fff)
/tmp/ccUd4luC.s:1391994: Error: operand out of range (0x0000000000008010 is not between 0xffffffffffff8000 and 0x0000000000007fff)

I still presume this is openssl related... perhaps it's missing a few options specifically for ppc?

@hgy59
Copy link
Contributor

hgy59 commented Sep 14, 2023

/tmp/ccUd4luC.s: Assembler messages:

the final error is:

2023-09-14T01:49:01.1161042Z /tmp/ccXENOiA.s:3438448: Error: operand out of range (0x000000000001fc54 is not between 0xffffffffffff8000 and 0x0000000000007fff)
2023-09-14T01:49:01.1161642Z lto-wrapper: /github/workspace/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/bin/powerpc-e500v2-linux-gnuspe-gcc returned 1 exit status

So this can probably be fixed by disabling optimization (at least the lto optimizer).

EDIT:
optimization sometimes breaks the code (so far we have such issues for aarch64 only).

@hgy59
Copy link
Contributor

hgy59 commented Sep 14, 2023

optimization sometimes breaks the code (so far we have such issues for aarch64 only).

just wondering, didn't you have to disable optimization for the debug symbols?

@mreid-tt
Copy link
Contributor

Not that I'm an expert in this but this explanation from Bard may assist with debugging:

The error message "Error: operand out of range (0x000000000001fc54 is not between 0xffffffffffff8000 and 0x0000000000007fff)" means that the program is trying to use an operand (a value that is being operated on) that is outside of the valid range for that operand. In this case, the operand 0x000000000001fc54 is outside of the valid range for the operation that is being performed.

The specific range that the operand must be within depends on the operation that is being performed. However, in general, the operand must be a signed integer between -32768 and 32767. The range 0xffffffffffff8000 and 0x0000000000007fff is significant because it represents the range of signed integers that can be represented in a 32-bit signed integer variable.

The range 0xffffffffffff8000 and 0x0000000000007fff is also significant because it is the range of values that can be represented in memory addresses. This means that any memory address in a 32-bit computer can be represented by a value in this range. The (qoriq) Freescale P1022 CPU is a 32-bit computer processor.

@hgy59
Copy link
Contributor

hgy59 commented Sep 14, 2023

The range 0xffffffffffff8000 and 0x0000000000007fff is also significant because it is the range of values that can be represented in memory addresses. This means that any memory address in a 32-bit computer can be represented by a value in this range. The (qoriq) Freescale P1022 CPU is a 32-bit computer processor.

IMHO it is eather a 32-bit or endianess problem (or both).
we should avoid the use of an assembler file.

  1. build python311 without optimization (PYTHON_OPTIMIZE = 0)
  2. (if 1. works) build python311 with optimization, but avoid CONFIGURE_ARGS += --with-lto for PPC_ARCHS

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 14, 2023

The range 0xffffffffffff8000 and 0x0000000000007fff is also significant because it is the range of values that can be represented in memory addresses. This means that any memory address in a 32-bit computer can be represented by a value in this range. The (qoriq) Freescale P1022 CPU is a 32-bit computer processor.

IMHO it is eather a 32-bit or endianess problem (or both). we should avoid the use of an assembler file.

  1. build python311 without optimization (PYTHON_OPTIMIZE = 0)
  2. (if 1. works) build python311 with optimization, but avoid CONFIGURE_ARGS += --with-lto for PPC_ARCHS

I tried adding ENV += KERNEL_BITS=32 to openssl3, no luck. Although removing lto from qoriq build did worked out. Will push a commit for it.

just wondering, didn't you have to disable optimization for the debug symbols?

nope I did not... question is, lto breaks qoriq when optimized with debug_info symbols... Could it be broken for PPC with py311.x release?

EDIT: actually, initially I did not but with this new commit now by default it does disable lto when:

  • testing all wheels building
  • enabling debug_info symbols
  • or building for qoriq (actually PPC_ARCHS)

@th0ma7
Copy link
Contributor Author

th0ma7 commented Sep 14, 2023

@hgy59 I've rebased against master to get rid of the conflict but forgot it would reset the PR state... In any case, for reference, the last sucessfull github-action run is available here https://github.com/SynoCommunity/spksrc/actions/runs/6188300522?pr=5879

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2024

BTW: We could bundle the synology toolchain and the rust toolchain into one single package to extract to syno-qoriq-6.2.4/work. This is in the event that Synology would remove the toolchain download when DSM 6 is discontinued in October 2024. And this would eliminate the need for an additional Rust toolchain.

I'm wondering (and unrelated to this topic), should we (re)-publish all DSM-6.2.4 toolchains on github, just in case? Or directly on our synocommunity.com server ... As this is pretty much the last bits standing on sourceforge and note that dsm-6.2.4 is no longer supported got out recently (eol october 2024):
https://www.synology.com/en-global/products/status/eol-dsm62

@hgy59
Copy link
Contributor

hgy59 commented Jan 26, 2024

@th0ma7 I aleady have a local backup of all 6.2.4 toolchains to be prepared to put those to github.
Hosting on synocommunity.com is not an option, since the storage is already on the limit.

Unfortunately I missed some toolchains to backup before January 1 2023 when synology removed all but the DSM 6.2.4 from sf.net.

  • northstarplus-1.2 (for R1900ac)
  • ppc824x-3.1 (DSM107e)
  • 88f618x.3,2 (USB Station 2)

But I have some 4.2 and 5.2 toolchains in my archive.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 27, 2024

Again @hgy59 thnx for the upload of the toolchain, my initial testing seems to be working all-right.

Other than that, I believe I'm now done and would appreciate a code review as I've certainly missed something.
Also, still pending formal user testing to confirm all is really working out Ok.

EDIT: Also note that this change now includes a new variable $(ADDITIONAL_RUSTFLAGS) that can be used in the same manner as other CFLAGS and such.

@th0ma7 th0ma7 requested a review from mreid-tt January 27, 2024 16:16
When called from cross or spk usage of $(ARCH)
When called from toolchain:
   - Usage of $(TC_ARCH) when $(TC_NAME) does not exist
   - Usage of $(TC_NAME) for generic archs
@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 27, 2024

There was a tricky part to play with relatively to ARCH value depending where you stand when invoking the build. Now solved and ready for review.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Feb 3, 2024

@hgy59 and all, last round for comments. I intent to clean-up the package build change to enforce builds and merge to master in no time. Thnx in advance.

@th0ma7 th0ma7 merged commit 74955c6 into SynoCommunity:master Feb 5, 2024
17 checks passed
@th0ma7 th0ma7 deleted the qoriq-debug branch February 5, 2024 23:27
@th0ma7
Copy link
Contributor Author

th0ma7 commented Feb 5, 2024

@SynoCommunity/developers qoriq platform with rust support should now work.

@hgy59
Copy link
Contributor

hgy59 commented Feb 6, 2024

@th0ma7 now on the master branch, I want to recreate the rust stage2 toolchain for qoriq.

Is it correct that I have to replace RUST_BUILD_TOOLCHAIN = 0 with RUST_BUILD_TOOLCHAIN = 1 in mk/spksrc.cross-rust-env.mk and build e.g. python311 for qoriq-6.2.4?

@th0ma7
Copy link
Contributor Author

th0ma7 commented Feb 6, 2024

Is it correct that I have to replace RUST_BUILD_TOOLCHAIN = 0 with RUST_BUILD_TOOLCHAIN = 1 in mk/spksrc.cross-rust-env.mk and build e.g. python311 for qoriq-6.2.4?

Exactly. You'll notice that the RUST_BUILD_TOOLCHAIN sits under the qoriq section as unused on other archs. And you don't have to build something, you can simply invoke make from toolchain/syno-qoriq-6.2.4 directory which will install the syno toolchain, rust toolchain + missing qoriq arch which will get either downloaded from native or built.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Feb 7, 2024

@hgy59 suggestion, if you could add at the end of the build your exact tar command so it generates a package ready for publishing online on github later-on would be nice and facilitate subsequent updates (if any is ever needed).

@hgy59
Copy link
Contributor

hgy59 commented Feb 7, 2024

I have successfully built it. Unfortunatley it is not possible to move the existing tag to create the same release with the related commit on the master branch.
So this is a chicken/egg problem that we will not be able to build a release that is created after the merge. i.e. it is not possilbe to create a release with the source code assets that match the built archive.

The command to create the archive is:

/spksrc/toolchain/syno-qoriq-6.2.4# tar -C work/rust/build/x86_64-unknown-linux-gnu/stage2 --exclude=src --exclude=rustc-src -cJf stage2_powerpc-unknown-linux-gnuspe.txz .

sorry I'll be offline for some days...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build/rust-qoriq related to rust target powerpc-unknown-linux-gnuspe (instead of powerpc-unknown-linux-gnu)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unable to start HomeAssistant Core on DS213+ sabnzbd 4.0.3-64 core dumped at startup on qoriq
4 participants