Skip to content

gcc fails to compile with ASAN enabled #43370

@SimonWoolf

Description

@SimonWoolf

Version

16.14.2

Platform

Linux simon-linuxdesktop 5.6.14-050614-generic #202005200733 SMP Wed May 20 07:38:05 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Subsystem

No response

What steps will reproduce the bug?

Reproduce: attempt to build node with debug and asan enabled: ./configure --debug --enable-asan && make -j4
Same issue on ubuntu 22.04 and 20.04, and with gcc/g++ 9 and 11.

How often does it reproduce? Is there a required condition?

Every time

What is the expected behavior?

No response

What do you see instead?

...
  g++ -o /home/simon/dev/vendor/node/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-worker-threads-task-runner.o ../deps/v8/src/libplatform/default-worker-threads-task-runner.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-DLEAK_SANITIZER' '-DV8_USE_ADDRESS_SANITIZER' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_X64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_LINUX' '-DV8_EMBEDDER_STRING="-node.20"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DENABLE_MINOR_MC' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ATOMIC_MARKING_STATE' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DDISABLE_UNTRUSTED_CODE_MITIGATIONS' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_SNAPSHOT_COMPRESSION' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_ADVANCED_BIGINT_ALGORITHMS' -I../deps/v8 -I../deps/v8/include  -fno-omit-frame-pointer -fsanitize=address -fsanitize-address-use-after-scope -pthread -Wno-unused-parameter -m64 -Wno-return-type -fno-strict-aliasing -m64 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O2 -fno-rtti -fno-exceptions -std=gnu++14 -MMD -MF /home/simon/dev/vendor/node/out/Release/.deps//home/simon/dev/vendor/node/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-worker-threads-task-runner.o.d.raw   -c
In file included from ../deps/v8/src/libplatform/default-platform.cc:14:
../deps/v8/src/base/platform/platform.h: In static member function ‘static v8::base::Stack::StackSlot v8::base::Stack::GetRealStackAddressForSlot(v8::base::Stack::StackSlot)’:
../deps/v8/src/base/platform/platform.h:477:16: error: operands to ?: have different types ‘char*’ and ‘v8::base::Stack::StackSlot’
  476 |     return real_frame
      |            ~~~~~~~~~~
  477 |                ? (static_cast<char*>(real_frame) + kAsanRealFrameOffsetBytes)
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  478 |                : slot;
      |                ~~~~~~
../deps/v8/src/base/platform/platform.h:478:18: error: conversion from ‘v8::base::Stack::StackSlot’ to ‘char*’ is ambiguous
  478 |                : slot;
      |                  ^~~~
../deps/v8/src/base/platform/platform.h:450:5: note: candidate: ‘v8::base::Stack::StackSlot::operator void*() const’ <near match>
  450 |     operator void*() const { return reinterpret_cast<void*>(value); }
      |     ^~~~~~~~
../deps/v8/src/base/platform/platform.h:450:5: note:   no known conversion from ‘void*’ to ‘char*’
../deps/v8/src/base/platform/platform.h:451:5: note: candidate: ‘v8::base::Stack::StackSlot::operator uintptr_t() const’ <near match>
  451 |     operator uintptr_t() const { return value; }  // NOLINT
      |     ^~~~~~~~
../deps/v8/src/base/platform/platform.h:451:5: note:   no known conversion from ‘uintptr_t’ {aka ‘long unsigned int’} to ‘char*’
In file included from ../deps/v8/src/libplatform/default-worker-threads-task-runner.h:14,
                 from ../deps/v8/src/libplatform/default-worker-threads-task-runner.cc:5:
../deps/v8/src/base/platform/platform.h: In static member function ‘static v8::base::Stack::StackSlot v8::base::Stack::GetRealStackAddressForSlot(v8::base::Stack::StackSlot)’:
../deps/v8/src/base/platform/platform.h:477:16: error: operands to ?: have different types ‘char*’ and ‘v8::base::Stack::StackSlot’
  476 |     return real_frame
      |            ~~~~~~~~~~
  477 |                ? (static_cast<char*>(real_frame) + kAsanRealFrameOffsetBytes)
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  478 |                : slot;
      |                ~~~~~~
../deps/v8/src/base/platform/platform.h:478:18: error: conversion from ‘v8::base::Stack::StackSlot’ to ‘char*’ is ambiguous
  478 |                : slot;
      |                  ^~~~
../deps/v8/src/base/platform/platform.h:450:5: note: candidate: ‘v8::base::Stack::StackSlot::operator void*() const’ <near match>
  450 |     operator void*() const { return reinterpret_cast<void*>(value); }
      |     ^~~~~~~~
../deps/v8/src/base/platform/platform.h:450:5: note:   no known conversion from ‘void*’ to ‘char*’
../deps/v8/src/base/platform/platform.h:451:5: note: candidate: ‘v8::base::Stack::StackSlot::operator uintptr_t() const’ <near match>
  451 |     operator uintptr_t() const { return value; }  // NOLINT
      |     ^~~~~~~~
../deps/v8/src/base/platform/platform.h:451:5: note:   no known conversion from ‘uintptr_t’ {aka ‘long unsigned int’} to ‘char*’
  g++ -o /home/simon/dev/vendor/node/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/delayed-task-queue.o ../deps/v8/src/libplatform/delayed-task-queue.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-DLEAK_SANITIZER' '-DV8_USE_ADDRESS_SANITIZER' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DV8_TARGET_ARCH_X64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_LINUX' '-DV8_EMBEDDER_STRING="-node.20"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DENABLE_MINOR_MC' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ATOMIC_MARKING_STATE' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DDISABLE_UNTRUSTED_CODE_MITIGATIONS' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_SNAPSHOT_COMPRESSION' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_ADVANCED_BIGINT_ALGORITHMS' -I../deps/v8 -I../deps/v8/include  -fno-omit-frame-pointer -fsanitize=address -fsanitize-address-use-after-scope -pthread -Wno-unused-parameter -m64 -Wno-return-type -fno-strict-aliasing -m64 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O2 -fno-rtti -fno-exceptions -std=gnu++14 -MMD -MF /home/simon/dev/vendor/node/out/Release/.deps//home/simon/dev/vendor/node/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/delayed-task-queue.o.d.raw   -c
make[1]: *** [tools/v8_gypfiles/v8_libplatform.target.mk:158: /home/simon/dev/vendor/node/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-worker-threads-task-runner.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [tools/v8_gypfiles/v8_libplatform.target.mk:158: /home/simon/dev/vendor/node/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-platform.o] Error 1
rm c811dc5233a4a706afbbaa1b86deb16c3131dc34.intermediate
make: *** [Makefile:113: node] Error 2

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildIssues and PRs related to build files or the CI.linuxIssues and PRs related to the Linux platform.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions