diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-12-30 20:12:22 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-01-21 20:16:14 +0100 |
commit | 9e9890a8ff949ca9f735fb2d4251c8449b0bd2c0 (patch) | |
tree | 90976e9140d2017185e8067110fc768e7331b720 /tools | |
parent | 0b50972e6cf4a135a1eadd14f3e731d8a14839f1 (diff) | |
download | android-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-x | tools/run-valgrind.py | 7 | ||||
-rw-r--r-- | tools/valgrind.supp | 106 |
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_ + ... +} |