<div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 18, 2022 at 5:15 PM Michal Privoznik <<a href="mailto:mprivozn@redhat.com">mprivozn@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">This reverts commit 938382b60ae5bd1f83b5cb09e1ce68b9a88f679a.<br>
<br>
Turns out, the commit did more harm than good. It changed<br>
semantics on some public APIs. For instance, while<br>
qemuDomainGetInfo() previously did not returned an error it does<br>
now. While the calls to virProcessGetStatInfo() is guarded with<br>
virDomainObjIsActive() it doesn't necessarily mean that QEMU's<br>
PID is still alive. QEMU might be gone but we just haven't<br>
realized it (e.g. because the eof handler thread is waiting for a<br>
job).</blockquote><div dir="auto"><br></div><div dir="auto">Doh!</div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)" dir="auto"><br>
<br>
Resolves: <a href="https://bugzilla.redhat.com/show_bug.cgi?id=2041610" rel="noreferrer" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=2041610</a><br>
Signed-off-by: Michal Privoznik <<a href="mailto:mprivozn@redhat.com" target="_blank">mprivozn@redhat.com</a>><br>
---<br>
 src/ch/ch_driver.c     | 2 ++<br>
 src/qemu/qemu_driver.c | 7 ++++++-<br>
 src/util/virprocess.c  | 8 ++------<br>
 3 files changed, 10 insertions(+), 7 deletions(-)<br>
<br>
diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c<br>
index 3cbc668489..53e0872207 100644<br>
--- a/src/ch/ch_driver.c<br>
+++ b/src/ch/ch_driver.c<br>
@@ -1073,6 +1073,8 @@ chDomainHelperGetVcpus(virDomainObj *vm,<br>
             if (virProcessGetStatInfo(&vcpuinfo->cpuTime,<br>
                                       &vcpuinfo->cpu, NULL,<br>
                                       vm->pid, vcpupid) < 0) {<br>
+                virReportSystemError(errno, "%s",<br>
+                                      _("cannot get vCPU placement & pCPU time"));<br>
                 return -1;<br>
             }<br>
         }<br>
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c<br>
index e150b86cef..373cd62536 100644<br>
--- a/src/qemu/qemu_driver.c<br>
+++ b/src/qemu/qemu_driver.c<br>
@@ -1357,6 +1357,8 @@ qemuDomainHelperGetVcpus(virDomainObj *vm,<br>
             if (virProcessGetStatInfo(&vcpuinfo->cpuTime,<br>
                                       &vcpuinfo->cpu, NULL,<br>
                                       vm->pid, vcpupid) < 0) {<br>
+                virReportSystemError(errno, "%s",<br>
+                                     _("cannot get vCPU placement & pCPU time"));<br>
                 return -1;<br>
             }<br>
         }<br>
@@ -2517,6 +2519,8 @@ qemuDomainGetInfo(virDomainPtr dom,<br>
     if (virDomainObjIsActive(vm)) {<br>
         if (virProcessGetStatInfo(&(info->cpuTime), NULL, NULL,<br>
                                   vm->pid, 0) < 0) {<br>
+            virReportError(VIR_ERR_OPERATION_FAILED, "%s",<br>
+                           _("cannot read cputime for domain"));<br>
             goto cleanup;<br>
         }<br>
     }<br>
@@ -10524,7 +10528,8 @@ qemuDomainMemoryStatsInternal(virQEMUDriver *driver,<br>
     }<br>
<br>
     if (virProcessGetStatInfo(NULL, NULL, &rss, vm->pid, 0) < 0) {<br>
-        virResetLastError();<br>
+        virReportError(VIR_ERR_OPERATION_FAILED, "%s",<br>
+                       _("cannot get RSS for domain"));<br>
     } else {<br>
         stats[ret].tag = VIR_DOMAIN_MEMORY_STAT_RSS;<br>
         stats[ret].val = rss;<br>
diff --git a/src/util/virprocess.c b/src/util/virprocess.c<br>
index 85d8c8e747..b559a4257e 100644<br>
--- a/src/util/virprocess.c<br>
+++ b/src/util/virprocess.c<br>
@@ -1784,10 +1784,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime,<br>
         virStrToLong_ullp(proc_stat[VIR_PROCESS_STAT_STIME], NULL, 10, &systime) < 0 ||<br>
         virStrToLong_l(proc_stat[VIR_PROCESS_STAT_RSS], NULL, 10, &rss) < 0 ||<br>
         virStrToLong_i(proc_stat[VIR_PROCESS_STAT_PROCESSOR], NULL, 10, &cpu) < 0) {<br>
-        virReportError(VIR_ERR_INTERNAL_ERROR,<br>
-                       _("cannot parse process status data for pid '%d/%d'"),<br>
-                       (int) pid, (int) tid);<br>
-        return -1;<br>
+        VIR_WARN("cannot parse process status data");<br>
     }<br>
<br>
     /* We got jiffies<br>
@@ -1884,8 +1881,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime G_GNUC_UNUSED,<br>
                       pid_t pid G_GNUC_UNUSED,<br>
                       pid_t tid G_GNUC_UNUSED)<br>
 {<br>
-    virReportSystemError(ENOSYS, "%s",<br>
-                         _("Process statistics data is not supported on this platform"));<br>
+    errno = ENOSYS;<br>
     return -1;<br>
 }<br>
<br>
-- <br>
2.34.1<br>
<br>
</blockquote></div></div>