On 08/05/2022 08:01, Mark Geisert wrote:
Mark Geisert wrote (on the main Cygwin mailing list):
I've recently noticed that the 'xload' I routinely run shows zero load even with compute-bound processes running.  This is on both Cygwin pre-3.4.0 as well as 3.3.4.  A test program, shown below, indicates that getloadavg() is returning with 0 status, i.e. not an error but no elems
of the passed-in array updated.

Stepping with gdb through the test program seems weird within the loadavginfo::load_init method.  Single-stepping at line loadavg.cc:68 goes to strace.h:52 and then to _sigbe ?!

I had recently updated both Cygwin and Windows 10 to latest at the same time so I cannot say when the failure started.  Last day or two at most.

[...]

I've debugged a bit further..  Within Cygwin's loadavg.cc:load_init(), the PdhOpenQueryW() call returns successfully.  The subsequent PdhAddEnglishCounterW() call is unsuccessful.  It returns status 0x800007D0 == PDH_CSTATUS_NO_MACHINE. The code (at line 68 mentioned above) calls debug_printf() to conditionally display the error, which is what leads to the strace.h and _sigbe; that's fine.

The weird PDH_CSTATUS_NO_MACHINE is the problem.  I'll try running the example from an elevated shell.  Or rebooting the machine.  After that it's consulting some oracle TBD. :-(


Thanks for looking into this.
You can find the user space version of this code I initially wrote at https://github.com/jon-turney/windows-loadavg, which might save you some time.

I can't reproduce this on W10 21H1, so I think this must be due to some change in later Windows...

Reply via email to