Ubuntu 20.10 - elfutils unwinding broken for s390 compat

Bug #1908756 reported by bugproxy
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ubuntu on IBM z Systems
Fix Released
Medium
Skipper Bug Screeners
elfutils (Ubuntu)
Fix Released
Undecided
Frank Heimes
Groovy
Fix Released
Undecided
Skipper Bug Screeners
Hirsute
Fix Released
Undecided
Frank Heimes

Bug Description

SRU Bug Template:
=================

[Impact]

 * There is an endianess problem in pid_memory_read that impacts s390x.

 * Due to this elfutils biarch test fails on s390x doing unwinding for a 32 bit process.

[Fix]

 * e4d985a3c1c873f77d20fa0cd421458cc2824996 e4d985a3 "IBM Z: Fix endianess problem in pid_memory_read"

[Test Case]

 * Have an Ubuntu Server 20.10 system or newer installed on LPAR, z/VM or KVM that comes with elfutils 0.181 or 0.182.

 * Run the test script: 'run-backtrace-native-biarch.sh'

 * It either core dumps without the patch in place - look for "/test-subr.sh: line 84: 376822 Aborted (core dumped)" or succeeds.

 [Where problems could occur]

 * If the translation is not done right (shift of the upper 4 bytes + down on big endian 64 bit targets) the situation is broken in the same way, and things stay the same.

 * But in worst case the changes in 'pid_memory_read' of /libdwfl/linux-pid-attach.c could have a negative impact even on architectures other than s390x, in case the check for the endiness is wrong.

 * But the changes are quite traceable and the additional code that fixes the endianess problem is really only active on a big endian architecture.

 [Other]

 * The fix is upstream accepted with elfutils > 0.182.
__________

---Problem Description---
libdw unwinding fails for 32 bit binaries.

Elfutils biarch test currently fails on s390x doing unwinding for a 32 bit process.

FAIL: run-backtrace-native-biarch.sh
====================================

