From: Kefu Chai Date: Sat, 29 Jun 2019 11:50:18 +0000 (+0800) Subject: crimson/common: implement "__ceph_abortf()" X-Git-Tag: v15.1.0~2343^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=02388911ae097284057183a66758e3a550beefda;p=ceph-ci.git crimson/common: implement "__ceph_abortf()" the macro of `ceph_abort_msgf()` is implemented using it. Signed-off-by: Kefu Chai --- 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(); + } }