#1087774 valgrind: Broken ppc64el

Package:
valgrind
Source:
valgrind
Description:
instrumentation framework for building dynamic analysis tools
Submitter:
Julian Andres Klode
Date:
2024-11-18 14:39:03 UTC
Severity:
normal
#1087774#5
Date:
2024-11-18 14:37:34 UTC
From:
To:
valgrind on ppc64el produces invalid read errors in apt:

194s ==47913== Invalid read of size 16
194s ==47913==    at 0x4CFFDE0: ExtractTar::Go(pkgDirStream&) (in /usr/lib/powerpc64le-linux-gnu/libapt-pkg.so.6.0.0)
194s ==47913==    by 0x4D34CE3: debDebFile::MemControlExtract::Read(debDebFile&) (in /usr/lib/powerpc64le-linux-gnu/libapt-pkg.so.6.0.0)
194s ==47913==    by 0x1A0C97: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x1A2F17: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x1B24A3: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x19A723: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x1B0E3B: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x1B187B: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x18C033: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==    by 0x4CF3447: CommandLine::DispatchArg(CommandLine::Dispatch const*, bool) (in /usr/lib/powerpc64le-linux-gnu/libapt-pkg.so.6.0.0)
194s ==47913==    by 0x49130DF: DispatchCommandLine(CommandLine&, std::vector<CommandLine::Dispatch, std::allocator<CommandLine::Dispatch> > const&) (in /usr/lib/powerpc64le-linux-gnu/libapt-private.so.0.0.0)
194s ==47913==    by 0x18716F: ??? (in /usr/bin/apt-ftparchive)
194s ==47913==  Address 0x1fff00d960 is on thread 1's stack
194s ==47913==  320 bytes below stack pointer
194s ==47913==

This is similar to the armhf stack clash protector issue which is:

278s ==47821== Process terminating with default action of signal 11
(SIGSEGV)
278s ==47821==  Access not within mapped region at address 0xFEB9C594
278s ==47821==    at 0x4A51C60: ExtractTar::Go(pkgDirStream&) (in
/usr/lib/arm-linux-gnueabihf/libapt-pkg.so.6.0.0)
278s ==47821==  If you believe this happened as a result of a stack
278s ==47821==  overflow in your program's main thread (unlikely but
278s ==47821==  possible), you can try to increase the size of the
278s ==47821==  main thread stack using the --main-stacksize= flag.
278s ==47821==  The main thread stack size used in this run was 8388608.
278s Segmentation fault

Both can be worked around by moving the 32KB buffer to the heap; but this
is not a real stack exhaustion...

https://salsa.debian.org/apt-team/apt/-/commit/a5d029ea6474db4f7edf8e9b6d73afd2ae583250

Per discussion on IRC, we decided to remove the workaround and instead
stop building valgrind on armhf and ppc64el. This bug is for
documentation purposes.