Openwrt does not have lscpu command available (nor in any package).

cat /proc/cpuinfo
processor    : 0
model name    : ARMv7 Processor rev 10 (v7l)
BogoMIPS    : 132.00
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x2
CPU part    : 0xc09
CPU revision    : 10

processor    : 1
model name    : ARMv7 Processor rev 10 (v7l)
BogoMIPS    : 132.00
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x2
CPU part    : 0xc09
CPU revision    : 10

Hardware    : Freescale i.MX6 Quad/DualLite (Device Tree)
Revision    : 0000
Serial        : 0000000000000000

Operating system info:
cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='15.05'
DISTRIB_REVISION='r48153'
DISTRIB_CODENAME='chaos_calmer'
DISTRIB_TARGET='imx6/generic'
DISTRIB_DESCRIPTION='OpenWrt Chaos Calmer 15.05'
DISTRIB_TAINTS='no-all busybox'

cat /proc/version
Linux version 3.18.23 (gcc version 5.3.0 (OpenWrt GCC 5.3.0 r48153) ) #6
SMP Tue Jul 11 16:35:20 CEST 2017

Source code could be downloaded from:
https://uclibc.org/downloads/uClibc-0.9.33.2.tar.bz2

Extracted chunks from trace output can be downloaded from:
https://github.com/KKoovalsky/Valgrind-problems

The file is called vgtrace-shortened.txt. Full trace available in
vgtrace.txt file. In this repo I also included compiled uClibc library.

I am wondering if GCC update could have caused such behavior. I've been
running image compiled with GCC-4.8-Linaro, then I bumped the GCC package
version to use GCC-5.3, run firmware update and then installed valgrind and
other software which was compiled with buildroot which uses GCC-5.3. I will
try to check if this problem is reproducible by flashing from image which
was initially compiled with GCC-5.3.



2017-09-05 18:35 GMT+02:00 John Reiser <jrei...@bitwagon.com>:

> > 1.
> > ==4996== Invalid read of size 4
> > ==4996==    at 0x40054EC: ??? (in /lib/ld-uClibc-0.9.33.2.so <
> http://ld-uClibc-0.9.33.2.so>)
> > ==4996==  Address 0x7dbb6664 is on thread 1's stack
> > ==4996==  20 bytes below stack pointer
>
>> GDB:
>>
>> 1.
>> (gdb) info reg
>> r0             0x4007148    67137864
>> r1             0x0    0
>> r2             0x49ba000    77307904
>> r3             0x49bd90c    77322508
>> r4             0x4015f78    67198840
>> r5             0x4006054    67133524
>> r6             0xa    10
>> r7             0x4006ac0    67136192
>> r8             0x24    36
>> r9             0x401602c    67199020
>> r10            0x7dbb6a48    2109434440
>> r11            0x7dbb6674    2109433460
>> r12            0x7dbb6678    2109433464
>> sp             0x7dbb6678    0x7dbb6678
>> lr             0x40054ec    67130604
>> pc             0x40054ec    0x40054ec
>> cpsr           0x20000010    536870928
>> (gdb) x/9i $pc-4*4
>>     0x40054dc:    beq    0x40054ec
>>     0x40054e0:    ldr    r2, [r7]
>>     0x40054e4:    add    r3, r3, r2
>>     0x40054e8:    blx    r3
>> => 0x40054ec:    mov    r0, r7
>>     0x40054f0:    bl    0x4001440
>>     0x40054f4:    b    0x40054b8
>>     0x40054f8:    ldr    r1, [r6, #88]    ; 0x58
>>     0x40054fc:    sub    sp, sp, #16
>>
>>
> This is strange.  None of the instructions (in any of the four cases)
> that are designated by the address in "at 0x..." is a memory fetch 'ldr'
> which would be necessary to correspond to the complaint "Invalid read of
> size 4".
>
> However, I see that each of the 4 complaints is immediately after a 'blx'
> instruction.
> 'blx' has a history of problems in both hardware and software.
> Exactly what hardware are you running?  Please report the output of
> "lscpu" and "cat /proc/cpuinfo".
> Also, please tell us which Linux distribution, and the exact package name
> of the
> compiled binary package for uClibc, and where anyone can download a copy
> of the package
> (both compiled binary and source code).
>
> Meanwhile, please invoke with these diagnostic flags:
>     valgrind --trace-notbelow=0 --trace-flags=10000000 /bin/true
> 2>vgtrace.txt
>
> The re-directed stderr vgtrace.txt will be an instruction-by-instruction
> trace
> [it will be large, probably about 5 MB or so] where the individual blocks
> look like
> *****  [This example was generated on x86_64.]
> ==== SB 0 (evchecks 0) [tid 1] 0x4000c50 UNKNOWN_FUNCTION /usr/lib64/
> ld-2.24.so+0xc50
>
> ------------------------ Front end ------------------------
>
>         0x4000C50:  movq %rsp,%rdi
>
>               ------ IMark(0x4000C50, 3, 0) ------
>               PUT(72) = GET:I64(48)
>               PUT(184) = 0x4000C53:I64
> *****
> where the "SB 0" is a serial number of the block.   Find the 'blx'
> instruction
> and its enclosing "SB nnnnn".  Then look forward until you find the SB for
> the
> pc that is specified in the complaint from memcheck.  Select the entire
> range of SB
> (from the 'blx' to the complaint) into a file, gzip it, and upload it
> somewhere
> that anyone interested can download it.  The idea is to find out how
> memcheck
> got the address that it is complaining about.
>
>
> --
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Valgrind-users mailing list
> Valgrind-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/valgrind-users
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to