SDL-Hercules-390 / hyperion

The SDL Hercules 4.x Hyperion version of the System/370, ESA/390, and z/Architecture Emulator
Other
245 stars 92 forks source link

Warning in function USLEEP() at ctcadpt.c(3635) #591

Closed jeff-snyder closed 1 year ago

jeff-snyder commented 1 year ago

Hi,

When I run the latest development commit of Hercules (Hercules version 4.7.0.11015-SDL-DEV-g040abe0f) on my Pi model 2, I get the following message when using CTCE devices:

HHC00092W Warning in function USLEEP() at ctcadpt.c(3635): rc=0, EINTR retrys count=12

The CTCEs seem to work fine. The system "seems" slow, but I don't normally interact directly with the Pi 2 (it's my VTAM/NJE hub, print server and DASD sharing host), so I can't say definitively that its not just the fact that this is running on a Pi 2 vs. my other Pi model 4s.

The included configuration is in support of a VM/ESA 2.4.0 guest, however the guest OS was never IPLed during this run.

My OS is (from /etc/os-release):

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

This was not happening in my previous build of Hercules, which was 4.6/master from 2023/03/04. I'm guessing its something introduced by the recent work on USLEEP().

Fish-Git commented 1 year ago

I'm guessing its something introduced by the recent work on USLEEP().

It absolutely was something introduced by the recent work on USLEEP(), and is nothing to worry about. It just tells us we should probably increase our current default NANOSLEEP_EINTR_RETRY_WARNING_TRESHOLD from its current default value of '6', to, say, maybe, 16?, which should eliminate the warning message.

The only purpose of the warning message is to alert us to a possible problem with nanosleep wherein it is for unknown reasons constantly being interrupted. The idea is, a few interrupts here and there are fine and probably normal and nothing to worry about. But constant interruptions could be a problem however. It's hard to say.

If we never issued any warning message at all, then we'd never know whether it was getting interrupted or not and how frequently it was. Thus we keep track of how often it's interrupted on each call until the call eventually completes, and then issue the warning if the number of interrupts was "more than we expected and therefore a sign of a potential problem".

If you want to try fixing it yourself, change the NANOSLEEP_EINTR_RETRY_WARNING_TRESHOLD value in source file hscutl.h to, say, 16, and then rebuild your Hercules.*`()`**


*`()**  _I'm only suggesting 16 because your Hercules log shows the message being issued with a reportedEINTR retrys count=` value of 12 in one spot and 14 in another. Thus I'm hoping that for you, 16 might be good value to silence the warning or reduce its frequency. If the warning is still issued "too frequently" for your liking, you can then increase it a bit more until the message is either no longer issued or only occasionally issued._

Fish-Git commented 1 year ago

I'm closing this issue and marking it as "WON'T FIX" only because technically there is nothing broken. There is technically no "bug" per se to be fixed.

We may need to adjust our existing NANOSLEEP_EINTR_RETRY_WARNING_TRESHOLD value, but that's not so much a "bug" fix as it is a new still-under-development "tweak".

Fish-Git commented 1 year ago

Jeff:   (@jeff-snyder)

Have you had a chance to try setting the NANOSLEEP_EINTR_RETRY_WARNING_TRESHOLD to 16 yet? Did that help reduce the number of HHC00092W warning messages down to an acceptable level for you? If so, I would like to make that a permanent change to Hercules. But I don't want to do that if it doesn't help. Does it (did it) help any? Thanks.

jeff-snyder commented 1 year ago

Sorry, I thought this was closed, I didn't realize you were waiting on something from me.

I applied the change (updated the threshold from 6 to 16) and the messages are gone.

updated.hercules.log.txt

Fish-Git commented 1 year ago

I applied the change (updated the threshold from 6 to 16) and the messages are gone.

Good enough! Thanks! I'll make the change to Hercules.