From d248a4830770160cc7062f32ec91933804fe401a Mon Sep 17 00:00:00 2001 From: Paul Floyd Date: Sun, 5 Nov 2023 13:35:01 +0100 Subject: [PATCH] Bug 476535 - Difference in allocation size for massif/tests/overloaded-new between clang++/libc++ and g++/libstdc++ In the end all I could do was filter the results. libc++ and libstdc++ allocate different sizes of stuff for their own usr. That means that when we get to allocating aligned blocks there is some slop (up to the alignment size) that gets counted. And the amount of that slop depends on the prior (internal) allocations. --- NEWS | 1 + massif/tests/Makefile.am | 3 +- massif/tests/filter_new_aligned | 28 +++++++ massif/tests/overloaded-new.post.exp | 48 ++++++------ .../tests/overloaded-new.post.exp-libstdc++ | 75 ------------------- massif/tests/overloaded-new.vgtest | 2 +- 6 files changed, 55 insertions(+), 102 deletions(-) create mode 100755 massif/tests/filter_new_aligned delete mode 100644 massif/tests/overloaded-new.post.exp-libstdc++ diff --git a/NEWS b/NEWS index e8c28439b4..d861150bf6 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,7 @@ than mailing the developers (or mailing lists) directly -- bugs that are not entered into bugzilla tend to get forgotten about or ignored. 476320 Build failure with GCC +476535 Difference in allocation size for massif/tests/overloaded-new between clang++/libc++ and g++/libstdc++ To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/massif/tests/Makefile.am b/massif/tests/Makefile.am index 8d899d172b..e4a21a4218 100644 --- a/massif/tests/Makefile.am +++ b/massif/tests/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/Makefile.tool-tests.am -dist_noinst_SCRIPTS = filter_stderr filter_verbose +dist_noinst_SCRIPTS = filter_stderr filter_verbose filer_new_aligned EXTRA_DIST = \ alloc-fns-A.post.exp alloc-fns-A.stderr.exp alloc-fns-A.vgtest \ @@ -33,7 +33,6 @@ EXTRA_DIST = \ null.post.exp null.stderr.exp null.vgtest \ one.post.exp one.post.exp2 one.stderr.exp one.vgtest \ overloaded-new.post.exp overloaded-new.post.exp-mips32 \ - overloaded-new.post.exp-libstdc++ \ overloaded-new.stderr.exp overloaded-new.vgtest \ pages_as_heap.stderr.exp pages_as_heap.vgtest \ peak.post.exp peak.stderr.exp peak.vgtest \ diff --git a/massif/tests/filter_new_aligned b/massif/tests/filter_new_aligned new file mode 100755 index 0000000000..c542c4124f --- /dev/null +++ b/massif/tests/filter_new_aligned @@ -0,0 +1,28 @@ +#! /bin/sh + +../../tests/filter_addresses | + +sed 's/98\.[0-9][0-9]\^/98.XX^/' | +sed 's/0 19[0-9].[0-9]/0 19X.X/' | +awk '/ 5 .* 16,000 /{print " 5 16,XXX 16,XXX 16,000 XXX 0";next}{print}' | +awk '/ 6 .* 56,000 /{print " 6 56,XXX 56,XXX 56,000 XXX 0";next}{print}' | +awk '/ 7 .* 60,000 /{print " 7 60,XXX 60,XXX 60,000 XXX 0";next}{print}' | +awk '/ 8 .* 100,000 /{print " 8 100,XXX 100,XXX 100,000 XXX 0";next}{print}' | +awk '/ 9 .* 100,000 /{print " 9 100,XXX 100,XXX 100,000 XXX 0";next}{print}' | +awk '/ 10 .* 96,000 /{print " 10 104,XXX 96,XXX 96,000 XXX 0";next}{print}' | +awk '/ 11 .* 92,000 /{print " 11 108,XXX 92,XXX 92,000 XXX 0";next}{print}' | +awk '/ 12 .* 90,000 /{print " 12 110,XXX 90,XXX 90,000 XXX 0";next}{print}' | +awk '/ 13 .* 88,000 /{print " 13 112,XXX 88,XXX 88,000 XXX 0";next}{print}' | +awk '/ 14 .* 84,000 /{print " 14 116,XXX 84,XXX 84,000 XXX 0";next}{print}' | +awk '/ 15 .* 44,000 /{print " 15 157,XXX 44,XXX 44,000 XXX 0";next}{print}' | +awk '/ 16 .* 40,000 /{print " 16 161,XXX 40,XXX 40,000 XXX 0";next}{print}' | +awk '/ 17 .* 0 /{print " 17 201,XXX 0 0 0 0";next}{print}' | +sed 's/^99\.[0-9][0-9]%/99.XX%/' | +sed 's/^->39\.[0-9][0-9]%/->39.XX%/' | +sed 's/^->03\.[0-9][0-9]%/->03.XX%/' | +sed 's/^->01\.[0-9][0-9]%/->01.XX%/' + + + + + diff --git a/massif/tests/overloaded-new.post.exp b/massif/tests/overloaded-new.post.exp index 264ba59da9..eb741e7464 100644 --- a/massif/tests/overloaded-new.post.exp +++ b/massif/tests/overloaded-new.post.exp @@ -6,7 +6,7 @@ ms_print arguments: massif.out KB -98.28^ # +98.XX^ # | #: | #::: | #:::: @@ -27,7 +27,7 @@ ms_print arguments: massif.out | :: :: #::::: :: | :::: :: #::::: :: 0 +----------------------------------------------------------------------->KB - 0 196.6 + 0 19X.X Number of snapshots: 18 Detailed snapshots: [9 (peak)] @@ -40,36 +40,36 @@ Number of snapshots: 18 2 8,016 8,016 8,000 16 0 3 10,024 10,024 10,000 24 0 4 12,032 12,032 12,000 32 0 - 5 16,216 16,216 16,000 216 0 - 6 56,368 56,368 56,000 368 0 - 7 60,392 60,392 60,000 392 0 - 8 100,640 100,640 100,000 640 0 - 9 100,640 100,640 100,000 640 0 -99.36% (100,000B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. -->39.75% (40,000B) 0x........: main (overloaded-new.cpp:84) + 5 16,XXX 16,XXX 16,000 XXX 0 + 6 56,XXX 56,XXX 56,000 XXX 0 + 7 60,XXX 60,XXX 60,000 XXX 0 + 8 100,XXX 100,XXX 100,000 XXX 0 + 9 100,XXX 100,XXX 100,000 XXX 0 +99.XX% (100,000B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. +->39.XX% (40,000B) 0x........: main (overloaded-new.cpp:84) | -->39.75% (40,000B) 0x........: main (overloaded-new.cpp:87) +->39.XX% (40,000B) 0x........: main (overloaded-new.cpp:87) | -->03.97% (4,000B) 0x........: main (overloaded-new.cpp:79) +->03.XX% (4,000B) 0x........: main (overloaded-new.cpp:79) | -->03.97% (4,000B) 0x........: main (overloaded-new.cpp:80) +->03.XX% (4,000B) 0x........: main (overloaded-new.cpp:80) | -->03.97% (4,000B) 0x........: main (overloaded-new.cpp:83) +->03.XX% (4,000B) 0x........: main (overloaded-new.cpp:83) | -->03.97% (4,000B) 0x........: main (overloaded-new.cpp:86) +->03.XX% (4,000B) 0x........: main (overloaded-new.cpp:86) | -->01.99% (2,000B) 0x........: main (overloaded-new.cpp:81) +->01.XX% (2,000B) 0x........: main (overloaded-new.cpp:81) | -->01.99% (2,000B) 0x........: main (overloaded-new.cpp:82) +->01.XX% (2,000B) 0x........: main (overloaded-new.cpp:82) -------------------------------------------------------------------------------- n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B) -------------------------------------------------------------------------------- - 10 104,648 96,632 96,000 632 0 - 11 108,656 92,624 92,000 624 0 - 12 110,664 90,616 90,000 616 0 - 13 112,672 88,608 88,000 608 0 - 14 116,856 84,424 84,000 424 0 - 15 157,008 44,272 44,000 272 0 - 16 161,032 40,248 40,000 248 0 - 17 201,280 0 0 0 0 + 10 104,XXX 96,XXX 96,000 XXX 0 + 11 108,XXX 92,XXX 92,000 XXX 0 + 12 110,XXX 90,XXX 90,000 XXX 0 + 13 112,XXX 88,XXX 88,000 XXX 0 + 14 116,XXX 84,XXX 84,000 XXX 0 + 15 157,XXX 44,XXX 44,000 XXX 0 + 16 161,XXX 40,XXX 40,000 XXX 0 + 17 201,XXX 0 0 0 0 diff --git a/massif/tests/overloaded-new.post.exp-libstdc++ b/massif/tests/overloaded-new.post.exp-libstdc++ deleted file mode 100644 index db66bee49e..0000000000 --- a/massif/tests/overloaded-new.post.exp-libstdc++ +++ /dev/null @@ -1,75 +0,0 @@ --------------------------------------------------------------------------------- -Command: ./overloaded-new -Massif arguments: --stacks=no --time-unit=B --massif-out-file=massif.out --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook --ignore-fn=get_or_create_key_element --ignore-fn=_GLOBAL__sub_I_eh_alloc.cc --ignore-fn=call_init.part.0 --ignore-fn=call_init --ignore-fn=pool -ms_print arguments: massif.out --------------------------------------------------------------------------------- - - - KB -98.16^ # - | #: - | #::: - | #:::: - | #::::::::::::::::::: - | #::::: - | #::::: - | #::::: - | :::::::::::::::#::::: - | :: #::::: - | :: #::::: - | :: #::::: - | :: #::::: : - | :: #::::: ::::::::::::::: - | :: #::::: :: - | :: #::::: :: - | :: #::::: :: - | ::::::::::::::::: #::::: :: - | :: :: #::::: :: - | :::: :: #::::: :: - 0 +----------------------------------------------------------------------->KB - 0 196.3 - -Number of snapshots: 18 - Detailed snapshots: [9 (peak)] - --------------------------------------------------------------------------------- - n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B) --------------------------------------------------------------------------------- - 0 0 0 0 0 0 - 1 4,008 4,008 4,000 8 0 - 2 8,016 8,016 8,000 16 0 - 3 10,024 10,024 10,000 24 0 - 4 12,032 12,032 12,000 32 0 - 5 16,248 16,248 16,000 248 0 - 6 56,432 56,432 56,000 432 0 - 7 60,488 60,488 60,000 488 0 - 8 100,512 100,512 100,000 512 0 - 9 100,512 100,512 100,000 512 0 -99.49% (100,000B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. -->39.80% (40,000B) 0x........: main (overloaded-new.cpp:84) -| -->39.80% (40,000B) 0x........: main (overloaded-new.cpp:87) -| -->03.98% (4,000B) 0x........: main (overloaded-new.cpp:79) -| -->03.98% (4,000B) 0x........: main (overloaded-new.cpp:80) -| -->03.98% (4,000B) 0x........: main (overloaded-new.cpp:83) -| -->03.98% (4,000B) 0x........: main (overloaded-new.cpp:86) -| -->01.99% (2,000B) 0x........: main (overloaded-new.cpp:81) -| -->01.99% (2,000B) 0x........: main (overloaded-new.cpp:82) - --------------------------------------------------------------------------------- - n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B) --------------------------------------------------------------------------------- - 10 104,520 96,504 96,000 504 0 - 11 108,528 92,496 92,000 496 0 - 12 110,536 90,488 90,000 488 0 - 13 112,544 88,480 88,000 480 0 - 14 116,760 84,264 84,000 264 0 - 15 156,944 44,080 44,000 80 0 - 16 161,000 40,024 40,000 24 0 - 17 201,024 0 0 0 0 diff --git a/massif/tests/overloaded-new.vgtest b/massif/tests/overloaded-new.vgtest index 2a61ff8b7a..31f47bb601 100644 --- a/massif/tests/overloaded-new.vgtest +++ b/massif/tests/overloaded-new.vgtest @@ -3,5 +3,5 @@ vgopts: --stacks=no --time-unit=B --massif-out-file=massif.out vgopts: --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook vgopts: --ignore-fn=get_or_create_key_element --ignore-fn=_GLOBAL__sub_I_eh_alloc.cc --ignore-fn=call_init.part.0 vgopts: --ignore-fn=call_init --ignore-fn=pool -post: perl ../../massif/ms_print massif.out | sed 's/gcc[0-9]*/gcc/' | ../../tests/filter_addresses +post: perl ../../massif/ms_print massif.out | sed 's/gcc[0-9]*/gcc/' | ./filter_new_aligned cleanup: rm massif.out -- 2.47.3