From: Jan Kiszka <jan.kiszka@web.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [5620] Add safety net against potential infinite loop
Date: Wed, 05 Nov 2008 21:18:57 +0100 [thread overview]
Message-ID: <4911FFB1.7070209@web.de> (raw)
In-Reply-To: <E1KxMjX-0000XR-0H@cvs.savannah.gnu.org>
[-- Attachment #1: Type: text/plain, Size: 1842 bytes --]
malc wrote:
> Revision: 5620
> http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5620
> Author: malc
> Date: 2008-11-04 14:18:13 +0000 (Tue, 04 Nov 2008)
>
> Log Message:
> -----------
> Add safety net against potential infinite loop
>
> cpu_interrupt might be called while translating the TB, but before it
> is linked into a potentially infinite loop and becomes env->current_tb.
>
> Currently this can (and does) cause huge problems only when using
> dyntick clock, with other (periodic) clocks host_alarm_handler will
> eventually be executed resulting in a call to cpu_interrupt which will
> reset the recursion of running TB and the damage is "only" latency.
>
> Modified Paths:
> --------------
> trunk/cpu-exec.c
>
> Modified: trunk/cpu-exec.c
> ===================================================================
> --- trunk/cpu-exec.c 2008-11-04 13:17:17 UTC (rev 5619)
> +++ trunk/cpu-exec.c 2008-11-04 14:18:13 UTC (rev 5620)
> @@ -623,6 +623,14 @@
> }
> spin_unlock(&tb_lock);
> env->current_tb = tb;
> +
> + /* cpu_interrupt might be called while translating the
> + TB, but before it is linked into a potentially
> + infinite loop and becomes env->current_tb. Avoid
> + starting execution if there is a pending interrupt. */
> + if (unlikely (env->interrupt_request & CPU_INTERRUPT_EXIT))
> + env->current_tb = NULL;
> +
> while (env->current_tb) {
> tc_ptr = tb->tc_ptr;
> /* execute the generated code */
This somehow breaks single-stepping via gdbstub. Unless you have an
instant idea (or even fix), I will dig for the reasons.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
next prev parent reply other threads:[~2008-11-05 20:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-04 14:18 [Qemu-devel] [5620] Add safety net against potential infinite loop malc
2008-11-05 20:18 ` Jan Kiszka [this message]
2008-11-06 18:19 ` [Qemu-devel] " malc
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=4911FFB1.7070209@web.de \
--to=jan.kiszka@web.de \
--cc=qemu-devel@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.