diff mbox series

python: do not report handled EAGAIN error

Message ID 20190820021241.30843-1-marmarek@invisiblethingslab.com (mailing list archive)
State New, archived
Headers show
Series python: do not report handled EAGAIN error | expand

Commit Message

Marek Marczykowski-Górecki Aug. 20, 2019, 2:12 a.m. UTC
match_watch_by_token() when returns an error, sets also exception within
python. This is generally the right thing to do, but when
xspy_read_watch() handle EAGAIN error internally, the exception needs to
be cleared. Otherwise it will fail like this:

    xen.lowlevel.xs.Error: (11, 'Resource temporarily unavailable')

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      (...)
        result = self.handle.read_watch()
    SystemError: <method 'read_watch' of 'xen.lowlevel.xs.xs' objects> returned a result with an error set

Fixes f6e1023412 "python: Extract registered watch search logic from xspy_read_watch()"
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 tools/python/xen/lowlevel/xs/xs.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Wei Liu Aug. 21, 2019, 11:06 a.m. UTC | #1
On Tue, Aug 20, 2019 at 04:12:41AM +0200, Marek Marczykowski-Górecki wrote:
> match_watch_by_token() when returns an error, sets also exception within
> python. This is generally the right thing to do, but when
> xspy_read_watch() handle EAGAIN error internally, the exception needs to
> be cleared. Otherwise it will fail like this:
> 
>     xen.lowlevel.xs.Error: (11, 'Resource temporarily unavailable')
> 
>     The above exception was the direct cause of the following exception:
> 
>     Traceback (most recent call last):
>       (...)
>         result = self.handle.read_watch()
>     SystemError: <method 'read_watch' of 'xen.lowlevel.xs.xs' objects> returned a result with an error set
> 
> Fixes f6e1023412 "python: Extract registered watch search logic from xspy_read_watch()"
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

Acked-by: Wei Liu <wl@xen.org>
diff mbox series

Patch

diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c
index ea50f86bc3..621039d7a7 100644
--- a/tools/python/xen/lowlevel/xs/xs.c
+++ b/tools/python/xen/lowlevel/xs/xs.c
@@ -531,6 +531,7 @@  again:
     free(xsval);
 
     if (!val && errno == EAGAIN) {
+        PyErr_Clear();
         goto again;
     }