From: Max Reitz <mreitz@redhat.com>
To: famz@redhat.com, Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>,
qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2] mirror: drop local_err in mirror_complete
Date: Fri, 18 Oct 2013 19:59:30 +0200 [thread overview]
Message-ID: <52617702.1080906@redhat.com> (raw)
In-Reply-To: <20131018085150.GA27034@T430s.nay.redhat.com>
On 2013-10-18 10:51, Fam Zheng wrote:
> On Thu, 10/17 15:00, Kevin Wolf wrote:
>> Am 17.10.2013 um 14:49 hat Stefan Hajnoczi geschrieben:
>>> On Wed, Oct 16, 2013 at 08:56:49PM +0200, Max Reitz wrote:
>>>> On 2013-10-15 04:23, Fam Zheng wrote:
>>>> The reason I object it here is that error_propagate *currently* is a
>>>> no-op. But this may change in the future: I have already sent an RFC
>>>> which extends error_propagate so it can generate an error backtrace
>>>> if enabled through configure. If this (or something similar which
>>>> extends error_propagate to do more than basically just *errp =
>>>> local_err) is merged to/implemented in qemu later on, I believe we
>>>> want to call error_propagate in every function that touches an error
>>>> variable in order to generate a backtrace with maximum verbosity.
>>> Did you check if glib's backtrace(3) APIs can be used in error_set()
>>> instead of rolling our own backtrace?
>>>
>>> Also, what is the purpose of the backtrace? If the problem is that
>>> error messages don't identify unique errors, then we should fix that
>>> instead of relying on backtraces. For example, a function that opens
>>> two separate files shouldn't just fail with "File not found" since we
>>> don't know which of the two files wasn't found.
>> Mostly debugging, I guess. Even if you have unique error messages that
>> can only come from a single place, finding that single place by looking
>> at all called functions from a given QMP command can take quite a bit of
>> time. I can see it useful.
>>
>> And we don't even have the unique error messages yet, so we shouldn't
>> fall in the trap of rejecting an improvement because it's not perfect.
> Stacktrace already provides useful information for debugging, so I'm wondering
> if it makes sense to add support (a framework) to catch or dump the stacktrace,
> which can be used in error_set(), abort() and tracing framework.
Well, it seems like a hack to me, but if it works… Okay, that's why I
sent that series as an RFC with the comment “Since I do not know whether
I am the only one considering it useful in the first place, this is just
an RFC for now.” Now I know. ;-)
> Manually calling error_propagate as above sounds a unnecessary reinvention of
> this.
Then there's still the problem that I'm not the one who introduced
error_propagate. Someone obviously intended some purpose for it, so even
if it doesn't make a difference now (and my RFC is unneeded), I'd still
use it to propagate errors (instead of passing the error pointer). My
point being that there *is* a function for propagating errors and I
think we should therefore use it. The current qemu code seems to
alternate between the two alternatives, although using error_propagate
seems more common to me (at least, that was the result when I looked
through the code trying to decide whether to use it or not).
Generally, we need a proper discussion about whether error_propagate is
obsolete or not. Afterwards, we can adapt the current codebase to the
result of that discussion; but until then, I oppose changing existing
code without actual need to do so but personal preference.
Max
PS: I wrote my error_propagate RFC in part because I was disappointed
about how much of a no-op error_propagate actually is and was trying to
change that. ;-)
next prev parent reply other threads:[~2013-10-18 17:59 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-15 2:23 [Qemu-devel] [PATCH v2] mirror: drop local_err in mirror_complete Fam Zheng
2013-10-15 3:05 ` Eric Blake
2013-10-15 3:12 ` Fam Zheng
2013-10-16 18:56 ` Max Reitz
2013-10-17 12:49 ` Stefan Hajnoczi
2013-10-17 13:00 ` Kevin Wolf
2013-10-18 8:51 ` Fam Zheng
2013-10-18 17:59 ` Max Reitz [this message]
2013-10-19 8:05 ` Kevin Wolf
2013-10-19 20:02 ` Max Reitz
2013-10-19 8:50 ` Paolo Bonzini
2013-10-18 8:52 ` Stefan Hajnoczi
2013-10-17 12:51 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52617702.1080906@redhat.com \
--to=mreitz@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).