opentelemetry-cpp icon indicating copy to clipboard operation
opentelemetry-cpp copied to clipboard

std::thread crashing when ending Span and or whereever new std::thread is writtern in library(.so)

Open bharat2002 opened this issue 5 months ago • 2 comments

I am using opentelemetry as a shared library in my project. It is working perfectly when I am linking it dynamically in a exe but new std::thread is crashing when I am using it inside a shared library project.
Built opentelemetry and shared library(.so) project with c++ 17 dialect . Using a otlp http exporter Attaching call stack when calling end on a simple span processor. #0 0x0000000000000000 in ?? () #1 0x00007ffff78f8e89 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_deletestd::thread::_State >, void ()()) () from /lib64/libstdc++.so.6 #2 0x00007ffff4121c80 in std::thread::thread<opentelemetry::v1::ext::http::client::curl::HttpClient::MaybeSpawnBackgroundThread()::<lambda(opentelemetry::v1::ext::http::client::curl::HttpClient)>, opentelemetry::v1::ext::http::client::curl::HttpClient*>(opentelemetry::v1::ext::http::client::curl::HttpClient::<lambda(opentelemetry::v1::ext::http::client::curl::HttpClient*)> &&) (this=0x7ffefc00da00, __f=...) at /usr/include/c++/8/thread:131 #3 0x00007ffff4120bfc in opentelemetry::v1::ext::http::client::curl::HttpClient::MaybeSpawnBackgroundThread (this=0x7192d0) at /home/bharat/open-tele/opentelemetry-cpp/ext/src/http/client/curl/http_client_curl.cc:630 #4 0x00007ffff411f83d in opentelemetry::v1::ext::http::client::curl::Session::SendRequest (this=0x7ffefc008810, callback=std::shared_ptropentelemetry::v1::ext::http::client::EventHandler (use count 4, weak count 0) = {...}) at /home/bharat/open-tele/opentelemetry-cpp/ext/src/http/client/curl/http_client_curl.cc:231 #5 0x00007ffff0aad43c in opentelemetry::v1::exporter::otlp::OtlpHttpClient::addSession (this=0x718f20, session_data=...) at /home/bharat/open-tele/opentelemetry-cpp/exporters/otlp/src/otlp_http_client.cc:1029 #6 0x00007ffff0aabb02 in opentelemetry::v1::exporter::otlp::OtlpHttpClient::Export(google::protobuf::Message const&, std::function<bool (opentelemetry::v1::sdk::common::ExportResult)>&&, unsigned long) (this=0x718f20, message=..., result_callback=..., max_running_requests=0) at /home/bharat/open-tele/opentelemetry-cpp/exporters/otlp/src/otlp_http_client.cc:760 #7 0x00007ffff0aab956 in opentelemetry::v1::exporter::otlp::OtlpHttpClient::Export (this=0x718f20, message=...) at /home/bharat/open-tele/opentelemetry-cpp/exporters/otlp/src/otlp_http_client.cc:726 #8 0x00007ffff3e8858d in opentelemetry::v1::exporter::otlp::OtlpHttpExporter::Export (this=0x77bc90, spans=...) at /home/bharat/open-tele/opentelemetry-cpp/exporters/otlp/src/otlp_http_exporter.cc:191 #9 0x00007ffff3c12e55 in opentelemetry::v1::sdk::trace::SimpleSpanProcessor::OnEnd (this=0x782b90, span=...) at /home/bharat/open-tele/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/simple_processor.h:59 #10 0x00007ffff3bc6337 in opentelemetry::v1::sdk::trace::MultiSpanProcessor::OnEnd (this=0x718e80, span=...) at /home/bharat/open-tele/opentelemetry-cpp/sdk/include/opentelemetry/sdk/trace/multi_span_processor.h:103 #11 0x00007ffff3c0a87c in opentelemetry::v1::sdk::trace::Span::End (this=0x7ffefc002e80, options=...) at /home/bharat/open-tele/opentelemetry-cpp/sdk/src/trace/span.cc:221

The below call stack is when creating a batch span processor

#0 0x0000000000000000 in ?? () #1 0x00007ffff78f8e89 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_deletestd::thread::_State >, void ()()) () from /lib64/libstdc++.so.6 #2 0x00007ffff3c0ed26 in std::thread::thread<void (opentelemetry::v1::sdk::trace::BatchSpanProcessor::)(), opentelemetry::v1::sdk::trace::BatchSpanProcessor*, void> (this=0x7fffffffc710, __f=@0x7fffffffc720: (void (opentelemetry::v1::sdk::trace::BatchSpanProcessor::*)(opentelemetry::v1::sdk::trace::BatchSpanProcessor * const)) 0x7ffff3c0d516 opentelemetry::v1::sdk::trace::BatchSpanProcessor::DoBackgroundWork()) at /usr/include/c++/8/thread:131 #3 0x00007ffff3c0cd50 in opentelemetry::v1::sdk::trace::BatchSpanProcessor::BatchSpanProcessor (this=0x77ee90, exporter=..., options=..., runtime_options=...) at /home/bharat/open-tele/opentelemetry-cpp/sdk/src/trace/batch_span_processor.cc:69 #4 0x00007ffff3c12b36 in opentelemetry::v1::sdk::trace::BatchSpanProcessorFactory::Create (exporter=..., options=..., runtime_options=...) at /home/bharat/open-tele/opentelemetry-cpp/sdk/src/trace/batch_span_processor_factory.cc:35 #5 0x00007ffff3c12ab2 in opentelemetry::v1::sdk::trace::BatchSpanProcessorFactory::Create (exporter=..., options=...) at /home/bharat/open-tele/opentelemetry-cpp/sdk/src/trace/batch_span_processor_factory.cc:26

bharat2002 avatar May 08 '25 06:05 bharat2002