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
This commit is contained in:
Philippe Waroquiers 2016-02-18 21:32:46 +00:00
parent 68dd2dd0b5
commit 76002f0b47
4 changed files with 241 additions and 0 deletions

View File

@ -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

View File

@ -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<typename... T>
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;
}

View File

@ -0,0 +1,2 @@
prog: big_debuginfo_symbol
vgopts: -q