Thread (3 messages) flat view 3 messages, 2 authors, 6d ago

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

From: Shivaprasad G Bhat <hidden>
Date: 2026-08-27 14:16:40
Also in: lkml

Hi Shrikanth,


On 8/27/26 5:08 PM, Shrikanth Hegde wrote:
quoted hunk ↗ jump to hunk
Hi Shivaprasad.

On 8/27/26 11:13 AM, Shivaprasad G Bhat wrote:
quoted
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/ 
lda1jyut.ritesh.list@gmail.com/#t
4 - https://lore.kernel.org/linuxppc-dev/20260820134718.2176411-1- 
mkchauras@gmail.com/
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);
Yes. This worked.

Thanks,
Shivaprasad>           return syscall_get_error(current, regs);
+    }

      if (unlikely(test_and_clear_thread_flag(TIF_SYSCALL_RET)))
          return syscall_get_error(current, regs);
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help