Skip to content
  • Peter Maydell's avatar
    Handle CPU interrupts by inline checking of a flag · 378df4b2
    Peter Maydell authored
    
    
    Fix some of the nasty TCG race conditions and crashes by implementing
    cpu_exit() as setting a flag which is checked at the start of each TB.
    This avoids crashes if a thread or signal handler calls cpu_exit()
    while the execution thread is itself modifying the TB graph (which
    may happen in system emulation mode as well as in linux-user mode
    with a multithreaded guest binary).
    
    This fixes the crashes seen in LP:668799; however there are another
    class of crashes described in LP:1098729 which stem from the fact
    that in linux-user with a multithreaded guest all threads will
    use and modify the same global TCG date structures (including the
    generated code buffer) without any kind of locking. This means that
    multithreaded guest binaries are still in the "unsupported"
    category.
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
    Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
    378df4b2