Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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