0x557e7000 0x557eb000 /root/elfutils/tests/backtrace-child-biarch
0x7dba4000 0x7dd51000 /usr/lib/libc-2.32.so
0x7dd53000 0x7dd70000 /usr/lib/libpthread-2.32.so
0x7dd7f000 0x7dda6000 /usr/lib/ld-2.32.so
TID 376858:
# 0 0x7dd6668a raise
# 1 0x7fd0ef60 - 1 <null>
/root/elfutils/tests/backtrace: dwfl_thread_getframes: No DWARF information found
backtrace: backtrace.c:114: callback_verify: Assertion `symname != NULL && strcmp (symname, "sigusr2") == 0' failed.
./test-subr.sh: line 84: 376822 Aborted (core dumped) LD_LIBRARY_PATH="${built_library_path}${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" $VALGRIND_CMD "$@"
backtrace-child-biarch: no main
FAIL run-backtrace-native-biarch.sh (exit status: 1)

Patch has already been posted and upstream committed:
https://sourceware.org/pipermail/elfutils-devel/2020q4/003149.html

Please pick up the following commit for the next release:
commit e4d985a3c1c873f77d20fa0cd421458cc2824996
Author: Andreas Krebbel <email address hidden>
Date: Thu Nov 19 20:32:24 2020 +0100

    IBM Z: Fix endianess problem in pid_memory_read

    The cached reads lack the big endian adjustments done in the fallback
    path.

    Signed-off-by: Andreas Krebbel <email address hidden>

The patch applies cleanly ontop of elfutils_0.181-1.

====
strace right now is not built with unwinding support for IBM Z although both variants should work - libdw and libunwind.

Other distros use libdw from elfutils while Ubuntu on x86 appears to use libunwind. libdw and libunwind do support IBM Z.

It would be good to build strace with unwinding support for Z.

Related branches

bugproxy (bugproxy)
tags: added: architecture-s39064 bugnameltc-190488 severity-medium targetmilestone-inin2104
Changed in ubuntu:
assignee: nobody → Skipper Bug Screeners (skipper-screen-team)
affects: ubuntu → elfutils (Ubuntu)
Frank Heimes (fheimes)
Changed in ubuntu-z-systems:
importance: Undecided → Medium
assignee: nobody → Skipper Bug Screeners (skipper-screen-team)
Frank Heimes (fheimes)
description: updated
Revision history for this message
Frank Heimes (fheimes) wrote :

MP for hirsute is open

Changed in ubuntu-z-systems:
status: New → In Progress
Changed in elfutils (Ubuntu Hirsute):
assignee: Skipper Bug Screeners (skipper-screen-team) → Frank Heimes (fheimes)
Changed in elfutils (Ubuntu Groovy):
assignee: nobody → Skipper Bug Screeners (skipper-screen-team)
Changed in elfutils (Ubuntu Hirsute):
status: New → In Progress
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package elfutils - 0.182-2

---------------
elfutils (0.182-2) unstable; urgency=medium

  * Fix FTCBFS: perform bootstrap build with dummy libdebuginfod and without
    debuginfod (Helmut Grohne). Closes: #973981.
  * Fix build profile pkg.elfutils.nodebuginfod. Closes: #976875.
  * Don't use MAKEFLAGS in the packaging. Closes: #965955.
  * Fix unwinding support for 32bit S390, taken from the trunk.
    Thanks to Andreas Krebbel and Frank Heimes. LP: #1908756.
  * Call dh_dwz.
  * Bump standards version.

 -- Matthias Klose <email address hidden> Thu, 31 Dec 2020 12:52:31 +0100

Changed in elfutils (Ubuntu Hirsute):
status: In Progress → Fix Released
Revision history for this message
Frank Heimes (fheimes) wrote :

A PPA was created and shared that contains a patched elfutils version for groovy:
Look for elfutils - 0.181-1ubuntu1~ppa1 at https://launchpad.net/~fheimes/+archive/ubuntu/lp1908756/+packages

Revision history for this message
Frank Heimes (fheimes) wrote :

MP for groovy is open

Frank Heimes (fheimes)
Changed in elfutils (Ubuntu Groovy):
status: New → In Progress
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello bugproxy, or anyone else affected,

Accepted elfutils into groovy-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/elfutils/0.181-1ubuntu0.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-groovy to verification-done-groovy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-groovy. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in elfutils (Ubuntu Groovy):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-groovy
Revision history for this message
bugproxy (bugproxy) wrote : Comment bridged from LTC Bugzilla

------- Comment From <email address hidden> 2021-01-21 07:35 EDT-------
I've enabled groovy-proposed on my system and have seen the problematic testcase running successfully with:

apt-get --build source elfutils
PASS: run-backtrace-native-biarch.sh

As expected it fails with the old version of the package:

apt-get --build source elfutils=0.181-1
FAIL: run-backtrace-native-biarch.sh

I see the test being skipped in the canonical build logs. Is biarch testing disabled in that environment?

https://launchpadlibrarian.net/497757891/buildlog_ubuntu-groovy-s390x.elfutils_0.181-1_BUILDING.txt.gz

SKIP: run-backtrace-native-biarch.sh

Frank Heimes (fheimes)
tags: added: verification-done verification-done-groovy
removed: verification-needed verification-needed-groovy
Changed in ubuntu-z-systems:
status: In Progress → Fix Committed
Revision history for this message
Łukasz Zemczak (sil2100) wrote : Update Released

The verification of the Stable Release Update for elfutils has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package elfutils - 0.181-1ubuntu0.1

---------------
elfutils (0.181-1ubuntu0.1) groovy; urgency=medium

  * debian/patches/elfutils-lp1908756-groovy.patch:
    IBM Z: Fix endianess problem in pid_memory_read
    backport from elfutils 0.182+
    - libdwfl/linux-pid-attach.c: shift the upper 4 bytes + down on big
      endian 64 bit targets
    - libdwfl/ChangeLog: updated the projects ChangeLog, too
    Thanks to Andreas Krebbel <email address hidden> (LP: #1908756)

 -- Frank Heimes <email address hidden> Fri, 08 Jan 2021 09:49:33 +0100

Changed in elfutils (Ubuntu Groovy):
status: Fix Committed → Fix Released
Frank Heimes (fheimes)
Changed in ubuntu-z-systems:
status: Fix Committed → Fix Released
Revision history for this message
bugproxy (bugproxy) wrote : Comment bridged from LTC Bugzilla

------- Comment From <email address hidden> 2021-01-22 05:51 EDT-------
IBM Bugzilla status->closed, Fix Released for all requested distros

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.