https://bugs.kde.org/show_bug.cgi?id=400099
Bug ID: 400099
Summary: Memcheck produces truncated backtrace when len(argv +
env) = 4096
Product: valgrind
Version: unspecified
Platform: unspecified
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: memcheck
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Created attachment 115798
--> https://bugs.kde.org/attachment.cgi?id=115798&action=edit
Valgrind result with '-v'
SUMMARY
It looks like memcheck could produce truncated backtrace when "stacksize" in
coregrind/m_initimg/initimg-linux.c:setup_client_stack becomes equal to 4096.
STEPS TO REPRODUCE
1. docker run -it --rm i386/centos:centos7 linux32
2. yum install vim gcc git make automake autoconf gcc-objc libobjc
3. build and install valgrind with patch (see ADDITIONAL INFORMATION)
4. cd /root
5. echo '
void foo(void *f)
{
int bar(void) { return f == (void *)0; }
void *ff = bar; (void)ff;
}' > lib.c
6. gcc -shared -fPIC lib.c -ggdb3 -o libxxx.so
7. echo 'int main(void) { return 0; }' > xxx.c
8. gcc -ggdb3 -o binary xxx.c -lobjc -L. -lxxx
9. LD_LIBRARY_PATH=. /usr/local/bin/valgrind --leak-check=full ./binary `perl
-e '@o = map { "a" x 200 } (1 .. int($ARGV[0]/200)); push @o, "b" x ($ARGV[0] %
200); print "@o"' 1924`
OBSERVED RESULT
stringsize=3808 auxsize=168 stacksize=4096 maxsize=0x800000
clstack_start 0xFED9C000
clstack_end 0xFED9DFFF
....
==12870== 16 bytes in 2 blocks are definitely lost in loss record 4 of 11
==12870== at 0x402B4C8: malloc (vg_replace_malloc.c:299)
EXPECTED RESULT
...
==16059== 8 bytes in 1 blocks are definitely lost in loss record 5 of 48
==16059== at 0x402B4C8: malloc (vg_replace_malloc.c:299)
==16059== by 0x404829A: objc_malloc (in /usr/lib/libobjc.so.4.0.0)
==16059== by 0x4046EEE: ??? (in /usr/lib/libobjc.so.4.0.0)
==16059== by 0x404710F: ??? (in /usr/lib/libobjc.so.4.0.0)
==16059== by 0x404789E: __objc_exec_class (in /usr/lib/libobjc.so.4.0.0)
==16059== by 0x404125C: ??? (in /usr/lib/libobjc.so.4.0.0)
==16059== by 0x401020D: _dl_init (in /usr/lib/ld-2.17.so)
==16059== by 0x400104E: ??? (in /usr/lib/ld-2.17.so)
ADDITIONAL INFORMATION
# docker, because I can reproduce it only on centos.i386 with packages:
rpm -qa | grep gcc
libgcc-4.8.5-28.el7_5.1.i686
gcc-4.8.5-28.el7_5.1.i686
gcc-objc-4.8.5-28.el7_5.1.i686
Valgrind built from master (d00dd9c2dd3f2e623f4db48d66d3b54b858842dd) with
patch:
diff --git a/coregrind/m_initimg/initimg-linux.c
b/coregrind/m_initimg/initimg-linux.c
index 61cc458..78e3fc5 100644
--- a/coregrind/m_initimg/initimg-linux.c
+++ b/coregrind/m_initimg/initimg-linux.c
@@ -492,7 +492,7 @@ Addr setup_client_stack( void* init_sp,
/* The max stack size */
clstack_max_size = VG_PGROUNDUP(clstack_max_size);
- if (0)
+ if (1)
VG_(printf)("stringsize=%u auxsize=%u stacksize=%u maxsize=0x%lx\n"
"clstack_start %p\n"
"clstack_end %p\n",
--
You are receiving this mail because:
You are watching all bug changes.