summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-12-30 20:12:22 +0100
committerAnna Henningsen <anna@addaleax.net>2019-01-21 20:16:14 +0100
commit9e9890a8ff949ca9f735fb2d4251c8449b0bd2c0 (patch)
tree90976e9140d2017185e8067110fc768e7331b720 /tools
parent0b50972e6cf4a135a1eadd14f3e731d8a14839f1 (diff)
downloadandroid-node-v8-9e9890a8ff949ca9f735fb2d4251c8449b0bd2c0.tar.gz
android-node-v8-9e9890a8ff949ca9f735fb2d4251c8449b0bd2c0.tar.bz2
android-node-v8-9e9890a8ff949ca9f735fb2d4251c8449b0bd2c0.zip
tools: improve valgrind support
- Generate and use a list of suppressions that reduce noisiness for known (non-)issues. - Use `--zero-fill-buffers` for tests, as they sometimes use `Buffer.allocUnsafe()` and valgrind reports that as usage of uninitialized memory. PR-URL: https://github.com/nodejs/node/pull/25498 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/run-valgrind.py7
-rw-r--r--tools/valgrind.supp106
2 files changed, 111 insertions, 2 deletions
diff --git a/tools/run-valgrind.py b/tools/run-valgrind.py
index 67fa424584..bfb67d3619 100755
--- a/tools/run-valgrind.py
+++ b/tools/run-valgrind.py
@@ -37,7 +37,9 @@ NODE_ROOT = path.dirname(path.dirname(path.abspath(__file__)))
VALGRIND_ARGUMENTS = [
'valgrind',
'--error-exitcode=1',
- '--smc-check=all',
+ '--smc-check=all-non-file',
+ '--suppressions=' + path.join(NODE_ROOT, 'tools', 'valgrind.supp'),
+ '--gen-suppressions=all',
]
if len(sys.argv) < 2:
@@ -50,7 +52,8 @@ if not path.exists(executable):
sys.exit(1)
# Compute the command line.
-command = VALGRIND_ARGUMENTS + [executable] + sys.argv[2:]
+command = VALGRIND_ARGUMENTS + [executable, '--zero-fill-buffers']
+command += sys.argv[2:]
# Run valgrind.
process = subprocess.Popen(command, stderr=subprocess.PIPE)
diff --git a/tools/valgrind.supp b/tools/valgrind.supp
new file mode 100644
index 0000000000..420c9a5171
--- /dev/null
+++ b/tools/valgrind.supp
@@ -0,0 +1,106 @@
+{
+ <PW_trace_event>
+ Helgrind:Race
+ ...
+ fun:_ZN4node12_GLOBAL__N_1L20PlatformWorkerThreadEPv
+ ...
+}
+{
+ <tracing_group>
+ Helgrind:Race
+ ...
+ fun:_ZN2v88platform7tracing17TracingController31GetCategoryGroupEnabledInternalEPKc
+ ...
+}
+{
+ <locker_is_active>
+ Helgrind:Race
+ ...
+ fun:_ZN2v86Locker8IsActiveEv
+ ...
+}
+{
+ <locker_initialize>
+ Helgrind:Race
+ ...
+ fun:_ZN2v86Locker10InitializeEPNS_7IsolateE
+ ...
+}
+{
+ <set_embedded_blob>
+ Helgrind:Race
+ ...
+ fun:_ZN2v88internal7Isolate15SetEmbeddedBlobEPKhj
+ ...
+}
+{
+ <set_stack_limits>
+ Helgrind:Race
+ ...
+ fun:_ZN2v88internal4Heap14SetStackLimitsEv
+ ...
+}
+{
+ <current_embedded_blob_size>
+ Helgrind:Race
+ ...
+ fun:_ZN2v88internal7Isolate23CurrentEmbeddedBlobSizeEv
+ ...
+}
+{
+ <current_embedded_blob>
+ Helgrind:Race
+ ...
+ fun:_ZN2v88internal7Isolate19CurrentEmbeddedBlobEv
+ ...
+}
+{
+ <epoll_invalid_param>
+ Memcheck:Param
+ epoll_ctl(event)
+ fun:epoll_ctl
+ fun:uv__io_poll
+ ...
+ obj:/home/sqrt/src/node/master/out/Release/node
+}
+{
+ <frame_ptr_ne>
+ Memcheck:Cond
+ ...
+ fun:_ZN2v88internal9ExitFrame23GetStateForFramePointerEmPNS0_10StackFrame5StateE
+ ...
+}
+{
+ <debug_signal_thread_stack_storage>
+ Memcheck:Leak
+ match-leak-kinds: possible
+ ...
+ fun:pthread_create*
+ fun:_ZN4node9inspector12_GLOBAL__N_1L23StartDebugSignalHandlerEv
+ ...
+}
+{
+ <copyfile_ioctl>
+ Memcheck:Param
+ ioctl(generic)
+ fun:*
+ fun:uv__fs_copyfile
+ ...
+}
+{
+ <epoll_pwait>
+ Memcheck:Param
+ epoll_pwait(sigmask)
+ fun:*
+ fun:uv__io_poll
+ ...
+}
+{
+ <platform_worker_threads_uv_loop_close_after_async_send>
+ Helgrind:Race
+ ...
+ fun:uv_loop_close
+ fun:_ZN4node18CheckedUvLoopCloseEP9uv_loop_s
+ fun:_ZZN4node23WorkerThreadsTaskRunner20DelayedTaskScheduler5StartEvENUlPvE_4_FUNES2_
+ ...
+}