Re: powerpc: userspace processes crash on abort() from libc.so.6

Shrikanth Hegde <[email protected]>
Newsgroups gmane.linux.ports.ppc.embedded
Message-ID <a147c153-0c73-422c-a183-dad5c5b9aa5c__19853.0618495838$1787831071$gmane$org@linux.ibm.com>
Hi Shivaprasad.

On 8/27/26 11:13 AM, Shivaprasad G Bhat wrote:
> 
> Hi All, Thomas,
> 
> On my PPC64 machine, I see the below systemd crash orginating from abort() during boot on top of the tree. Complete dmesg can be seen here [1]
>        abort (libc.so.6 + 0x29484)
>        __libc_message_impl (libc.so.6 + 0x9e00c)
>        __libc_fatal (libc.so.6 + 0x9e06c)
>        start_thread (libc.so.6 + 0xadffc)
>        __clone (libc.so.6 + 0x152d68)
>        __clone (libc.so.6 + 0x152d68)
>        create_thread.constprop.0 (libc.so.6 + 0xad9c8)
> 
> The git bisect pointed me to commit 3424d8c18a7da "(Merge tag 'core-entry-2026-08-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip)"
> 
> Please find the kernel config used to build the kernel at [2].
> 
> I have tried applying the pending fixes from Mukesh [3] and Ritesh [4] for the currently outstanding issues and still see the problem.
> 
> The system is running Fedora 42, with glibc-2.41-7.fc42.ppc64le. The
> complete list of toolchain and packages can be found here [5]
> 
> Thanks and Regards,
> Shivaprasad
> 
> References:
> 1 - https://gist.github.com/shivaprasadbhat/6f166374bab12b4f4c1cd4ac829e562c
> 2 - https://gist.github.com/shivaprasadbhat/aa499468e124015eec5932fb13e88e05
> 3 - https://lore.kernel.org/linuxppc-dev/[email protected]/#t
> 4 - https://lore.kernel.org/linuxppc-dev/[email protected]/
> 5 - https://gist.github.com/shivaprasadbhat/ae56ca849c3009e8642a6313dc465ea7
> 
> =========
> Backtrace from dmesg:
> [   22.039343][ T1833] systemd-coredump[1833]: Module libsystemd-shared-257.6-1.fc42.so from rpm systemd-257.6-1.fc42.ppc64le
> [   22.039378][ T1833] systemd-coredump[1833]: Stack trace of thread 1828:
> [   22.039378][ T1833] systemd-coredump[1833]: Stack trace of thread 1828:
> [   22.039401][ T1833] systemd-coredump[1833]: #0  0x00007fffa4c29484 abort (libc.so.6 + 0x29484)
> [   22.039401][ T1833] systemd-coredump[1833]: #0  0x00007fffa4c29484 abort (libc.so.6 + 0x29484)
> [   22.039429][ T1833] systemd-coredump[1833]: #1  0x00007fffa4c9e00c __libc_message_impl (libc.so.6 + 0x9e00c)
> [   22.039429][ T1833] systemd-coredump[1833]: #1  0x00007fffa4c9e00c __libc_message_impl (libc.so.6 + 0x9e00c)
> [   22.039461][ T1833] systemd-coredump[1833]: #2  0x00007fffa4c9e06c __libc_fatal (libc.so.6 + 0x9e06c)
> [   22.039461][ T1833] systemd-coredump[1833]: #2  0x00007fffa4c9e06c __libc_fatal (libc.so.6 + 0x9e06c)
> [   22.039491][ T1833] systemd-coredump[1833]: #3  0x00007fffa4cadffc start_thread (libc.so.6 + 0xadffc)
> [   22.039491][ T1833] systemd-coredump[1833]: #3  0x00007fffa4cadffc start_thread (libc.so.6 + 0xadffc)
> [   22.039521][ T1833] systemd-coredump[1833]: #4  0x00007fffa4d52d68 __clone (libc.so.6 + 0x152d68)
> [   22.039521][ T1833] systemd-coredump[1833]: #4  0x00007fffa4d52d68 __clone (libc.so.6 + 0x152d68)
> [   22.039551][ T1833] systemd-coredump[1833]: #5  0x00007fffa4d52d68 __clone (libc.so.6 + 0x152d68)
> [   22.039551][ T1833] systemd-coredump[1833]: #5  0x00007fffa4d52d68 __clone (libc.so.6 + 0x152d68)
> [   22.039580][ T1833] systemd-coredump[1833]: #6  0x00007fffa4cad9c8 create_thread.constprop.0 (libc.so.6 + 0xad9c8)
> [   22.039580][ T1833] systemd-coredump[1833]: #6  0x00007fffa4cad9c8 create_thread.constprop.0 (libc.so.6 + 0xad9c8)
> [   22.039614][ T1833] systemd-coredump[1833]: #7  0x00000000003af858 n/a (n/a + 0x0)
> [   22.039614][ T1833] systemd-coredump[1833]: #7  0x00000000003af858 n/a (n/a + 0x0)
> [   22.039639][ T1833] systemd-coredump[1833]: ELF object binary architecture: PowerPC64
> [   22.039639][ T1833] systemd-coredump[1833]: ELF object binary architecture: PowerPC64
> [   22.042109][    T1] systemd[1]: systemd-journald.service: Scheduled restart job, restart counter is at 1.

I was looking at merge patch and It is possible that TIF_SYSCALL_RET is still set when it is returned
and maybe causing a mismatch.

Does below help?
---

--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -19,8 +19,10 @@ notrace long system_call_exception(struct pt_regs *regs, unsigned long r0)
  	long ret;
  	syscall_fn f;
  
-	if (unlikely(!syscall_enter_from_user_mode_randomize_stack(regs, &r0)))
+	if (unlikely(!syscall_enter_from_user_mode_randomize_stack(regs, &r0))) {
+		clear_thread_flag(TIF_SYSCALL_RET);
  		return syscall_get_error(current, regs);
+	}
  
  	if (unlikely(test_and_clear_thread_flag(TIF_SYSCALL_RET)))
  		return syscall_get_error(current, regs);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.