SDL-Hercules-390 / hyperion

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

Issue 480 #628

Closed JamesWekel closed 6 months ago

JamesWekel commented 6 months ago

Fish,

This is my 'partial' fix to Issue 480. The partial part is that there are still missing (1-4) lines on the console using MVS Tk5 startup /shutdown tests. The missing lines:

00:58:40 HHC02263I Script 10: processing resumed...
00:58:40 HHC01603I quit
00:58:40 HHC02262I Script 10: processing paused for 60000 milliseconds...
00:58:40 HHC01420I Begin Hercules shutdown 

Sometimes it is just the 'Begin Hercules shutdown' line.

Consider this as a part of my issues analysis. You may have a different approach to solving the issue.

Jim

wrljet commented 6 months ago

I have a comment on this...

Please ensure such changes work properly (or at least don't make things worse) on various OSes.

For example, have you run this on other than " Raspberry PI4 (running Armbian Jammy; a Ubuntu version)" ?

Bill

JamesWekel commented 6 months ago

Bill,

All my development is on Armbian Jammy (Ubuntu) either on Raspberry PI and on an Intel NUC. As I don't have any other testing platforms, that's why I consider this part of my issues analysis, and not necessarily a PULL request to be implemented.

It's on my list to expand testing to Windows. What other platforms should be considered a minimum?

Jim

JamesWekel commented 6 months ago

A GIT development question: Git shows tfprint, tfswap, and txt2card as changed files. As these files are generated by libtool, should they be included in .gitignore?

Jim

wrljet commented 6 months ago

Those three files are products of the build. Hercules utilities.

Yes, they should be included in .gitignore.

Fish-Git commented 6 months ago

Yes, they should be included in .gitignore.

(Oops!)   My bad.   I'll take care of that right away.

What I don't understand however, is why git is showing them as changed files! They aren't members of the repository! Their source code obviously is, but not the resulting binaries!

I'm using Git for Windows -- which is supposed to be just a Windows port of git but otherwise identical to the official Linux version -- and my git never marks/shows them as being changed/modified! Why should it? They're not members of the repository!

But yes, I can see now that our .gitignore contains a list of all of our binaries, so I will add those to the list too. I don't understand why that needs to be done, but I will do it anyway. There's obviously something about git that I still don't understand.

Any enlightenment on the subject would be appreciated!

wrljet commented 6 months ago

Hi James,

OK, I gave these changes a try, on two systems so far:

I don't use TK4/5 so I didn't test that.

I noticed two changes in Hercules behavior, IPLing and running MVS starter system JCL "by hand":

1) Without your changes I incorrectly get two copies of two messages when Hercules is shutting down:

14:16:55 HHC01603I quit
14:16:55 HHC01420I Begin Hercules shutdown
14:16:55 HHC01423I Calling termination routines
14:16:55 HHC01423I Calling termination routines
14:16:55 HHC00101I Thread id 00007f36b8ed9640, prio 5, name 'hao_thread' ended
14:16:55 HHC00101I Thread id 00007f36b8ed9640, prio 5, name 'hao_thread' ended
14:16:55 HHC00101I Thread id 00007f36b99de640, prio 2, name 'Processor CP00' ended

With your changes I correctly get only one copy of:

HHC01423I Calling termination routines

But this message is lost completely:

HHC00101I Thread id 00007f36b8ed9640, prio 5, name 'hao_thread' ended

2) When doing make check the output comes out as a mile long spew without carriage returns, and leaves the terminal in a goofed up state, which needs reset to get it back to normal. For example:

 All pass.
          Test "str-001-mvst: Test MVST Instruction":  1 OK compares.  All pass.
                                                                                Test "str-001-srst: Test SRST Instruction":  1 OK compares.  All pass.
                                                 Test "Tape Data Chaining":  2 OK compares.  All pass.
 Test "timeout":  1 OK compares.  All pass.
                                           Test "multix":  2 OK compares.  All pass.
                                                                                    Test "multix1":  2 OK compares.  All pass.
                         Test "zeos":  6 OK compares.  All pass.
                                                                Did 241 tests.  All OK.
                                                                                       bill@ubuntu-2204:~/herctest/hyperion/build$

Bill

JamesWekel commented 6 months ago

Fish, I hardly understand GIT either.

Bill, Thanks for the tests.

I started to work on Windows environment and My pull request doesn't even link with error:

  logger.obj : error LNK2019: unresolved external symbol __imp__panel_cleanup referenced in function _set_shutdown_with_logger_lock

Definitely not production! More work to do and understanding MSVS !!

Thanks again. Jim

wrljet commented 6 months ago

You might use Hercules-Helper for Windows to get that primed.

wrljet commented 6 months ago

I will test it on Windows, but not until you look at the other stuff.

JamesWekel commented 6 months ago

Fish, Bill:

Thanks for your review and testing. I'm going to close this pull request as not ready for production.

Jim