From: Philippe Waroquiers Date: Thu, 18 Feb 2016 21:32:46 +0000 (+0000) Subject: Add a test for bug 359133 Assertion 'eltSzB <= ddpa->poolSzB' failed X-Git-Tag: svn/VALGRIND_3_12_0~224 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76002f0b472659d33ca4c9383e5f8896768be8a9;p=thirdparty%2Fvalgrind.git Add a test for bug 359133 Assertion 'eltSzB <= ddpa->poolSzB' failed Test case provided by David Hallas git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15799 --- diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 9bae1bef7e..542a4d573d 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -107,6 +107,7 @@ EXTRA_DIST = \ custom-overlap.stderr.exp custom-overlap.vgtest \ deep-backtrace.vgtest deep-backtrace.stderr.exp \ demangle.stderr.exp demangle.vgtest \ + big_debuginfo_symbol.stderr.exp big_debuginfo_symbol.vgtest \ describe-block.stderr.exp describe-block.vgtest \ descr_belowsp.vgtest descr_belowsp.stderr.exp \ doublefree.stderr.exp doublefree.vgtest \ @@ -326,6 +327,7 @@ check_PROGRAMS = \ custom_alloc \ custom-overlap \ demangle \ + big_debuginfo_symbol \ deep-backtrace \ describe-block \ doublefree error_counts errs1 exitprog execve1 execve2 erringfds \ @@ -426,6 +428,9 @@ leak_cpp_interior_SOURCES = leak_cpp_interior.cpp demangle_SOURCES = demangle.cpp +big_debuginfo_symbol_SOURCES = big_debuginfo_symbol.cpp +big_debuginfo_symbol__CXXFLAGS = $(AM_CXXFLAGS) -std=c++11 + bug340392_CFLAGS = $(AM_CFLAGS) -O3 dw4_CFLAGS = $(AM_CFLAGS) -gdwarf-4 -fdebug-types-section diff --git a/memcheck/tests/big_debuginfo_symbol.cpp b/memcheck/tests/big_debuginfo_symbol.cpp new file mode 100644 index 0000000000..7d9a9d4051 --- /dev/null +++ b/memcheck/tests/big_debuginfo_symbol.cpp @@ -0,0 +1,234 @@ +// Written by David Hallas to trigger this bug in Valgrind: +// https://bugs.kde.org/show_bug.cgi?id=359133 + +#define CONCAT2(x, y) x##y +#define CONCAT(x, y) CONCAT2(x, y) + +#define AllLetters ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ +#define TemplateName(name) CONCAT(AllLetters, name) +#define TemplateDef(name) class TemplateName(name) {}; + +TemplateDef(1) +TemplateDef(2) +TemplateDef(3) +TemplateDef(4) +TemplateDef(5) +TemplateDef(6) +TemplateDef(7) +TemplateDef(8) +TemplateDef(9) +TemplateDef(10) +TemplateDef(11) +TemplateDef(12) +TemplateDef(13) +TemplateDef(14) +TemplateDef(15) +TemplateDef(16) +TemplateDef(17) +TemplateDef(18) +TemplateDef(19) +TemplateDef(20) +TemplateDef(21) +TemplateDef(22) +TemplateDef(23) +TemplateDef(24) +TemplateDef(25) +TemplateDef(26) +TemplateDef(27) +TemplateDef(28) +TemplateDef(29) +TemplateDef(30) +TemplateDef(31) +TemplateDef(32) +TemplateDef(33) +TemplateDef(34) +TemplateDef(35) +TemplateDef(36) +TemplateDef(37) +TemplateDef(38) +TemplateDef(39) +TemplateDef(40) +TemplateDef(41) +TemplateDef(42) +TemplateDef(43) +TemplateDef(44) +TemplateDef(45) +TemplateDef(46) +TemplateDef(47) +TemplateDef(48) +TemplateDef(49) +TemplateDef(50) + +class MyTemplate { +public: + template + void foo(); +}; + +template<> +void MyTemplate::foo< + TemplateName(1), + TemplateName(2), + TemplateName(3), + TemplateName(4), + TemplateName(5), + TemplateName(6), + TemplateName(7), + TemplateName(8), + TemplateName(9), + TemplateName(10), + TemplateName(11), + TemplateName(12), + TemplateName(13), + TemplateName(14), + TemplateName(15), + TemplateName(16), + TemplateName(17), + TemplateName(18), + TemplateName(19), + TemplateName(20), + TemplateName(21), + TemplateName(22), + TemplateName(23), + TemplateName(24), + TemplateName(25), + TemplateName(26), + TemplateName(27), + TemplateName(28), + TemplateName(29), + TemplateName(30), + TemplateName(31), + TemplateName(32), + TemplateName(33), + TemplateName(34), + TemplateName(35), + TemplateName(36), + TemplateName(37), + TemplateName(38), + TemplateName(39), + TemplateName(40), + TemplateName(41), + TemplateName(42), + TemplateName(43), + TemplateName(44), + TemplateName(45), + TemplateName(46), + TemplateName(47), + TemplateName(48), + TemplateName(49), + TemplateName(50) +>(); + +template<> +void MyTemplate::foo< + TemplateName(1), + TemplateName(2), + TemplateName(3), + TemplateName(4), + TemplateName(5), + TemplateName(6), + TemplateName(7), + TemplateName(8), + TemplateName(9), + TemplateName(10), + TemplateName(11), + TemplateName(12), + TemplateName(13), + TemplateName(14), + TemplateName(15), + TemplateName(16), + TemplateName(17), + TemplateName(18), + TemplateName(19), + TemplateName(20), + TemplateName(21), + TemplateName(22), + TemplateName(23), + TemplateName(24), + TemplateName(25), + TemplateName(26), + TemplateName(27), + TemplateName(28), + TemplateName(29), + TemplateName(30), + TemplateName(31), + TemplateName(32), + TemplateName(33), + TemplateName(34), + TemplateName(35), + TemplateName(36), + TemplateName(37), + TemplateName(38), + TemplateName(39), + TemplateName(40), + TemplateName(41), + TemplateName(42), + TemplateName(43), + TemplateName(44), + TemplateName(45), + TemplateName(46), + TemplateName(47), + TemplateName(48), + TemplateName(49), + TemplateName(50) +>() +{ +} + +int main(int argc, char* argv[]) +{ + MyTemplate instance; + instance.foo< + TemplateName(1), + TemplateName(2), + TemplateName(3), + TemplateName(4), + TemplateName(5), + TemplateName(6), + TemplateName(7), + TemplateName(8), + TemplateName(9), + TemplateName(10), + TemplateName(11), + TemplateName(12), + TemplateName(13), + TemplateName(14), + TemplateName(15), + TemplateName(16), + TemplateName(17), + TemplateName(18), + TemplateName(19), + TemplateName(20), + TemplateName(21), + TemplateName(22), + TemplateName(23), + TemplateName(24), + TemplateName(25), + TemplateName(26), + TemplateName(27), + TemplateName(28), + TemplateName(29), + TemplateName(30), + TemplateName(31), + TemplateName(32), + TemplateName(33), + TemplateName(34), + TemplateName(35), + TemplateName(36), + TemplateName(37), + TemplateName(38), + TemplateName(39), + TemplateName(40), + TemplateName(41), + TemplateName(42), + TemplateName(43), + TemplateName(44), + TemplateName(45), + TemplateName(46), + TemplateName(47), + TemplateName(48), + TemplateName(49), + TemplateName(50) + >(); + return 0; +} diff --git a/memcheck/tests/big_debuginfo_symbol.stderr.exp b/memcheck/tests/big_debuginfo_symbol.stderr.exp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/memcheck/tests/big_debuginfo_symbol.vgtest b/memcheck/tests/big_debuginfo_symbol.vgtest new file mode 100644 index 0000000000..6b5faa8ecb --- /dev/null +++ b/memcheck/tests/big_debuginfo_symbol.vgtest @@ -0,0 +1,2 @@ +prog: big_debuginfo_symbol +vgopts: -q