-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2.10.80: test suite is failing #1413
Comments
Thanks. Can you please attach your config.log ? Couple notable things here. First symbolization didn't work (which could have helped understand why it actually detected false-positive leak), and second actual false-positive leak but only in one specific stl vector case. So really curious. |
Here is autconf output grabbed from archived build log from my build infra + cd gperftools-gperftools-2.10.80
+ autoreconf -fiv
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I m4
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:59: installing './compile'
configure.ac:22: installing './config.guess'
configure.ac:22: installing './config.sub'
configure.ac:23: installing './install-sh'
configure.ac:23: installing './missing'
Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
autoreconf: Leaving directory '.'
+ ASMFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none'
+ CFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none'
+ CXXFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none'
+ FFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -I/usr/lib64/gfortran/modules'
+ FCFLAGS='-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -I/usr/lib64/gfortran/modules'
+ LDFLAGS='-Wl,--gc-sections -Wl,--as-needed -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--build-id=sha1'
+ RUSTFLAGS='-C codegen-units=1 -C debuginfo=2 -C opt-level=2 -C link-arg=-fdata-sections -C link-arg=-ffunction-sections -C link-arg=-Wl,--as-needed -C link-arg=-Wl,-z,now -C link-arg=-Wl,-z,relro --cap-lints=warn'
+ VALAFLAGS=-g
+ CC=/usr/bin/gcc
+ CXX=/usr/bin/g++
+ FC=/usr/bin/gfortran
+ AR=/usr/bin/gcc-ar
+ NM=/usr/bin/gcc-nm
+ RANLIB=/usr/bin/gcc-ranlib
+ export ASMFLAGS CFLAGS CXXFLAGS FFLAGS FCFLAGS LDFLAGS VALAFLAGS CC CXX FC AR NM RANLIB RUSTFLAGS VALAFLAGS
+ ./configure --bindir=/usr/bin --build=x86_64-redhat-linux-gnu --datadir=/usr/share --disable-dependency-tracking --exec-prefix=/usr --host=x86_64-redhat-linux-gnu --includedir=/usr/include --infodir=/usr/share/info --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --mandir=/usr/share/man --prefix=/usr --program-prefix= --runstatedir=/run --sbindir=/usr/sbin --sharedstatedir=/var/lib --sysconfdir=/etc --disable-dynamic-sized-delete-support --disable-static
checking build system type... x86_64-redhat-linux-gnu
checking host system type... x86_64-redhat-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether make supports the include directive... yes (GNU style)
checking for x86_64-redhat-linux-gnu-gcc... /usr/bin/gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether /usr/bin/gcc accepts -g... yes
checking for /usr/bin/gcc option to enable C11 features... none needed
checking whether /usr/bin/gcc understands -c and -o together... yes
checking dependency style of /usr/bin/gcc... none
checking clone() support... yes
checking whether the compiler supports GNU C++... yes
checking whether /usr/bin/g++ accepts -g... yes
checking for /usr/bin/g++ option to enable C++11 features... none needed
checking dependency style of /usr/bin/g++... none
checking whether /usr/bin/g++ supports C++11 features with -std=gnu++11... yes
checking for x86_64-redhat-linux-gnu-objcopy... no
checking for objcopy... objcopy
checking if objcopy supports -W... yes
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by /usr/bin/gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/gcc-nm
checking the name lister (/usr/bin/gcc-nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-redhat-linux-gnu file names to x86_64-redhat-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-redhat-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for x86_64-redhat-linux-gnu-file... no
checking for file... file
checking for x86_64-redhat-linux-gnu-objdump... no
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for x86_64-redhat-linux-gnu-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for x86_64-redhat-linux-gnu-ar... /usr/bin/gcc-ar
checking for archiver @FILE support... @
checking for x86_64-redhat-linux-gnu-strip... no
checking for strip... strip
checking for x86_64-redhat-linux-gnu-ranlib... /usr/bin/gcc-ranlib
checking command to parse /usr/bin/gcc-nm output from /usr/bin/gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for x86_64-redhat-linux-gnu-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if /usr/bin/gcc supports -fno-rtti -fno-exceptions... no
checking for /usr/bin/gcc option to produce PIC... -fPIC -DPIC
checking if /usr/bin/gcc PIC flag -fPIC -DPIC works... yes
checking if /usr/bin/gcc static flag -static works... no
checking if /usr/bin/gcc supports -c -o file.o... yes
checking if /usr/bin/gcc supports -c -o file.o... (cached) yes
checking whether the /usr/bin/gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking how to run the C++ preprocessor... /usr/bin/g++ -std=gnu++11 -E
checking for ld used by /usr/bin/g++ -std=gnu++11... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the /usr/bin/g++ -std=gnu++11 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for /usr/bin/g++ -std=gnu++11 option to produce PIC... -fPIC -DPIC
checking if /usr/bin/g++ -std=gnu++11 PIC flag -fPIC -DPIC works... yes
checking if /usr/bin/g++ -std=gnu++11 static flag -static works... no
checking if /usr/bin/g++ -std=gnu++11 supports -c -o file.o... yes
checking if /usr/bin/g++ -std=gnu++11 supports -c -o file.o... (cached) yes
checking whether the /usr/bin/g++ -std=gnu++11 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking compiler and target supports -fno-omit-frame-pointer -momit-leaf-frame-pointer... yes
checking for __attribute__... yes
checking for __attribute__((aligned(N))) on functions... yes
checking for struct mallinfo... yes
checking for Elf32_Versym... yes
checking for sbrk... yes
checking for __sbrk... yes
checking for geteuid... yes
checking for fork... yes
checking for features.h... yes
checking for malloc.h... yes
checking for glob.h... yes
checking for execinfo.h... yes
checking for unwind.h... yes
checking for sched.h... yes
checking for sys/syscall.h... yes
checking for sys/socket.h... yes
checking for sys/wait.h... yes
checking for poll.h... yes
checking for fcntl.h... yes
checking for grp.h... yes
checking for pwd.h... yes
checking for sys/resource.h... yes
checking for sys/cdefs.h... yes
checking for /usr/bin/g++ -std=gnu++11 options needed to detect all undeclared functions... none needed
checking whether cfree is declared... no
checking whether posix_memalign is declared... yes
checking whether memalign is declared... yes
checking whether valloc is declared... yes
checking whether pvalloc is declared... yes
checking for ucontext.h... yes
checking for sys/ucontext.h... yes
checking for cygwin/signal.h... no
checking for asm/ptrace.h... yes
checking how to access the program counter from a struct ucontext... uc_mcontext.gregs[REG_RIP]
checking for libunwind.h... yes
checking for backtrace in -lunwind... yes
checking if the compiler supports -Wno-unused-result... yes
configure: Will build sized deallocation operators that ignore size
checking if C++ compiler supports -fsized-deallocation... yes
checking if C++ compiler supports std::align_val_t without options... no
checking if C++ compiler supports -faligned-new... yes
configure: Will build new/delete operators for overaligned types
checking if target has _Unwind_Backtrace... yes
checking for __environ... yes
checking for __thread... yes
checking if nanosleep requires any libraries... no
checking how to run the C preprocessor... /usr/bin/gcc -E
checking whether /usr/bin/gcc is Clang... no
checking whether pthreads work with "-pthread" and "-lpthread"... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for program_invocation_name... yes
checking whether backtrace_symbols is declared... yes
checking for library containing backtrace_symbols... none required
checking for Linux SIGEV_THREAD_ID... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/gperftools/tcmalloc.h
config.status: creating src/windows/gperftools/tcmalloc.h
config.status: creating src/config.h
config.status: executing depfiles commands
config.status: executing libtool commands |
Interesting. A ton of flags etc. What is inside those /usr/lib/redhat specs things? (annobin and hardened something) |
BTW you sure you want to cripple performance with -mno-omit-leaf-frame-pointer? |
All [tkloczko@pers-jacek SPECS]$ cat /usr/lib/rpm/redhat/redhat-hardened-cc1
*cc1_options:
+ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
*cpp_options:
+ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
[tkloczko@pers-jacek SPECS]$ cat /usr/lib/rpm/redhat/redhat-hardened-ld
*self_spec:
+ %{!static:%{!shared:%{!r:-pie}}} So everything is compiled (by default as PIE code. |
Sadly issue is that if code is compiled without frame-pointer it is impossible to catch call traces. |
So at least this set of flags (assuming specs stuff is no-op compared to my OS) works on my box. So not something "inherently" broken, hopefully. On the other hand, debugging your case might end up harder since I am not able to reproduce easily. In order to debug we need your machine to have symbolization working. Do you have perl available on your builder? If not that is likely why symbolization didn't work. So please install it. Then we'll see what kind of "leaks" we're detecting and hopefully that'll hint what is going on. |
Perl is present because it is used by autoconf and libtool. |
then we'll need to figure out why symbolization fails so badly on your box, and in this test. Notably, a number of tests actually require symbolization to work and they pass. So it is not 100% failing. Can you check if this is consistently failing exactly this one test? Or is it some sort of randomization thingy. Would be useful signal. |
Just tested 2.15 and test suite still fail
Could you please tell what exactly you want to me to do? 🤔 |
Is there any way for me to get VM or something that matches your build environment? This is not just "latest fedora" or something ? I am out of any other ideas. |
So, just got myself fresh fedora39 VM and everything just works (as expected). |
Could you please show what exactly you've done? 🤔 |
I got iso from webside. Booted and installed it inside virt-manager managed KVM instance. Then installed regular dev tools and libunwind-devel. Git cloned this repo. Then did regular ./autogen.sh && ./configure && make -j check I realize that your setup is adding some more flags and maybe doing more customizations. But at least verifying that baseline config simply works (as expected) is valuable too. |
gentle ping. I am currently spending lots of time on gperftools, so you have best chance of helping me to help you. |
and I am genuinely curious what is going on there and eager to get it fixed. |
Other way: what I can try to do to diagnose that issue? 🤔 |
Sure, you have all the source and everything to just go ahead is figure it out yourself. I don't think our back and forth, trying to debug whatever not entirely standard environment that you have has much chance of success. Give me something, I am eager to get this fixed. |
Here is one idea. I am not sure how it could happen, but do check if failing test binaries have debug symbols. objump -t will tell you. |
The text was updated successfully, but these errors were encountered: