qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16
@ 2016-03-16 10:04 Markus Armbruster
  2016-03-16 10:04 ` [Qemu-devel] [PULL 1/1] error: ensure errno detail is printed with error_abort Markus Armbruster
  2016-03-16 12:35 ` [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16 Peter Maydell
  0 siblings, 2 replies; 3+ messages in thread
From: Markus Armbruster @ 2016-03-16 10:04 UTC (permalink / raw)
  To: qemu-devel

The following changes since commit a6cdb77f816961f929d7934643febd2852230135:

  Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into staging (2016-03-15 17:09:52 +0000)

are available in the git repository at:

  git://repo.or.cz/qemu/armbru.git tags/pull-error-2016-03-16

for you to fetch changes up to 20e2dec14954568848ad74e73aee9b3aeedd6584:

  error: ensure errno detail is printed with error_abort (2016-03-16 10:55:51 +0100)

----------------------------------------------------------------
Error reporting patches for 2016-03-16

----------------------------------------------------------------
Daniel P. Berrange (1):
      error: ensure errno detail is printed with error_abort

 util/error.c | 42 ++++++++++++++++++++----------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

-- 
2.4.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PULL 1/1] error: ensure errno detail is printed with error_abort
  2016-03-16 10:04 [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16 Markus Armbruster
@ 2016-03-16 10:04 ` Markus Armbruster
  2016-03-16 12:35 ` [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16 Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Markus Armbruster @ 2016-03-16 10:04 UTC (permalink / raw)
  To: qemu-devel

From: "Daniel P. Berrange" <berrange@redhat.com>

When &error_abort is passed in, the error reporting code
will print the current error message and then abort() the
process. Unfortunately at the time it aborts, we've not
yet appended the errno detail. This makes debugging certain
problems significantly harder as the log is incomplete.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <1457544504-8548-22-git-send-email-berrange@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 util/error.c | 42 ++++++++++++++++++++----------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/util/error.c b/util/error.c
index 471b8b3..47f93af 100644
--- a/util/error.c
+++ b/util/error.c
@@ -44,7 +44,8 @@ static void error_handle_fatal(Error **errp, Error *err)
 
 static void error_setv(Error **errp,
                        const char *src, int line, const char *func,
-                       ErrorClass err_class, const char *fmt, va_list ap)
+                       ErrorClass err_class, const char *fmt, va_list ap,
+                       const char *suffix)
 {
     Error *err;
     int saved_errno = errno;
@@ -56,6 +57,11 @@ static void error_setv(Error **errp,
 
     err = g_malloc0(sizeof(*err));
     err->msg = g_strdup_vprintf(fmt, ap);
+    if (suffix) {
+        char *msg = err->msg;
+        err->msg = g_strdup_printf("%s: %s", msg, suffix);
+        g_free(msg);
+    }
     err->err_class = err_class;
     err->src = src;
     err->line = line;
@@ -74,7 +80,7 @@ void error_set_internal(Error **errp,
     va_list ap;
 
     va_start(ap, fmt);
-    error_setv(errp, src, line, func, err_class, fmt, ap);
+    error_setv(errp, src, line, func, err_class, fmt, ap, NULL);
     va_end(ap);
 }
 
@@ -85,7 +91,7 @@ void error_setg_internal(Error **errp,
     va_list ap;
 
     va_start(ap, fmt);
-    error_setv(errp, src, line, func, ERROR_CLASS_GENERIC_ERROR, fmt, ap);
+    error_setv(errp, src, line, func, ERROR_CLASS_GENERIC_ERROR, fmt, ap, NULL);
     va_end(ap);
 }
 
@@ -94,7 +100,6 @@ void error_setg_errno_internal(Error **errp,
                                int os_errno, const char *fmt, ...)
 {
     va_list ap;
-    char *msg;
     int saved_errno = errno;
 
     if (errp == NULL) {
@@ -102,15 +107,10 @@ void error_setg_errno_internal(Error **errp,
     }
 
     va_start(ap, fmt);
-    error_setv(errp, src, line, func, ERROR_CLASS_GENERIC_ERROR, fmt, ap);
+    error_setv(errp, src, line, func, ERROR_CLASS_GENERIC_ERROR, fmt, ap,
+               os_errno != 0 ? strerror(os_errno) : NULL);
     va_end(ap);
 
-    if (os_errno != 0) {
-        msg = (*errp)->msg;
-        (*errp)->msg = g_strdup_printf("%s: %s", msg, strerror(os_errno));
-        g_free(msg);
-    }
-
     errno = saved_errno;
 }
 
@@ -174,24 +174,22 @@ void error_setg_win32_internal(Error **errp,
                                int win32_err, const char *fmt, ...)
 {
     va_list ap;
-    char *msg1, *msg2;
+    char *suffix = NULL;
 
     if (errp == NULL) {
         return;
     }
 
-    va_start(ap, fmt);
-    error_setv(errp, src, line, func, ERROR_CLASS_GENERIC_ERROR, fmt, ap);
-    va_end(ap);
-
     if (win32_err != 0) {
-        msg1 = (*errp)->msg;
-        msg2 = g_win32_error_message(win32_err);
-        (*errp)->msg = g_strdup_printf("%s: %s (error: %x)", msg1, msg2,
-                                       (unsigned)win32_err);
-        g_free(msg2);
-        g_free(msg1);
+        suffix = g_win32_error_message(win32_err);
     }
+
+    va_start(ap, fmt);
+    error_setv(errp, src, line, func, ERROR_CLASS_GENERIC_ERROR,
+               fmt, ap, suffix);
+    va_end(ap);
+
+    g_free(suffix);
 }
 
 #endif
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16
  2016-03-16 10:04 [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16 Markus Armbruster
  2016-03-16 10:04 ` [Qemu-devel] [PULL 1/1] error: ensure errno detail is printed with error_abort Markus Armbruster
@ 2016-03-16 12:35 ` Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2016-03-16 12:35 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: QEMU Developers

On 16 March 2016 at 10:04, Markus Armbruster <armbru@redhat.com> wrote:
> The following changes since commit a6cdb77f816961f929d7934643febd2852230135:
>
>   Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into staging (2016-03-15 17:09:52 +0000)
>
> are available in the git repository at:
>
>   git://repo.or.cz/qemu/armbru.git tags/pull-error-2016-03-16
>
> for you to fetch changes up to 20e2dec14954568848ad74e73aee9b3aeedd6584:
>
>   error: ensure errno detail is printed with error_abort (2016-03-16 10:55:51 +0100)
>
> ----------------------------------------------------------------
> Error reporting patches for 2016-03-16

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-03-16 12:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-16 10:04 [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16 Markus Armbruster
2016-03-16 10:04 ` [Qemu-devel] [PULL 1/1] error: ensure errno detail is printed with error_abort Markus Armbruster
2016-03-16 12:35 ` [Qemu-devel] [PULL 0/1] Error reporting patches for 2016-03-16 Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).