#43050·grpc

[CORE] crash of grpc Metric name has already been registered with ASAN enabled

Author: AlexABorisovCreated Jul 22, 2026Updated Sep 10, 2026
Labelskind/buglang/corepriority/P2untriaged

What version of gRPC and what language are you using?

1.82.1 c++

What operating system (Linux, Windows,...) and version?

Ubuntu 24.04.4 LTS \n \l

What runtime / compiler are you using (e.g. python version or version of gcc)

gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

What did you do?

Compiling project with grpc 1.82.1 and running asan cheks

What did you expect to see?

Normal application start

What did you see instead?

#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
#1  __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007fffed84527e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4  0x00007fffed8288ff in __GI_abort () at ./stdlib/abort.c:79
#5  0x00007ffff36ce5c7 in grpc_core::Crash (message=..., location=...) at /ext/fastcache/cmake-build-debug/_deps/grpc-src/src/core/util/crash.cc:30
#6  0x00007ffff4dd96b5 in grpc_core::GlobalInstrumentsRegistry::RegisterInstrument (value_type=value_type@entry=grpc_core::GlobalInstrumentsRegistry::ValueType::kUInt64, instrument_type=instrument_type@entry=grpc_core::GlobalInstrumentsRegistry::InstrumentType::kCounter, name=..., description=..., unit="{resource}", enable_by_default=<optimized out>, label_keys=..., optional_label_keys=...) at /ext/fastcache/cmake-build-debug/_deps/grpc-src/src/core/telemetry/metrics.cc:49
#7  0x00007ffff4f53351 in grpc_core::GlobalInstrumentsRegistry::RegistrationBuilder<(grpc_core::GlobalInstrumentsRegistry::ValueType)2, (grpc_core::GlobalInstrumentsRegistry::InstrumentType)1, 3ul, 0ul>::Build (this=this@entry=0x7fffffffdb20) at /ext/fastcache/cmake-build-debug/_deps/grpc-src/src/core/telemetry/metrics.h:127
#8  0x00007ffff370fa39 in __static_initialization_and_destruction_0 () at /ext/fastcache/cmake-build-debug/_deps/grpc-src/src/core/xds/grpc/xds_client_grpc.cc:105
#9  0x00007ffff3711c4a in _GLOBAL__sub_I_xds_client_grpc.cc(void) () at /ext/fastcache/cmake-build-debug/_deps/grpc-src/src/core/xds/grpc/xds_client_grpc.cc:488
#10 0x00007ffff7fca71f in call_init (l=<optimized out>, argc=argc@entry=3, argv=argv@entry=0x7fffffffdde8, env=env@entry=0x7fffffffde08) at ./elf/dl-init.c:74
#11 0x00007ffff7fca824 in call_init (env=<optimized out>, argv=<optimized out>, argc=<optimized out>, l=<optimized out>) at ./elf/dl-init.c:120
#12 _dl_init (main_map=0x7ffff7ffe2e0, argc=3, argv=0x7fffffffdde8, env=0x7fffffffde08) at ./elf/dl-init.c:121
#13 0x00007ffff7fe45a0 in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#14 0x0000000000000003 in ?? ()
#15 0x00007fffffffe295 in ?? ()
#16 0x00007fffffffe2dd in ?? ()
#17 0x00007fffffffe2ea in ?? ()
#18 0x0000000000000000 in ?? ()

See TROUBLESHOOTING.md for how to diagnose problems better.

Anything else we should know about your project / environment?

Compiling with Debug config

add_compile_options("$<$<CONFIG:DEBUG>:-g>")
add_compile_options("$<$<CONFIG:DEBUG>:-O3>") # tried wiht 01 02 03
add_compile_options("$<$<CONFIG:DEBUG>:-msse4.2>")
add_compile_options("$<$<CONFIG:DEBUG>:-mbmi2>")
add_compile_options("$<$<CONFIG:DEBUG>:-mbmi>")
add_compile_options("$<$<CONFIG:DEBUG>:-fno-plt>")
add_compile_options("$<$<CONFIG:DEBUG>:-fsanitize=address>")
add_compile_options("$<$<CONFIG:DEBUG>:-ftls-model=initial-exec>")
add_compile_options("$<$<CONFIG:DEBUG>:-fno-omit-frame-pointer>")

