Igor Mammedov <[email protected]> writes:

> On Wed, 29 Jun 2016 14:49:59 +0200
> Markus Armbruster <[email protected]> wrote:
>
>> Igor Mammedov <[email protected]> writes:
>> 
>> > replace mainly useless exit(1) on fatal error path with
>> > abort(), so that it would be possible to generate core
>> > dump, that could be used to analyse cause of problem.
>> >
>> > Signed-off-by: Igor Mammedov <[email protected]>
>> > ---
>> >  hw/virtio/virtio.c | 24 ++++++++++++------------
>> >  1 file changed, 12 insertions(+), 12 deletions(-)
>> >
>> > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
>> > index 7ed06ea..9d3ac72 100644
>> > --- a/hw/virtio/virtio.c
>> > +++ b/hw/virtio/virtio.c
>> > @@ -315,7 +315,7 @@ static int virtqueue_num_heads(VirtQueue *vq,
>> > unsigned int idx) if (num_heads > vq->vring.num) {
>> >          error_report("Guest moved used index from %u to %u",
>> >                       idx, vq->shadow_avail_idx);
>> > -        exit(1);
>> > +        abort();
>> 
>> What's wrong with a simple assert(num_heads <= vq->vring.num)?
> Nothing, it should work to as we don't use NDEBUG.
> My intent was to make core dump at the point and no to remove
> error message
> (though message's mostly useless for me as virtio is unfamiliar to me
> and  I had to dig into core dump to analyze issue).

Understand.

The solution we really want is of course putting the device in an error
state, where it stays until reset.

Reply via email to