On 13/06/2019 13:06, Vladimir Sementsov-Ogievskiy wrote: > 11.06.2019 21:02, Andrey Shinkevich wrote: >> The Valgrind tool reports about an uninitialised memory usage when the >> initialization is actually not needed. For example, the buffer 'buf' >> instantiated on a stack of the function guess_disk_lchs(). > > for convinience, you may add: "of the function guess_disk_lchs(), which > is then actually initialized by blk_pread_unthrottled()" > >> Let's use the Valgrind technology to suppress the unwanted reports by >> adding the Valgrind specific format file valgrind.supp to the QEMU >> project. The file content is extendable for future needs. >> >> Signed-off-by: Andrey Shinkevich <andrey.shinkev...@virtuozzo.com> >> --- >> tests/qemu-iotests/common.rc | 5 ++++- >> tests/qemu-iotests/valgrind.supp | 31 +++++++++++++++++++++++++++++++ >> 2 files changed, 35 insertions(+), 1 deletion(-) >> create mode 100644 tests/qemu-iotests/valgrind.supp >> >> diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc >> index 3caaca4..9b74890 100644 >> --- a/tests/qemu-iotests/common.rc >> +++ b/tests/qemu-iotests/common.rc >> @@ -17,6 +17,8 @@ >> # along with this program. If not, see <http://www.gnu.org/licenses/>. >> # >> >> +readonly VALGRIND_SUPPRESS_ERRORS=./valgrind.supp > > Why readonly? > > I think it should be defined near and in same manner as VALGRIND_LOGFILE, > with use of TEST_DIR >
The new file 'valgrind.supp' is intended to be a part of the QEMU project. So, it will be located in the test directory tests/qemu-iotests. The variable TEST_DIR may change the working directory. In that case, moving the project file will be a hassle. Andrey >> + >> SED= >> for sed in sed gsed; do >> ($sed --version | grep 'GNU sed') > /dev/null 2>&1 >> @@ -65,7 +67,8 @@ _qemu_proc_wrapper() >> local VALGRIND_LOGFILE="$1" >> shift >> if [ "${VALGRIND_QEMU}" == "y" ]; then >> - exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 >> "$@" >> + exec valgrind --log-file="${VALGRIND_LOGFILE}" --error-exitcode=99 \ >> + --suppressions="${VALGRIND_SUPPRESS_ERRORS}" "$@" >> else >> exec "$@" >> fi >> diff --git a/tests/qemu-iotests/valgrind.supp >> b/tests/qemu-iotests/valgrind.supp >> new file mode 100644 >> index 0000000..78215b6 >> --- /dev/null >> +++ b/tests/qemu-iotests/valgrind.supp >> @@ -0,0 +1,31 @@ >> +# >> +# Valgrind errors suppression file for QEMU iotests >> +# >> +# Copyright (c) 2019 Virtuozzo International GmbH >> +# >> +# This program is free software; you can redistribute it and/or modify >> +# it under the terms of the GNU General Public License as published by >> +# the Free Software Foundation; either version 2 of the License, or >> +# (at your option) any later version. >> +# >> +# This program is distributed in the hope that it will be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program. If not, see <http://www.gnu.org/licenses/>. >> +# >> +{ >> + hw/block/hd-geometry.c >> + Memcheck:Cond >> + fun:guess_disk_lchs >> + fun:hd_geometry_guess >> + fun:blkconf_geometry >> + ... >> + fun:device_set_realized >> + fun:property_set_bool >> + fun:object_property_set >> + fun:object_property_set_qobject >> + fun:object_property_set_bool >> +} >> > > -- With the best regards, Andrey Shinkevich