Application has 3 grpc services they should start sequentially Compiling and run with RELEASE no problems observed

add_compile_options("$<$<CONFIG:RELEASE>:-O3>")
add_compile_options("$<$<CONFIG:RELEASE>:-msse4.2>")
add_compile_options("$<$<CONFIG:RELEASE>:-mbmi2>")
add_compile_options("$<$<CONFIG:RELEASE>:-mbmi>")
add_compile_options("$<$<CONFIG:RELEASE>:-g>")
add_compile_options("$<$<CONFIG:RELEASE>:-fno-plt>")
add_compile_options("$<$<CONFIG:RELEASE>:-funroll-loops>")
add_compile_options("$<$<CONFIG:RELEASE>:-fprefetch-loop-arrays>")
add_compile_options("$<$<CONFIG:RELEASE>:-ftls-model=initial-exec>") # Ускоряем thread_local
add_compile_options("$<$<CONFIG:RELEASE>:-fno-semantic-interposition>")
add_compile_options("$<$<CONFIG:RELEASE>:-falign-functions=32>")
add_compile_options("$<$<CONFIG:RELEASE>:-falign-loops=32>")
add_compile_options("$<$<CONFIG:RELEASE>:-fno-omit-frame-pointer>")
add_compile_options("$<$<CONFIG:RELEASE>:-fstrict-aliasing>")

grpc integration via cmake

include(FetchContent)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

set(CMAKE_POLICY_VERSION_MINIMUM 3.5)


cmake_policy(SET CMP0069 NEW)
set(RE2_BUILD_TESTING OFF CACHE BOOL "" FORCE)

set(gRPC_ABSL_PROVIDER "module" CACHE STRING "" FORCE)
set(gRPC_PROTOBUF_PROVIDER "module" CACHE STRING "" FORCE)
set(gRPC_RE2_PROVIDER "module" CACHE STRING "" FORCE)


set(gRPC_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(gRPC_BENCHMARK_PROVIDER "none" CACHE STRING "" FORCE)
set(gRPC_BUILD_CSHARP_EXT OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_PYTHON_EXT OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_CSHARP_PLUGIN OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_NODE_PLUGIN OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_PHP_PLUGIN OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_PYTHON_PLUGIN OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_RUBY_PLUGIN OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPC_CPP_PLUGIN ON CACHE BOOL "" FORCE)
set(protobuf_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_GRPCPP_OTEL OFF CACHE BOOL "" FORCE)
set(gRPC_BUILD_XDS_CONFIG OFF CACHE BOOL "" FORCE)
set(gRPC_ENABLE_STATS OFF CACHE BOOL "" FORCE)
set(gRPC_XDS_USER_AGENT_IS_CSHARP OFF CACHE BOOL "" FORCE)

macro(original_install)
    _install(${ARGV})
endmacro()

macro(install)
endmacro()

FetchContent_Declare(
        gRPC
        GIT_REPOSITORY https://github.com/grpc/grpc.git
        GIT_TAG        v1.82.1
)
FetchContent_MakeAvailable(gRPC)

macro(install)
    original_install(${ARGV})
endmacro()

if(NOT TARGET gRPC::grpc++)
    add_library(gRPC::grpc++ ALIAS grpc++)
endif()

if(NOT TARGET protobuf::libprotobuf)
    add_library(protobuf::libprotobuf ALIAS libprotobuf)
endif()

if(NOT TARGET protobuf::protoc)
    add_library(protobuf::protoc ALIAS protoc)
endif()

In general i need to run asan on my project. I suspect some problems because of ASAN. Issue reproduced with ASAN only