From 02388911ae097284057183a66758e3a550beefda Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sat, 29 Jun 2019 19:50:18 +0800 Subject: [PATCH] crimson/common: implement "__ceph_abortf()" the macro of `ceph_abort_msgf()` is implemented using it. Signed-off-by: Kefu Chai --- src/crimson/common/assert.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/crimson/common/assert.cc b/src/crimson/common/assert.cc index b5f715d4508..c5b4f6235ef 100644 --- a/src/crimson/common/assert.cc +++ b/src/crimson/common/assert.cc @@ -39,8 +39,9 @@ namespace ceph { seastar::logger& logger = ceph::get_logger(0); logger.error("{}:{} : In function '{}', ceph_assert(%s)\n" - "{}", + "{}\n{}\n", file, line, func, assertion, + buf, seastar::current_backtrace()); std::cout << std::flush; abort(); @@ -57,4 +58,24 @@ namespace ceph { std::cout << std::flush; abort(); } + + [[gnu::cold]] void __ceph_abortf(const char* file, int line, + const char* func, const char* fmt, + ...) + { + char buf[8096]; + va_list args; + va_start(args, fmt); + std::vsnprintf(buf, sizeof(buf), fmt, args); + va_end(args); + + seastar::logger& logger = ceph::get_logger(0); + logger.error("{}:{} : In function '{}', abort()\n" + "{}\n{}\n", + file, line, func, + buf, + seastar::current_backtrace()); + std::cout << std::flush; + abort(); + } } -- 2.39.5