Skip to content

process-exit SIGABRT when the agent was never explicitly shut down #64

Description

@dwkang

pinpoint::AgentImpl::~AgentImpl() (agent.cpp:261) lets a C++ exception escape during __cxa_finalize when the agent was never explicitly shut down. C++ then calls std::terminate() → abort() → SIGABRT.

20  dyld                            start + 2924
19  libsystem_c.dylib               exit + 44
18  libsystem_c.dylib               __cxa_finalize_ranges + 476          ← static dtors fire
17  libpinpoint_cpp.1.1.0.dylib     std::shared_ptr<AgentImpl>::~shared_ptr
16  libpinpoint_cpp.1.1.0.dylib     std::shared_ptr<AgentImpl>::~shared_ptr
15  libpinpoint_cpp.1.1.0.dylib     __shared_weak_count::__release_shared
14  libpinpoint_cpp.1.1.0.dylib     __shared_count::__release_shared
13  libpinpoint_cpp.1.1.0.dylib     __shared_ptr_emplace<AgentImpl>::__on_zero_shared
12  libpinpoint_cpp.1.1.0.dylib     __shared_ptr_emplace<AgentImpl>::__on_zero_shared_impl
11  libpinpoint_cpp.1.1.0.dylib     allocator_traits<allocator<AgentImpl>>::destroy
10  libpinpoint_cpp.1.1.0.dylib     allocator<AgentImpl>::destroy
 9  libpinpoint_cpp.1.1.0.dylib     pinpoint::AgentImpl::~AgentImpl() + 28   (agent.cpp:259)
 8  libpinpoint_cpp.1.1.0.dylib     pinpoint::AgentImpl::~AgentImpl() + 508  (agent.cpp:261)  ← throws here
 7  libc++abi.dylib                 std::terminate()
 6  libc++abi.dylib                 std::__terminate(...)
 5  libobjc.A.dylib                 _objc_terminate()
 4  libc++abi.dylib                 demangling_terminate_handler()
 3  libc++abi.dylib                 abort_message
 2  libsystem_c.dylib               abort + 128                          → SIGABRT

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions