redhat-plumbers/systemd-rhel7

Systemctl daemon-reload fails with SEGV. The fatal pointer is only 2 bit different from the expected value

zlind0 opened this issue · 1 comments

systemd version the issue has been seen with

219

Used distribution

CentOS7

Linux kernel version used

4.19.48-006

CPU architectures issue was seen on

aarch64

Component

systemd

Expected behaviour you didn't see

systemctl daemon-reload reloads the daemon successfully without any exception, and the unit linked list is intact.

Unexpected behaviour you saw

systemctl daemon-reload caused segmentation fault in systemd.
The coredump suggests it crashes in

unic.c: unit_free(Unit *u)
if (u->type != _UNIT_TYPE_INVALID)
LIST_REMOVE(units_by_type, u->manager->units_by_type[u->type], u);

image

Here, the linked list is broken.
u->units_by_type_prev points to a wrong address, 0xaaaa87549290, whereas the correct one is 0xaaaad7549290.
Comparing 0xaaaa87549290 and 0xaaaad7549290 , there is only 2 bit difference, 0x000050000000.

image

I know systemd 219 is a thing from the last decade. I'm sorry to ask help in this manner. But I've struggled for weeks. I searched all the commit history but found nothing related. I am grateful if someone has any suggestion on this. Thanks a lot.

Steps to reproduce the problem

Unknown

Additional program output to the terminal or log subsystem illustrating the issue

No response

You are aware that CentOS 7 is EOL, are you? Anyway, this looks like a HW issue to me.