Skip to content

v0.8.0 throws std::bad_alloc exception #741

@lxh-ob

Description

@lxh-ob

Hello Together,

We sometimes get an std::bad_alloc exception when the OS fails to allocate memory.

the coredump backtrace is below.

Is there any ways to prevent process coredump?

Or, would you please catch the exeception and ignore it? It would be better to keep the program running continuously rather than terminating it due to metric issues

The version is v0.8.0. And it seems that other versions will also may trigger the exception.

?? ??:0
?? ??:0
?? ??:0
__gnu_cxx::__verbose_terminate_handler() [clone .cold] at vterminate.o:?
__cxxabiv1::__terminate(void (*)()) at ??:?
std::terminate() at ??:?
__cxa_rethrow at ??:?
prometheus::ClientMetric* std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, prometheus::ClientMetric*>(__gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, __gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, prometheus::ClientMetric*) at ??:?
prometheus::ClientMetric* std::uninitialized_copy<__gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, prometheus::ClientMetric*>(__gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, __gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, prometheus::ClientMetric*) at ??:?
prometheus::ClientMetric* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, prometheus::ClientMetric*, prometheus::ClientMetric>(__gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, __gnu_cxx::__normal_iterator<prometheus::ClientMetric const*, std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > >, prometheus::ClientMetric*, std::allocator<prometheus::ClientMetric>&) at ??:?
std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> >::vector(std::vector<prometheus::ClientMetric, std::allocator<prometheus::ClientMetric> > const&) at ??:?
prometheus::MetricFamily::MetricFamily(prometheus::MetricFamily const&) at ??:?
prometheus::Family<prometheus::Counter>::Collect() at ??:?
void prometheus::(anonymous namespace)::CollectAll<std::vector<std::unique_ptr<prometheus::Family<prometheus::Counter>, std::default_delete<prometheus::Family<prometheus::Counter> > >, std::allocator<std::unique_ptr<prometheus::Family<prometheus::Counter>, std::default_delete<prometheus::Family<prometheus::Counter> > > > > >(std::vector<prometheus::MetricFamily, std::allocator<prometheus::MetricFamily> >&, std::vector<std::unique_ptr<prometheus::Family<prometheus::Counter>, std::default_delete<prometheus::Family<prometheus::Counter> > >, std::allocator<std::unique_ptr<prometheus::Family<prometheus::Counter>, std::default_delete<prometheus::Family<prometheus::Counter> > > > > const&) at registry.cc:?
prometheus::Registry::Collect() at ??:?
prometheus::detail::MetricsHandler::CollectMetrics() const at ??:?
prometheus::detail::MetricsHandler::handleGet(CivetServer*, mg_connection*) at ??:?
CivetServer::requestHandler(mg_connection*, void*) at ??:?
handle_request at civetweb.c:?
process_new_connection at civetweb.c:?
worker_thread_run at civetweb.c:?
worker_thread at civetweb.c:?
?? ??:0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions