matepek / vscode-catch2-test-adapter

Catch2, Google Test and doctest Adapter for the VSCode
https://marketplace.visualstudio.com/items?itemName=matepek.vscode-catch2-test-adapter
MIT License
210 stars 52 forks source link

Tests crash on start when built with ASAN #451

Open alexolog opened 3 days ago

alexolog commented 3 days ago

Checklist

Describe the bug

Tests crash on start when built with ASAN

To Reproduce

See "Desktop" below for environment details.

  1. Build a test with ASAN enabled.
  2. Link it with ASAN-enabled gtest/gmock libraries.
  3. Run the test executable from the command-line, and under the debugger using the following launch setting:
    "version": "0.2.0",
    "inputs": [
        {
            "id": "gtest",
            "type": "promptString",
            "description": "Test",
            "default": "*"
        },
    ],
    "configurations": [
        {
            "name": "Debug CMake gtest",
            "type": "lldb", // https://github.com/vadimcn/vscode-lldb
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [
                "--gtest_filter=*.${input:gtest}",
            ]
        },
    ]
  4. Test loads and runs normally in both cases.
    [----------] Global test environment tear-down
    [==========] 3 tests from 1 test suite ran. (43 ms total)
    [  PASSED  ] 3 tests.
  5. Try running the same test using C++ TestMate.
  6. Test crashes on startup:
    $5│ ==24166==ERROR: AddressSanitizer: container-overflow on address 0x60800006ecff at pc 0x00010678fe38 bp 0x00016d0927f0 sp 0x00016d0927e8
    $5│ HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_container_overflow=0.
    ... stack trace here ...
    $5│ If you suspect a false positive see also: https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow.
    ... more data here ...
    $5│ ==24166==ABORTING

Desktop

The toolchain used is not the native Mac one (Xcode) but rather LLVM17 installed via homebrew and the environment set in a shell script:

sourced from .zprofile ```bash export AR="llvm-ar" export CC="clang" export CXX="clang++" export LD="ld.lld" export NM="llvm-nm" export OBJCOPY="llvm-objcopy" export OBJDUMP="llvm-objdump" export READELF="llvm-readelf" export RANLIB="llvm-ranlib" export STRIP="llvm-strip" LLVM_DIR="$HOMEBREW_PREFIX/opt/llvm@17" export PATH="$LLVM_DIR/bin:$PATH" export LDFLAGS="-L$LLVM_DIR/lib -L$LLVM_DIR/lib/c++ -fuse-ld=lld -rtlib=compiler-rt -Wl,-rpath,$LLVM_DIR/lib/c++ -Wl,-rpath,$LLVM_DIR/lib/clang/17/lib/darwin/" export CPPFLAGS="-I$LLVM_DIR/include" ```

Log (optional but recommended)

Log ```js [2024-11-15 19:39:34.330] [INFO] proc starting /Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests [ '--gtest_color=no', '--gtest_filter=DaemonTester.OneJobNowTwoBatches', '--gtest_also_run_disabled_tests' ] /Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests [2024-11-15 19:39:34.334] [INFO] proc started 24166 /Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests { shared: { workspaceFolder: { uri: Zo { scheme: 'file', authority: '', path: '/Users/oren/work/rpp-server-2', query: '', fragment: '', _formatted: 'file:///Users/oren/work/rpp-server-2', _fsPath: '/Users/oren/work/rpp-server-2' }, name: 'rpp-server-2', index: 0 }, log: { _logger: { configSection: 'testMate.cpp.log', workspaceFolder: undefined, outputChannelName: 'C++ TestMate', inspectOptions: [Object], includeLocation: false, targets: [Array], nextInspectOptions: undefined, configChangeSubscription: [Object] } }, testController: { controller: { items: [Object], label: [Getter/Setter], refreshHandler: [Getter/Setter], id: [Getter], relatedCodeProvider: [Getter/Setter], createRunProfile: [Function: createRunProfile], createTestItem: [Function: createTestItem], createTestRun: [Function: createTestRun], invalidateTestResults: [Function: invalidateTestResults], resolveHandler: [Getter/Setter], dispose: [Function: dispose] }, testItem2test: WeakMap { } }, executeTask: [Function (anonymous)], sendRetireEvent: [Function: d], varToValue: [ { resolve: /\$\{workspaceFolder(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{workspaceDirectory(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: '${workspaceName}', rule: 'rpp-server-2' }, { resolve: /\$\{assert(?::([^}]+))?\}/, rule: [Function: rule] }, { resolve: '${osPathSep}', rule: '/' }, { resolve: '${osPathEnvSep}', rule: ':' }, { resolve: /\$\{config:([^}]+)\}/, rule: [Function: rule] }, { resolve: /\$\{command:([^}]+)\}/, rule: [AsyncFunction: rule] } ], rngSeed: null, execWatchTimeout: 100000, _execRunningTimeout: 60000, execParsingTimeout: 5000, isNoThrow: false, enabledTestListCaching: false, enabledStrictPattern: null, googleTestTreatGMockWarningAs: 'nothing', googleTestGMockVerbose: 'default', hideUninterestingOutput: false, _execRunningTimeoutChangeEmitter: D { z: 0, f: undefined, g: undefined, j: undefined, w: undefined, q: [Function (anonymous)], u: undefined }, _cancellationTokenSource: nt { f: wh { a: false, b: null }, g: undefined }, cancellationToken: wh { a: false, b: null }, onDidChangeExecRunningTimeout: [Function (anonymous)], taskPool: { _maxTaskCount: 1, _runningTaskCount: 1, _waitingTasks: [] }, buildProcessChecker: { _log: { _logger: [Object] }, _checkIntervalMillis: 2000, _defaultPattern: /(^|[/\\])(bazel|cmake|make|ninja|cl|c\+\+|ld|clang|clang\+\+|gcc|g\+\+|link|icc|armcc|armclang)(-[^/\\]+)?(\.exe)?$/, _lastChecked: 0, _finishedP: Promise { undefined }, _finishedResolver: [Function (anonymous)], _timerId: undefined } }, name: undefined, description: undefined, varToValue: [ { resolve: '${filename}', rule: 'rpp_daemon_server_tests' }, { resolve: '${relDirpath}', rule: 'build/rpp_daemon_server/tests' }, { resolve: /\$\{filename(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{relPath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{absPath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{relDirpath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{absDirpath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: '${extFilename}', rule: '' }, { resolve: '${baseFilename}', rule: 'rpp_daemon_server_tests' }, { resolve: /\$\{workspaceFolder(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{workspaceDirectory(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: '${workspaceName}', rule: 'rpp-server-2' }, { resolve: /\$\{assert(?::([^}]+))?\}/, rule: [Function: rule] }, { resolve: '${osPathSep}', rule: '/' }, { resolve: '${osPathEnvSep}', rule: ':' }, { resolve: /\$\{config:([^}]+)\}/, rule: [Function: rule] }, { resolve: /\$\{command:([^}]+)\}/, rule: [AsyncFunction: rule] }, { resolve: /\$\{cwd(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] } ], path: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests', options: { cwd: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests', env: { AR: 'llvm-ar', ASAN_OPTIONS: 'disable_coredump=0:abort_on_error=1', CC: 'clang', COMMAND_MODE: 'unix2003', CPPFLAGS: '-I/opt/homebrew/opt/llvm@17/include', CXX: 'clang++', DEFAULT_USER: 'oren', EDITOR: 'code -w', GIT_COMPLETION_CHECKOUT_NO_GUESS: '1', GIT_PS1_HIDE_IF_PWD_IGNORED: '1', GIT_PS1_SHOWCOLORHINTS: '1', GIT_PS1_SHOWDIRTYSTATE: '1', GIT_PS1_SHOWSTASHSTATE: '1', GIT_PS1_SHOWUNTRACKEDFILES: '1', GIT_PS1_SHOWUPSTREAM: 'git auto', HOME: '/Users/oren', HOMEBREW_CELLAR: '/opt/homebrew/Cellar', HOMEBREW_PREFIX: '/opt/homebrew', HOMEBREW_REPOSITORY: '/opt/homebrew', INFOPATH: '/opt/homebrew/share/info:', JAVA_HOME: '/Users/oren/.jenv/versions/17.0', JDK_HOME: '/Users/oren/.jenv/versions/17.0', JENV_FORCEJAVAHOME: 'true', JENV_FORCEJDKHOME: 'true', JENV_LOADED: '1', JENV_SHELL: 'zsh', LD: 'ld.lld', LDFLAGS: '-L/opt/homebrew/opt/llvm@17/lib -L/opt/homebrew/opt/llvm@17/lib/c++ -fuse-ld=lld -rtlib=compiler-rt -Wl,-rpath,/opt/homebrew/opt/llvm@17/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm@17/lib/clang/17/lib/darwin/', LESS: '-R', LOGNAME: 'oren', LSCOLORS: 'Gxfxcxdxbxegedabagacad', LS_COLORS: 'di=1;36:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43', MallocNanoZone: '0', NM: 'llvm-nm', OBJCOPY: 'llvm-objcopy', OBJDUMP: 'llvm-objdump', OLDPWD: '/', ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined', PAGER: 'less', PATH: '/Users/oren/.jenv/shims:/Users/oren/.jenv/bin:/opt/homebrew/opt/ccache/libexec:/opt/homebrew/opt/llvm@17/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin/git-lfs:/Users/oren/Library/Python/3.9/bin', PGPASSFILE: '/Users/oren/.pgpass', PWD: '/', RANLIB: 'llvm-ranlib', READELF: 'llvm-readelf', SHELL: '/bin/zsh', SHLVL: '0', SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.5Hs2rOo4sr/Listeners', STRIP: 'llvm-strip', TMPDIR: '/var/folders/cw/72b4rmqd4pq7z8fblm3nwgjh0000gq/T/', UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1', USER: 'oren', VISUAL: 'code -w', VSCODE_CODE_CACHE_PATH: '/Users/oren/Library/Application Support/Code/CachedData/f1a4fb101478ce6ec82fe9627c43efbf9e98c813', VSCODE_CRASH_REPORTER_PROCESS_TYPE: 'extensionHost', VSCODE_CWD: '/', VSCODE_ESM_ENTRYPOINT: 'vs/workbench/api/node/extensionHostProcess', VSCODE_HANDLES_UNCAUGHT_ERRORS: 'true', VSCODE_IPC_HOOK: '/Users/oren/Library/Application Support/Code/1.95-main.sock', VSCODE_NLS_CONFIG: '{"userLocale":"en-us","osLocale":"en-ca","resolvedLanguage":"en","defaultMessagesFile":"/Applications/Visual Studio Code.app/Contents/Resources/app/out/nls.messages.json","locale":"en-us","availableLanguages":{}}', VSCODE_PID: '79631', XPC_FLAGS: '0x0', XPC_SERVICE_NAME: 'application.com.microsoft.VSCode.563838714.563838720', ZSH: '/Users/oren/.oh-my-zsh', _: '/Applications/Visual Studio Code.app/Contents/MacOS/Electron', __CFBundleIdentifier: 'com.microsoft.VSCode', __CF_USER_TEXT_ENCODING: '0x1F7:0x0:0x52', ELECTRON_RUN_AS_NODE: '1', APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL: '1', APPLICATIONINSIGHTS_CONFIGURATION_CONTENT: '{}' } }, _frameworkSpecific: { testGrouping: undefined }, markAsSkipped: false, executableCloning: false, debugConfigData: undefined, runTask: { before: [], beforeEach: [], after: [], afterEach: [] }, spawner: s {}, resolvedSourceFileMap: {}, log: { _logger: { configSection: 'testMate.cpp.log', workspaceFolder: undefined, outputChannelName: 'C++ TestMate', inspectOptions: { depth: 3 }, includeLocation: false, targets: [ [a] ], nextInspectOptions: undefined, configChangeSubscription: { dispose: [Function (anonymous)] } } }, workspaceFolder: { uri: Zo { scheme: 'file', authority: '', path: '/Users/oren/work/rpp-server-2', query: '', fragment: '', _formatted: 'file:///Users/oren/work/rpp-server-2', _fsPath: '/Users/oren/work/rpp-server-2' }, name: 'rpp-server-2', index: 0 }, workspacePath: '/Users/oren/work/rpp-server-2', testController: { controller: { items: { size: [Getter], forEach: [Function: forEach], replace: [Function: replace], add: [Function: add], delete: [Function: delete], get: [Function: get], toJSON: [Function: toJSON], [Symbol(Symbol.iterator)]: [Function: [Symbol.iterator]] }, label: [Getter/Setter], refreshHandler: [Getter/Setter], id: [Getter], relatedCodeProvider: [Getter/Setter], createRunProfile: [Function: createRunProfile], createTestItem: [Function: createTestItem], createTestRun: [Function: createTestRun], invalidateTestResults: [Function: invalidateTestResults], resolveHandler: [Getter/Setter], dispose: [Function: dispose] }, testItem2test: WeakMap { } }, cancellationToken: wh { a: false, b: null }, taskPool: { _maxTaskCount: 1, _runningTaskCount: 1, _waitingTasks: [] }, executeTask: [Function (anonymous)], parallelizationPool: { _maxTaskCount: 1, _runningTaskCount: 1, _waitingTasks: [] }, optionsHash: '61cb58' } [ '--gtest_color=no', '--gtest_filter=DaemonTester.OneJobNowTwoBatches', '--gtest_also_run_disabled_tests' ]; [2024-11-15 19:39:34.892] [INFO] proc close: /Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests [ null, 'SIGABRT' ] [2024-11-15 19:39:34.893] [WARN] Signal received: SIGABRT u { value: 3, _error: 'Signal received: SIGABRT' } l { spawnBuilder: { spawner: s {}, cmd: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests', args: [ '--gtest_color=no', '--gtest_filter=DaemonTester.OneJobNowTwoBatches', '--gtest_also_run_disabled_tests' ], options: { cwd: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests', env: { AR: 'llvm-ar', ASAN_OPTIONS: 'disable_coredump=0:abort_on_error=1', CC: 'clang', COMMAND_MODE: 'unix2003', CPPFLAGS: '-I/opt/homebrew/opt/llvm@17/include', CXX: 'clang++', DEFAULT_USER: 'oren', EDITOR: 'code -w', GIT_COMPLETION_CHECKOUT_NO_GUESS: '1', GIT_PS1_HIDE_IF_PWD_IGNORED: '1', GIT_PS1_SHOWCOLORHINTS: '1', GIT_PS1_SHOWDIRTYSTATE: '1', GIT_PS1_SHOWSTASHSTATE: '1', GIT_PS1_SHOWUNTRACKEDFILES: '1', GIT_PS1_SHOWUPSTREAM: 'git auto', HOME: '/Users/oren', HOMEBREW_CELLAR: '/opt/homebrew/Cellar', HOMEBREW_PREFIX: '/opt/homebrew', HOMEBREW_REPOSITORY: '/opt/homebrew', INFOPATH: '/opt/homebrew/share/info:', JAVA_HOME: '/Users/oren/.jenv/versions/17.0', JDK_HOME: '/Users/oren/.jenv/versions/17.0', JENV_FORCEJAVAHOME: 'true', JENV_FORCEJDKHOME: 'true', JENV_LOADED: '1', JENV_SHELL: 'zsh', LD: 'ld.lld', LDFLAGS: '-L/opt/homebrew/opt/llvm@17/lib -L/opt/homebrew/opt/llvm@17/lib/c++ -fuse-ld=lld -rtlib=compiler-rt -Wl,-rpath,/opt/homebrew/opt/llvm@17/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm@17/lib/clang/17/lib/darwin/', LESS: '-R', LOGNAME: 'oren', LSCOLORS: 'Gxfxcxdxbxegedabagacad', LS_COLORS: 'di=1;36:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43', MallocNanoZone: '0', NM: 'llvm-nm', OBJCOPY: 'llvm-objcopy', OBJDUMP: 'llvm-objdump', OLDPWD: '/', ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined', PAGER: 'less', PATH: '/Users/oren/.jenv/shims:/Users/oren/.jenv/bin:/opt/homebrew/opt/ccache/libexec:/opt/homebrew/opt/llvm@17/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin/git-lfs:/Users/oren/Library/Python/3.9/bin', PGPASSFILE: '/Users/oren/.pgpass', PWD: '/', RANLIB: 'llvm-ranlib', READELF: 'llvm-readelf', SHELL: '/bin/zsh', SHLVL: '0', SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.5Hs2rOo4sr/Listeners', STRIP: 'llvm-strip', TMPDIR: '/var/folders/cw/72b4rmqd4pq7z8fblm3nwgjh0000gq/T/', UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1', USER: 'oren', VISUAL: 'code -w', VSCODE_CODE_CACHE_PATH: '/Users/oren/Library/Application Support/Code/CachedData/f1a4fb101478ce6ec82fe9627c43efbf9e98c813', VSCODE_CRASH_REPORTER_PROCESS_TYPE: 'extensionHost', VSCODE_CWD: '/', VSCODE_ESM_ENTRYPOINT: 'vs/workbench/api/node/extensionHostProcess', VSCODE_HANDLES_UNCAUGHT_ERRORS: 'true', VSCODE_IPC_HOOK: '/Users/oren/Library/Application Support/Code/1.95-main.sock', VSCODE_NLS_CONFIG: '{"userLocale":"en-us","osLocale":"en-ca","resolvedLanguage":"en","defaultMessagesFile":"/Applications/Visual Studio Code.app/Contents/Resources/app/out/nls.messages.json","locale":"en-us","availableLanguages":{}}', VSCODE_PID: '79631', XPC_FLAGS: '0x0', XPC_SERVICE_NAME: 'application.com.microsoft.VSCode.563838714.563838720', ZSH: '/Users/oren/.oh-my-zsh', _: '/Applications/Visual Studio Code.app/Contents/MacOS/Electron', __CFBundleIdentifier: 'com.microsoft.VSCode', __CF_USER_TEXT_ENCODING: '0x1F7:0x0:0x52', ELECTRON_RUN_AS_NODE: '1', APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL: '1', APPLICATIONINSIGHTS_CONFIGURATION_CONTENT: '{}' } }, timeout: undefined }, process: ChildProcess { _events: [Object: null prototype] { error: [Function (anonymous)] }, _eventsCount: 1, _maxListeners: undefined, _closesNeeded: 3, _closesGot: 3, connected: false, signalCode: 'SIGABRT', exitCode: null, killed: false, spawnfile: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests', _handle: null, spawnargs: [ '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests', '--gtest_color=no', '--gtest_filter=DaemonTester.OneJobNowTwoBatches', '--gtest_also_run_disabled_tests' ], pid: 24166, stdin: Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: { close: undefined, error: undefined, prefinish: undefined, finish: undefined, drain: undefined, data: undefined, end: [Function: onReadableStreamEnd], readable: undefined }, _readableState: ReadableState { highWaterMark: 16384, buffer: [], bufferIndex: 0, length: 0, pipes: [], awaitDrainWriters: null, readable: false, [Symbol(kState)]: 1054580 }, _writableState: WritableState { highWaterMark: 16384, length: 0, corked: 0, onwrite: [Function: bound onwrite], writelen: 0, bufferedIndex: 0, pendingcb: 0, [Symbol(kState)]: 17564532, [Symbol(kBufferedValue)]: null }, allowHalfOpen: false, _maxListeners: undefined, _eventsCount: 1, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, [Symbol(async_id_symbol)]: 194645, [Symbol(kHandle)]: null, [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: false, [Symbol(kSetKeepAlive)]: false, [Symbol(kSetKeepAliveInitialDelay)]: 0, [Symbol(kBytesRead)]: 0, [Symbol(kBytesWritten)]: 0 }, stdout: Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: { close: [Function (anonymous)], error: undefined, prefinish: undefined, finish: undefined, drain: undefined, data: [Function (anonymous)], end: [Function: onReadableStreamEnd], readable: undefined }, _readableState: ReadableState { highWaterMark: 16384, buffer: [], bufferIndex: 0, length: 0, pipes: [], awaitDrainWriters: null, [Symbol(kState)]: 194512756 }, _writableState: WritableState { highWaterMark: 16384, length: 0, corked: 0, onwrite: [Function: bound onwrite], writelen: 0, bufferedIndex: 0, pendingcb: 0, [Symbol(kState)]: 1091450228, [Symbol(kBufferedValue)]: null }, allowHalfOpen: false, _maxListeners: undefined, _eventsCount: 3, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, write: [Function: writeAfterFIN], [Symbol(async_id_symbol)]: 194646, [Symbol(kHandle)]: null, [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: false, [Symbol(kSetKeepAlive)]: false, [Symbol(kSetKeepAliveInitialDelay)]: 0, [Symbol(kBytesRead)]: 86, [Symbol(kBytesWritten)]: 0 }, stderr: Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: { close: [Function (anonymous)], error: undefined, prefinish: undefined, finish: undefined, drain: undefined, data: [Function (anonymous)], end: [Function: onReadableStreamEnd], readable: undefined }, _readableState: ReadableState { highWaterMark: 16384, buffer: [], bufferIndex: 0, length: 0, pipes: [], awaitDrainWriters: null, [Symbol(kState)]: 194512756 }, _writableState: WritableState { highWaterMark: 16384, length: 0, corked: 0, onwrite: [Function: bound onwrite], writelen: 0, bufferedIndex: 0, pendingcb: 0, [Symbol(kState)]: 1091450228, [Symbol(kBufferedValue)]: null }, allowHalfOpen: false, _maxListeners: undefined, _eventsCount: 3, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, write: [Function: writeAfterFIN], [Symbol(async_id_symbol)]: 194647, [Symbol(kHandle)]: null, [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: false, [Symbol(kSetKeepAlive)]: false, [Symbol(kSetKeepAliveInitialDelay)]: 0, [Symbol(kBytesRead)]: 6607, [Symbol(kBytesWritten)]: 0 }, stdio: [ Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: [Object], _readableState: [ReadableState], _writableState: [WritableState], allowHalfOpen: false, _maxListeners: undefined, _eventsCount: 1, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, [Symbol(async_id_symbol)]: 194645, [Symbol(kHandle)]: null, [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: false, [Symbol(kSetKeepAlive)]: false, [Symbol(kSetKeepAliveInitialDelay)]: 0, [Symbol(kBytesRead)]: 0, [Symbol(kBytesWritten)]: 0 }, Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: [Object], _readableState: [ReadableState], _writableState: [WritableState], allowHalfOpen: false, _maxListeners: undefined, _eventsCount: 3, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, write: [Function: writeAfterFIN], [Symbol(async_id_symbol)]: 194646, [Symbol(kHandle)]: null, [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: false, [Symbol(kSetKeepAlive)]: false, [Symbol(kSetKeepAliveInitialDelay)]: 0, [Symbol(kBytesRead)]: 86, [Symbol(kBytesWritten)]: 0 }, Socket { connecting: false, _hadError: false, _parent: null, _host: null, _closeAfterHandlingError: false, _events: [Object], _readableState: [ReadableState], _writableState: [WritableState], allowHalfOpen: false, _maxListeners: undefined, _eventsCount: 3, _sockname: null, _pendingData: null, _pendingEncoding: '', server: null, _server: null, write: [Function: writeAfterFIN], [Symbol(async_id_symbol)]: 194647, [Symbol(kHandle)]: null, [Symbol(lastWriteQueueSize)]: 0, [Symbol(timeout)]: null, [Symbol(kBuffer)]: null, [Symbol(kBufferCb)]: null, [Symbol(kBufferGen)]: null, [Symbol(shapeMode)]: true, [Symbol(kCapture)]: false, [Symbol(kSetNoDelay)]: false, [Symbol(kSetKeepAlive)]: false, [Symbol(kSetKeepAliveInitialDelay)]: 0, [Symbol(kBytesRead)]: 6607, [Symbol(kBytesWritten)]: 0 } ], [Symbol(shapeMode)]: false, [Symbol(kCapture)]: false }, childrenToRun: [ s { exec: f { shared: [Object], frameworkName: 'GoogleTest', frameworkVersion: undefined, log: [Object], _lastReloadTime: 1731691128788.8264, _tests: [Map], _execItem: [b], _argumentPrefix: 'gtest_', _createAndAddTest: [AsyncFunction (anonymous)] }, id: 'DaemonTester.OneJobNowTwoBatches', _skipped: false, _staticError: undefined, _tags: [], _frameworkTag: Vl { id: 'framework.gtest' }, debuggable: true, runnable: true, subLevel: 0, log: { _logger: [Object] }, _skipReported: false, _subTests: undefined, _item: wC { id: 'DaemonTester.OneJobNowTwoBatches', uri: [Zo], children: [Object], range: [Getter/Setter], label: [Getter/Setter], description: [Getter/Setter], sortText: [Getter/Setter], canResolveChildren: [Getter/Setter], busy: [Getter/Setter], error: [Getter/Setter], tags: [Getter/Setter] } } ], cancellationToken: wh { a: false, b: D { z: 0, f: undefined, g: undefined, j: undefined, w: undefined, q: [Function (anonymous)], u: undefined } }, runPrefix: '\x1B[2m$5│ \x1B[22m', startTime: 1731699574334, _timeout: null, _closed: true, _killed: false, result: Promise { u { value: 3, _error: 'Signal received: SIGABRT' } } }; f { shared: { shared: { workspaceFolder: { uri: [Zo], name: 'rpp-server-2', index: 0 }, log: { _logger: [Object] }, testController: { controller: [Object], testItem2test: [WeakMap] }, executeTask: [Function (anonymous)], sendRetireEvent: [Function: d], varToValue: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], rngSeed: null, execWatchTimeout: 100000, _execRunningTimeout: 60000, execParsingTimeout: 5000, isNoThrow: false, enabledTestListCaching: false, enabledStrictPattern: null, googleTestTreatGMockWarningAs: 'nothing', googleTestGMockVerbose: 'default', hideUninterestingOutput: false, _execRunningTimeoutChangeEmitter: D { z: 0, f: undefined, g: undefined, j: undefined, w: undefined, q: [Function (anonymous)], u: undefined }, _cancellationTokenSource: nt { f: [wh], g: undefined }, cancellationToken: wh { a: false, b: null }, onDidChangeExecRunningTimeout: [Function (anonymous)], taskPool: { _maxTaskCount: 1, _runningTaskCount: 1, _waitingTasks: [] }, buildProcessChecker: { _log: [Object], _checkIntervalMillis: 2000, _defaultPattern: /(^|[/\\])(bazel|cmake|make|ninja|cl|c\+\+|ld|clang|clang\+\+|gcc|g\+\+|link|icc|armcc|armclang)(-[^/\\]+)?(\.exe)?$/, _lastChecked: 0, _finishedP: [Promise], _finishedResolver: [Function (anonymous)], _timerId: undefined } }, name: undefined, description: undefined, varToValue: [ { resolve: '${filename}', rule: 'rpp_daemon_server_tests' }, { resolve: '${relDirpath}', rule: 'build/rpp_daemon_server/tests' }, { resolve: /\$\{filename(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{relPath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{absPath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{relDirpath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{absDirpath(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: '${extFilename}', rule: '' }, { resolve: '${baseFilename}', rule: 'rpp_daemon_server_tests' }, { resolve: /\$\{workspaceFolder(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: /\$\{workspaceDirectory(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] }, { resolve: '${workspaceName}', rule: 'rpp-server-2' }, { resolve: /\$\{assert(?::([^}]+))?\}/, rule: [Function: rule] }, { resolve: '${osPathSep}', rule: '/' }, { resolve: '${osPathEnvSep}', rule: ':' }, { resolve: /\$\{config:([^}]+)\}/, rule: [Function: rule] }, { resolve: /\$\{command:([^}]+)\}/, rule: [AsyncFunction: rule] }, { resolve: /\$\{cwd(?:\[(?:(-?[0-9]+)|(-?[0-9]+)?:(-?[0-9]+)?)\])?\}/, rule: [Function: rule] } ], path: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests', options: { cwd: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests', env: { AR: 'llvm-ar', ASAN_OPTIONS: 'disable_coredump=0:abort_on_error=1', CC: 'clang', COMMAND_MODE: 'unix2003', CPPFLAGS: '-I/opt/homebrew/opt/llvm@17/include', CXX: 'clang++', DEFAULT_USER: 'oren', EDITOR: 'code -w', GIT_COMPLETION_CHECKOUT_NO_GUESS: '1', GIT_PS1_HIDE_IF_PWD_IGNORED: '1', GIT_PS1_SHOWCOLORHINTS: '1', GIT_PS1_SHOWDIRTYSTATE: '1', GIT_PS1_SHOWSTASHSTATE: '1', GIT_PS1_SHOWUNTRACKEDFILES: '1', GIT_PS1_SHOWUPSTREAM: 'git auto', HOME: '/Users/oren', HOMEBREW_CELLAR: '/opt/homebrew/Cellar', HOMEBREW_PREFIX: '/opt/homebrew', HOMEBREW_REPOSITORY: '/opt/homebrew', INFOPATH: '/opt/homebrew/share/info:', JAVA_HOME: '/Users/oren/.jenv/versions/17.0', JDK_HOME: '/Users/oren/.jenv/versions/17.0', JENV_FORCEJAVAHOME: 'true', JENV_FORCEJDKHOME: 'true', JENV_LOADED: '1', JENV_SHELL: 'zsh', LD: 'ld.lld', LDFLAGS: '-L/opt/homebrew/opt/llvm@17/lib -L/opt/homebrew/opt/llvm@17/lib/c++ -fuse-ld=lld -rtlib=compiler-rt -Wl,-rpath,/opt/homebrew/opt/llvm@17/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm@17/lib/clang/17/lib/darwin/', LESS: '-R', LOGNAME: 'oren', LSCOLORS: 'Gxfxcxdxbxegedabagacad', LS_COLORS: 'di=1;36:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43', MallocNanoZone: '0', NM: 'llvm-nm', OBJCOPY: 'llvm-objcopy', OBJDUMP: 'llvm-objdump', OLDPWD: '/', ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined', PAGER: 'less', PATH: '/Users/oren/.jenv/shims:/Users/oren/.jenv/bin:/opt/homebrew/opt/ccache/libexec:/opt/homebrew/opt/llvm@17/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/opt/homebrew/bin/git-lfs:/Users/oren/Library/Python/3.9/bin', PGPASSFILE: '/Users/oren/.pgpass', PWD: '/', RANLIB: 'llvm-ranlib', READELF: 'llvm-readelf', SHELL: '/bin/zsh', SHLVL: '0', SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.5Hs2rOo4sr/Listeners', STRIP: 'llvm-strip', TMPDIR: '/var/folders/cw/72b4rmqd4pq7z8fblm3nwgjh0000gq/T/', UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1', USER: 'oren', VISUAL: 'code -w', VSCODE_CODE_CACHE_PATH: '/Users/oren/Library/Application Support/Code/CachedData/f1a4fb101478ce6ec82fe9627c43efbf9e98c813', VSCODE_CRASH_REPORTER_PROCESS_TYPE: 'extensionHost', VSCODE_CWD: '/', VSCODE_ESM_ENTRYPOINT: 'vs/workbench/api/node/extensionHostProcess', VSCODE_HANDLES_UNCAUGHT_ERRORS: 'true', VSCODE_IPC_HOOK: '/Users/oren/Library/Application Support/Code/1.95-main.sock', VSCODE_NLS_CONFIG: '{"userLocale":"en-us","osLocale":"en-ca","resolvedLanguage":"en","defaultMessagesFile":"/Applications/Visual Studio Code.app/Contents/Resources/app/out/nls.messages.json","locale":"en-us","availableLanguages":{}}', VSCODE_PID: '79631', XPC_FLAGS: '0x0', XPC_SERVICE_NAME: 'application.com.microsoft.VSCode.563838714.563838720', ZSH: '/Users/oren/.oh-my-zsh', _: '/Applications/Visual Studio Code.app/Contents/MacOS/Electron', __CFBundleIdentifier: 'com.microsoft.VSCode', __CF_USER_TEXT_ENCODING: '0x1F7:0x0:0x52', ELECTRON_RUN_AS_NODE: '1', APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL: '1', APPLICATIONINSIGHTS_CONFIGURATION_CONTENT: '{}' } }, _frameworkSpecific: { testGrouping: undefined }, markAsSkipped: false, executableCloning: false, debugConfigData: undefined, runTask: { before: [], beforeEach: [], after: [], afterEach: [] }, spawner: s {}, resolvedSourceFileMap: {}, log: { _logger: { configSection: 'testMate.cpp.log', workspaceFolder: undefined, outputChannelName: 'C++ TestMate', inspectOptions: [Object], includeLocation: false, targets: [Array], nextInspectOptions: undefined, configChangeSubscription: [Object] } }, workspaceFolder: { uri: Zo { scheme: 'file', authority: '', path: '/Users/oren/work/rpp-server-2', query: '', fragment: '', _formatted: 'file:///Users/oren/work/rpp-server-2', _fsPath: '/Users/oren/work/rpp-server-2' }, name: 'rpp-server-2', index: 0 }, workspacePath: '/Users/oren/work/rpp-server-2', testController: { controller: { items: [Object], label: [Getter/Setter], refreshHandler: [Getter/Setter], id: [Getter], relatedCodeProvider: [Getter/Setter], createRunProfile: [Function: createRunProfile], createTestItem: [Function: createTestItem], createTestRun: [Function: createTestRun], invalidateTestResults: [Function: invalidateTestResults], resolveHandler: [Getter/Setter], dispose: [Function: dispose] }, testItem2test: WeakMap { } }, cancellationToken: wh { a: false, b: null }, taskPool: { _maxTaskCount: 1, _runningTaskCount: 1, _waitingTasks: [] }, executeTask: [Function (anonymous)], parallelizationPool: { _maxTaskCount: 1, _runningTaskCount: 1, _waitingTasks: [] }, optionsHash: '61cb58' }, frameworkName: 'GoogleTest', frameworkVersion: undefined, log: { _logger: { configSection: 'testMate.cpp.log', workspaceFolder: undefined, outputChannelName: 'C++ TestMate', inspectOptions: { depth: 3 }, includeLocation: false, targets: [ [a] ], nextInspectOptions: undefined, configChangeSubscription: { dispose: [Function (anonymous)] } } }, _lastReloadTime: 1731691128788.8264, _tests: Map(3) { 'DaemonTester.NoJobs' => s { exec: [Circular *1], id: 'DaemonTester.NoJobs', _skipped: false, _staticError: undefined, _tags: [], _frameworkTag: Vl { id: 'framework.gtest' }, debuggable: true, runnable: true, subLevel: 0, log: { _logger: [Object] }, _skipReported: false, _subTests: undefined, _item: wC { id: 'DaemonTester.NoJobs', uri: [Zo], children: [Object], range: [Getter/Setter], label: [Getter/Setter], description: [Getter/Setter], sortText: [Getter/Setter], canResolveChildren: [Getter/Setter], busy: [Getter/Setter], error: [Getter/Setter], tags: [Getter/Setter] } }, 'DaemonTester.OneJobNowNoIds' => s { exec: [Circular *1], id: 'DaemonTester.OneJobNowNoIds', _skipped: false, _staticError: undefined, _tags: [], _frameworkTag: Vl { id: 'framework.gtest' }, debuggable: true, runnable: true, subLevel: 0, log: { _logger: [Object] }, _skipReported: false, _subTests: undefined, _item: wC { id: 'DaemonTester.OneJobNowNoIds', uri: [Zo], children: [Object], range: [Getter/Setter], label: [Getter/Setter], description: [Getter/Setter], sortText: [Getter/Setter], canResolveChildren: [Getter/Setter], busy: [Getter/Setter], error: [Getter/Setter], tags: [Getter/Setter] } }, 'DaemonTester.OneJobNowTwoBatches' => s { exec: [Circular *1], id: 'DaemonTester.OneJobNowTwoBatches', _skipped: false, _staticError: undefined, _tags: [], _frameworkTag: Vl { id: 'framework.gtest' }, debuggable: true, runnable: true, subLevel: 0, log: { _logger: [Object] }, _skipReported: false, _subTests: undefined, _item: wC { id: 'DaemonTester.OneJobNowTwoBatches', uri: [Zo], children: [Object], range: [Getter/Setter], label: [Getter/Setter], description: [Getter/Setter], sortText: [Getter/Setter], canResolveChildren: [Getter/Setter], busy: [Getter/Setter], error: [Getter/Setter], tags: [Getter/Setter] } } }, _execItem: b { executable: [Circular *1], _busyCounter: 0, _item: wC { id: '/Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests#61cb58', uri: undefined, children: { size: [Getter], forEach: [Function: forEach], replace: [Function: replace], add: [Function: add], delete: [Function: delete], get: [Function: get], toJSON: [Function: toJSON], [Symbol(Symbol.iterator)]: [Function: [Symbol.iterator]] }, range: [Getter/Setter], label: [Getter/Setter], description: [Getter/Setter], sortText: [Getter/Setter], canResolveChildren: [Getter/Setter], busy: [Getter/Setter], error: [Getter/Setter], tags: [Getter/Setter] }, _itemForStaticError: undefined, _lock: Promise { undefined } }, _argumentPrefix: 'gtest_', _createAndAddTest: [AsyncFunction (anonymous)] }; [2024-11-15 19:39:34.893] [INFO] proc finished: /Users/oren/work/rpp-server-2/build/rpp_daemon_server/tests/rpp_daemon_server_tests ```

More info

Google says:

We know about at least one kind of false positive container overflow reports. If a part of the application is built with asan and another part is not instrumented, and both parts use e.g. instrumented std::vector, asan may report non-existent container overflow. This happens because instrumented and non-instrumented bits of std::vector, inlined and not, are mixed during linking, so you end up with incompletely instrumented std::vector.

Unfortunately, I cannot suppress the ASAN check since it is an important one.