Valgrind findings in ld-2.28.so

Bug #1857741 reported by Jeffrey Walton
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Raspbian
New
Undecided
Unassigned

Bug Description

This issue was reported on Stack Overflow.

$ cat test.cc
#include <stdio.h>
int main() {
    puts("Hello, World!");
    return 0;
}

It produces about 200 findings in ld.so-2.28.so. There are some findings from libc-2.28.so, too.

$ valgrind ./test.exe 2>&1 | grep -c ld-2.28.so
196

It almost looks like something is sideways with Valgrind, like a missing suppression file.

Sorry to report with Raspbian. I should probably report directly to Debian. Debian uses an antique bug reporter from the 1980s. I don't feel like reading a man page to submit a bug to them using email.

=========

$ apt-cache show valgrind
Package: valgrind
Version: 1:3.7.0-6+rpi6
Architecture: armhf
Maintainer: Alessandro Ghedini <email address hidden>
Installed-Size: 36395
Depends: libc6 (>= 2.16), libc6-dbg
Recommends: valgrind-dbg, gdb
...

=========

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster

=========

pi@raspberrypi:~ $ valgrind ./test.exe
==7664== Memcheck, a memory error detector
==7664== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==7664== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==7664== Command: ./test.exe
==7664==
--7664-- WARNING: Serious error when reading debug info
--7664-- When reading debug info from /lib/arm-linux-gnueabihf/ld-2.28.so:
--7664-- Ignoring non-Dwarf2/3/4 block in .debug_info
--7664-- WARNING: Serious error when reading debug info
--7664-- When reading debug info from /lib/arm-linux-gnueabihf/ld-2.28.so:
--7664-- Last block truncated in .debug_info; ignoring
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401A5D0: index (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401A5D4: index (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4008040: _dl_dst_count (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4008288: expand_dynamic_string_token (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401AA80: strlen (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401AA84: strlen (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4017F68: malloc (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4017F74: malloc (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5E8: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B608: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B618: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B634: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B63C: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B664: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B664: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B68C: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B6A0: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B6A4: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B6B0: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x40180A4: calloc (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4017FA8: malloc (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401A160: mmap (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Syscall param mmap2(start) contains uninitialised byte(s)
==7664== at 0x401A174: mmap (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Syscall param mmap2(length) contains uninitialised byte(s)
==7664== at 0x401A174: mmap (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Syscall param mmap2(offset) contains uninitialised byte(s)
==7664== at 0x401A174: mmap (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4017F44: malloc (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400BDD0: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5F4: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B630: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BD7C: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BD98: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401AA14: strdup (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B660: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B660: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B688: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4008E20: _dl_map_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Syscall param openat(filename) contains uninitialised byte(s)
==7664== at 0x4019F4C: __open64_nocancel (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x40180E4: free (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400BB84: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BB9C: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BBBC: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BBC0: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BBE0: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BC50: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BC64: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BCA8: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BCC0: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401AA30: strlen (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401AA48: strlen (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B628: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400BD9C: _dl_new_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4005D98: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005DC4: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005DD0: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005E50: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005E9C: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005EA0: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400602C: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40060C0: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40060DC: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4006114: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4006A0C: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40061D4: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4010FF4: _dl_name_match_p (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4011008: _dl_name_match_p (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401A620: strcmp (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4010FFC: _dl_name_match_p (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4013660: _dl_get_origin (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B690: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B694: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4013674: _dl_get_origin (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400832C: expand_dynamic_string_token (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x40082E4: expand_dynamic_string_token (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4008114: _dl_dst_substitute (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401A67C: strcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4008198: _dl_dst_substitute (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B66C: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B66C: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400926C: _dl_map_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B7A0: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B6B0: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B6B4: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B648: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B900: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005FCC: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4005FE0: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4006020: _dl_map_object_from_fd (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
--7664-- WARNING: Serious error when reading debug info
--7664-- When reading debug info from /lib/arm-linux-gnueabihf/libc-2.28.so:
--7664-- Ignoring non-Dwarf2/3/4 block in .debug_info
--7664-- WARNING: Serious error when reading debug info
--7664-- When reading debug info from /lib/arm-linux-gnueabihf/libc-2.28.so:
--7664-- Last block truncated in .debug_info; ignoring
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400E3FC: _dl_map_object_deps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400E410: _dl_map_object_deps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400E7DC: _dl_map_object_deps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400E80C: _dl_map_object_deps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400E844: _dl_map_object_deps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B654: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B658: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B65C: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B668: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B67C: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B680: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B684: memcpy (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4015FE4: _dl_sort_maps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664==
==7664== More than 100 errors detected. Subsequent errors
==7664== will still be recorded, but in less detail than before.
==7664== Use of uninitialised value of size 4
==7664== at 0x4016004: _dl_sort_maps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400EBD8: _dl_map_object_deps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4003648: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400365C: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4003698: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40036C8: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40037D8: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40113EC: _dl_check_map_versions (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4011408: _dl_check_map_versions (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4011420: _dl_check_map_versions (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4011830: _dl_check_map_versions (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40118A4: _dl_check_map_versions (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4011920: _dl_check_map_versions (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40010B0: init_tls (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40010DC: init_tls (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4012B14: _dl_determine_tlsoffset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012B18: _dl_determine_tlsoffset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012B24: _dl_determine_tlsoffset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012B30: _dl_determine_tlsoffset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012C24: _dl_determine_tlsoffset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4017FF0: malloc (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4012D3C: _dl_allocate_tls_storage (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401BAD4: __udivsi3 (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B560: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B568: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B580: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x401B580: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B588: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B590: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B598: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B59C: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5A8: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5B0: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5B8: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5C0: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x401B5C4: memset (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012D68: _dl_allocate_tls_storage (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x40126D4: allocate_dtv (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40126D4: allocate_dtv (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40126D8: allocate_dtv (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4012D78: _dl_allocate_tls_storage (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4001104: init_tls (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400110C: init_tls (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Syscall param set_tls(addr) contains uninitialised byte(s)
==7664== at 0x4001120: init_tls (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4003B74: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4003B7C: dl_main (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400CB80: _dl_relocate_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400A810: _dl_lookup_symbol_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400A828: _dl_lookup_symbol_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009D84: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4009D58: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009D5C: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4009D90: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009DAC: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009CD4: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009CE0: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009D14: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009F50: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009F60: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009FB8: do_lookup_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009B28: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4009B2C: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009B40: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009B48: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009B58: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009BFC: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4009C00: check_match (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400A8EC: _dl_lookup_symbol_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400A8FC: _dl_lookup_symbol_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400CCF8: _dl_relocate_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400CDAC: _dl_relocate_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400A86C: _dl_lookup_symbol_x (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4010FD8: _dl_name_match_p (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4010FEC: _dl_name_match_p (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4013420: _dl_add_to_slotinfo (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4013440: _dl_add_to_slotinfo (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400D908: _dl_relocate_object (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4012DB8: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012DC0: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012DC8: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012E10: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012E3C: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012E48: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012E7C: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012EA8: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012ECC: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4012F28: _dl_allocate_tls_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x40103D4: _dl_init (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400FA00: _dl_fixup (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x400FA8C: _dl_fixup (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x400FA8C: _dl_fixup (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4015B4C: _dl_runtime_resolve (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
Hello, World!
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x40105D0: _dl_fini (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x4016178: _dl_sort_maps (in /lib/arm-linux-gnueabihf/ld-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x4924824: free (in /lib/arm-linux-gnueabihf/libc-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x49CB050: free_mem (in /lib/arm-linux-gnueabihf/libc-2.28.so)
==7664==
==7664== Conditional jump or move depends on uninitialised value(s)
==7664== at 0x49CB0D0: free_mem (in /lib/arm-linux-gnueabihf/libc-2.28.so)
==7664==
==7664== Use of uninitialised value of size 4
==7664== at 0x49CAF64: free_slotinfo (in /lib/arm-linux-gnueabihf/libc-2.28.so)
==7664==
==7664==
==7664== HEAP SUMMARY:
==7664== in use at exit: 0 bytes in 0 blocks
==7664== total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
==7664==
==7664== All heap blocks were freed -- no leaks are possible
==7664==
==7664== For counts of detected and suppressed errors, rerun with: -v
==7664== Use --track-origins=yes to see where uninitialised values come from
==7664== ERROR SUMMARY: 6181 errors from 198 contexts (suppressed: 97 from 1)
pi@raspberrypi:~ $

Revision history for this message
Jeffrey Walton (noloader) wrote :

Building Valgrind 3.15 from sources and re-running the test results in the expected output:

$ valgrind ./test.exe
==20238== Memcheck, a memory error detector
==20238== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==20238== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==20238== Command: ./test.exe
==20238==
Hello, World!
==20238==
==20238== HEAP SUMMARY:
==20238== in use at exit: 0 bytes in 0 blocks
==20238== total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
==20238==
==20238== All heap blocks were freed -- no leaks are possible
==20238==
==20238== For lists of detected and suppressed errors, rerun with: -s
==20238== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Revision history for this message
Jeffrey Walton (noloader) wrote :

It looks like Valgrind 3.15 has a single suppression file with about 1460 entries:

$ find /usr/local -name '*.sup*'
/usr/local/lib/valgrind/default.supp
$ wc -l /usr/local/lib/valgrind/default.supp
1458 /usr/local/lib/valgrind/default.supp

$ find /usr/ -name '*.sup*'
/usr/lib/valgrind/ncurses.supp
/usr/lib/valgrind/debian.supp
/usr/lib/valgrind/python2.supp
/usr/lib/valgrind/default.supp
/usr/lib/valgrind/python.supp
/usr/lib/valgrind/python3.supp
/usr/lib/valgrind/debian-libc6-dbg.supp
/usr/local/lib/valgrind/default.supp

It also looks like Debian's Valgrind has a similar suppression file:

$ wc -l /usr/lib/valgrind/default.supp
1387 /usr/lib/valgrind/default.supp

It looks like the guess about the missing supression file was wrong. I guess Debian is supplying a buggy Valgrind that needs updating.

Revision history for this message
peter green (plugwash) wrote :

unfortunately upstream valgrind does not support armv6, I found a patch and applied it to get valgrind in raspbian, but I was never able to bring it forward to more recent versions of valgrind. The result is that raspbian is stuck on a very old version of valgrind.

If you know of armv6 patches for a more recent valgrind please tell me about them. Otherwise there isn't much I can do here :(

Revision history for this message
Jeffrey Walton (noloader) wrote :

Thanks @peter.

Maybe the solution is two packages. The first package - "valgrind" - supports ARMv7 and above. The second package - "valgrind-armv4" - supports the lesser clients.

Making the "valgrind" package a ARMv7 package is good engineering because it aligns with the dominant use case. The dominant use case nowadays is ARMv7 and above. ARMv7 was released in 2011.

You can't easily buy ARMv5 or ARMv6 in commodity hardware nowadays. I know this from experience because I tried to purchase a dev-board with ARMv5 or ARMv6 for testing Botan, Crypto++ and OpenSSL. I still don't have one.

Making ARMv5 or ARMv6 users install "valgrind-armv4" is also good engineering. ARMv5 or ARMv6 users are the special case, and those users should have to do something special.

Finally, splitting Valgrind into two packages is good security engineering. Valgrind is a Security Testing and Evaluation (ST&E) tool. Tools like Valgrind (and others like Asan and UBsan) need to be available and properly functioning. ST&E tools support all programs on a distribution. The ST&E tools help make the distribution secure and stable. You don't want to cripple ST&E.

Revision history for this message
Jeffrey Walton (noloader) wrote :

@peter,

> Making the "valgrind" package a ARMv7 package is good engineering
> because it aligns with the dominant use case. The dominant use case
> nowadays is ARMv7 and above. ARMv7 was released in 2011.

My bad. ARMv7 was release in the 1990s. In 2011 it became the most popular ARM architecture.

> Finally, splitting Valgrind into two packages is good security
> engineering. Valgrind is a Security Testing and Evaluation (ST&E)
> tool. Tools like Valgrind (and others like Asan and UBsan) need to
> be available and properly functioning.

By the way, Debian is not onboard with ideas like this. I wrote to the Debian Security Team several years ago. I suggested they classify programs into two groups: security and non-security. Security programs includes ST&E tools like Valgrind. It also includes other warez, like OpenSSL and Apache.

I also suggested security related programs and applications should be maintained to a higher standard, similar to the way the Space Shuttle has safety critical components (learned after the Challenger and Columbia disasters). For example, a package classified as security critical may take a major bump to ensure the effectiveness program or application.

Nothing was done. Effectively Debian decided to supply deficient software rather than striving for excellence.

You can lead some folks to water, but you can't make them drink.

Revision history for this message
Pjfloyd (pjfloyd) wrote :

I'll have a look at the armv6 patches to see if I can get them to apply without breaking anything else.

Otherwise the answer is to build Valgrind from source.

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.