diff options
author | Darius Davis <darius@vmware.com> | 2018-04-04 09:06:20 +1000 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-04-05 07:34:01 +0000 |
commit | 5c2eade45d733433bfa5e513950b28819faa8751 (patch) | |
tree | 74ab53362c9e11464f7f934901dae36558496b24 /tools/vg-suppressions | |
parent | 4d19c649cc73dbad6f0606a4890c7b83fb805134 (diff) |
Tweak ws_cpuid so that Valgrind is happy.
Valgrind considers the "cpuid" instruction to always depend on inputs from eax
and ecx, even though it's only a subset of values of eax for which ecx is
relevant. If ecx is undefined when cpuid is executed, the outputs of cpuid
will be considered undefined.
Instead of suppressing the resulting uninitialised-value warning (the
suppression for which is now out-of-date anyway, now that
register_all_protocols is moved to a worker thread), let's simply set ecx to
zero in ws_cpuid.
Testing done: Built Wireshark on Linux amd64. Before this change, running
"tools/valgrind-wireshark.sh ./test/captures/dhcp.pcap" with
valgrind-3.12.0.SVN on Debian 9.4 amd64 would yield the following Valgrind
error:
==2416== Thread 2:
==2416== Conditional jump or move depends on uninitialised value(s)
==2416== at 0xACB8B22: ws_mempbrk_sse42_compile (ws_mempbrk_sse42.c:58)
==2416== by 0x74F4960: register_all_protocols_worker (register.c:37)
==2416== by 0xB1403D4: g_thread_proxy (gthread.c:784)
==2416== by 0xD438493: start_thread (pthread_create.c:333)
==2416== by 0xB4CAACE: clone (clone.S:97)
With the change, the above message is gone. Inspected the disassembly of
function ws_cpuid, and it looks sane -- just an added "xor ecx, ecx" at the
top.
Change-Id: I2fb382309cac234c400286a6e9fac7d922912c63
Reviewed-on: https://code.wireshark.org/review/26733
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'tools/vg-suppressions')
-rw-r--r-- | tools/vg-suppressions | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/tools/vg-suppressions b/tools/vg-suppressions index 4856ab1c7d..0e5f94b45e 100644 --- a/tools/vg-suppressions +++ b/tools/vg-suppressions @@ -6,17 +6,6 @@ # runs a valgrind step) but other entries are welcome as long as they are # sufficiently commented. { - Remove uninitialised CPU condition code check for ws_cpuid_sse42() on Virtualbox - Memcheck:Cond - fun:ws_mempbrk_sse42_compile - ... - fun:register_all_protocols - fun:proto_init - fun:epan_init - fun:main -} - -{ Libgcrypt leak (gcry_control) Memcheck:Leak match-leak-kinds: reachable |