Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Segmentation fault during exit in "opentelemetry::v1::context::RuntimeContext::GetCurrent ()" in multithread log export

Aperta
#3,766 6 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@marcalff ci sta già lavorando.

Dal 1/12/2025.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

bug Stale triage/accepted

Describe your environment
linux, ubuntu 22.04, all builds, main branch

Steps to reproduce

Create 2 threads, both are exporting logs in a loop, when program exits, we hit crash with this stack trace:

Thread 4 "struct" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff6741640 (LWP 865935)]
0x000055555590e308 in opentelemetry::v1::context::RuntimeContext::GetCurrent () at /tmp/third-party/opentelemetry-cpp/api/include/opentelemetry/context/runtime_context.h:93
93        static Context GetCurrent() noexcept { return GetRuntimeContextStorage()->GetCurrent(); }
(gdb) bt
#0  0x000055555590e308 in opentelemetry::v1::context::RuntimeContext::GetCurrent ()
    at /tmp/third-party/opentelemetry-cpp/api/include/opentelemetry/context/runtime_context.h:93
#1  0x000055555590d744 in opentelemetry::v1::sdk::logs::Logger::CreateLogRecord (this=0x555556924830)
    at /tmp/third-party/opentelemetry-cpp/sdk/src/logs/logger.cc:70

What is the expected behavior?
Should have clear shutdown

What is the actual behavior?
Segmentation fault

Additional context
I use OTLP http exporter, but I don't think this is the problem, attached the code example here:

  otlp::OtlpHttpLogRecordExporterOptions expOptions;
  expOptions.url = geturl();
  expOptions.content_type = otlp::HttpRequestContentType::kBinary;
  expOptions.ssl_insecure_skip_verify = true;
  auto exporter = otlp::OtlpHttpLogRecordExporterFactory::Create(expOptions);
  auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter));

  std::shared_ptr<logs_sdk::LoggerProvider> loggerProvider(
      logs_sdk::LoggerProviderFactory::Create(std::move(processor)));

  const std::shared_ptr<logs::LoggerProvider> &apiProvider = loggerProvider;
  logs::Provider::SetLoggerProvider(apiProvider);

Both Thread 1 and Thread 2:

  auto loggerProvider = logs::Provider::GetLoggerProvider();
  logger_ = loggerProvider->GetLogger(
        "log",
        "log",
        "1.0.0",
        schema_url);

  for (int i =0; i < 1000; i++) {
    auto sample = logger_->CreateLogRecord();
    logger_->EmitLogRecord(std::move(sample));
    std::this_thread::sleep_for(std::chrono::milliseconds(10));
  }

Lingua principale
C++
Stelle
1.4k
Fork
647
Merge medio
1g 10h
PR unite (30g)
73

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di open-telemetry/opentelemetry-cpp

Tutte le issue di open-telemetry/opentelemetry-cpp

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.