summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/support/err.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/support/err.c')
-rw-r--r--src/third_party/wiredtiger/src/support/err.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/third_party/wiredtiger/src/support/err.c b/src/third_party/wiredtiger/src/support/err.c
index 93c0af37328..8bfac250b3a 100644
--- a/src/third_party/wiredtiger/src/support/err.c
+++ b/src/third_party/wiredtiger/src/support/err.c
@@ -118,7 +118,13 @@ __handler_failure(WT_SESSION_IMPL *session,
handler->handle_error(handler, wt_session, error, s) == 0)
return;
+ /*
+ * In case there is a failure in the default error handler, make sure
+ * we don't recursively try to report *that* error.
+ */
+ session->event_handler = &__event_handler_default;
(void)__handle_error_default(NULL, wt_session, error, s);
+ session->event_handler = handler;
}
/*
@@ -149,6 +155,7 @@ __wt_event_handler_set(WT_SESSION_IMPL *session, WT_EVENT_HANDLER *handler)
int
__wt_eventv(WT_SESSION_IMPL *session, bool msg_event, int error,
const char *file_name, int line_number, const char *fmt, va_list ap)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
{
WT_EVENT_HANDLER *handler;
WT_DECL_RET;
@@ -308,6 +315,7 @@ __wt_eventv(WT_SESSION_IMPL *session, bool msg_event, int error,
*/
void
__wt_err(WT_SESSION_IMPL *session, int error, const char *fmt, ...)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
WT_GCC_FUNC_ATTRIBUTE((format (printf, 3, 4)))
{
va_list ap;
@@ -317,7 +325,7 @@ __wt_err(WT_SESSION_IMPL *session, int error, const char *fmt, ...)
* an error value to return.
*/
va_start(ap, fmt);
- (void)__wt_eventv(session, false, error, NULL, 0, fmt, ap);
+ WT_IGNORE_RET(__wt_eventv(session, false, error, NULL, 0, fmt, ap));
va_end(ap);
}
@@ -327,6 +335,7 @@ __wt_err(WT_SESSION_IMPL *session, int error, const char *fmt, ...)
*/
void
__wt_errx(WT_SESSION_IMPL *session, const char *fmt, ...)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
WT_GCC_FUNC_ATTRIBUTE((format (printf, 2, 3)))
{
va_list ap;
@@ -336,7 +345,7 @@ __wt_errx(WT_SESSION_IMPL *session, const char *fmt, ...)
* an error value to return.
*/
va_start(ap, fmt);
- (void)__wt_eventv(session, false, 0, NULL, 0, fmt, ap);
+ WT_IGNORE_RET(__wt_eventv(session, false, 0, NULL, 0, fmt, ap));
va_end(ap);
}
@@ -392,6 +401,7 @@ info_msg(WT_SESSION_IMPL *session, const char *fmt, va_list ap)
*/
int
__wt_msg(WT_SESSION_IMPL *session, const char *fmt, ...)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
WT_GCC_FUNC_ATTRIBUTE((format (printf, 2, 3)))
{
WT_DECL_RET;
@@ -468,6 +478,7 @@ __wt_progress(WT_SESSION_IMPL *session, const char *s, uint64_t v)
void
__wt_assert(WT_SESSION_IMPL *session,
int error, const char *file_name, int line_number, const char *fmt, ...)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
WT_GCC_FUNC_ATTRIBUTE((format (printf, 5, 6)))
#ifdef HAVE_DIAGNOSTIC
WT_GCC_FUNC_ATTRIBUTE((noreturn))
@@ -476,8 +487,8 @@ __wt_assert(WT_SESSION_IMPL *session,
va_list ap;
va_start(ap, fmt);
- (void)__wt_eventv(
- session, false, error, file_name, line_number, fmt, ap);
+ WT_IGNORE_RET(__wt_eventv(
+ session, false, error, file_name, line_number, fmt, ap));
va_end(ap);
#ifdef HAVE_DIAGNOSTIC
@@ -492,6 +503,7 @@ __wt_assert(WT_SESSION_IMPL *session,
*/
int
__wt_panic(WT_SESSION_IMPL *session)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
{
F_SET(S2C(session), WT_CONN_PANIC);
__wt_err(session, WT_PANIC, "the process must exit and restart");
@@ -515,6 +527,7 @@ __wt_panic(WT_SESSION_IMPL *session)
*/
int
__wt_illegal_value(WT_SESSION_IMPL *session, const char *name)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
{
__wt_errx(session, "%s%s%s",
name == NULL ? "" : name, name == NULL ? "" : ": ",
@@ -535,6 +548,7 @@ __wt_illegal_value(WT_SESSION_IMPL *session, const char *name)
*/
int
__wt_object_unsupported(WT_SESSION_IMPL *session, const char *uri)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
{
WT_RET_MSG(session, ENOTSUP, "unsupported object operation: %s", uri);
}
@@ -546,6 +560,7 @@ __wt_object_unsupported(WT_SESSION_IMPL *session, const char *uri)
*/
int
__wt_bad_object_type(WT_SESSION_IMPL *session, const char *uri)
+ WT_GCC_FUNC_ATTRIBUTE((cold))
{
if (WT_PREFIX_MATCH(uri, "backup:") ||
WT_PREFIX_MATCH(uri, "colgroup:") ||