Skip to content

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

@bharat2002

Description

@bharat2002

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Staletriage/needs-informationIndicates an issue needs more information in order to work on it.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions