Follow-up: The python code that abends is already using try/except around the
calls to the fetch_both() function, and the “except” phrase is never executed
(I already have message outputs there, though not to /dev/console), so there is
no chance to output anything after the abend happens.
So what I think we need is something that will generate a dump after the S0C4
in an OMVSEX AS forked from the bash login AS.
In case it helps, the exact error message printed by the abend are as follows:
CEE3204S The system detected a protection exception (System Completion
Code=0C4).
From compile unit TOROLABA:./Objects/object.c at entry point
PyObject_Hash at statement 769 at compile unit offset +000000001C3A79B4 at
entry offset
+0000000000000074 at address 000000001C3A79B4.
Segmentation fault
This is a consistently generated abend, at the same offset every time (though
the actual address changes).
Peter
From: IBM Mainframe Discussion List <[email protected]> On Behalf Of
Farley, Peter
Sent: Saturday, July 15, 2023 2:18 PM
To: [email protected]
Subject: Re: How to set a SLIP to catch S0C4 in OMVS separate AS
Thanks for trying to help Jon, but “IBM” hasn’t *officially* looked at
anything. The python ibmdb team is an open source collective (perhaps
including some IBM employees, but I do not know that for sure) and is not
“official” IBM support at all. One of the ibmdb team has asked for an SVCDUMP
as they may have seen this error previously but could not follow up on it at
that time.
I do not have access to set the SLIP to catch this abend, I have to rely on the
admins at the Zxplore system to do that, and they are not experts either.
Zxplore is a “student learning” system that IBM runs in the cloud but solving a
problem with the python ibmdb code is not very high on their list of
priorities, though they have been trying to help here. I am not dealing with
an experienced z/OS sysprog on Zxplore for this task, just a system
“administrator” who has considerable authority on the system.
The python program stops altogether after the abend even with a try/except (at
least I think it does – I will double check that) so there is no chance to
output anything after the abend. If it turns out that a try/except works I
will try getting an output to /dev/console after the abend and see if that can
help generate a dump. I am not sure that an SVCDUMP after the python program
terminates would be at all helpful, but I am not an expert in that area either.
Again, thanks for trying to help.
Peter
From: IBM Mainframe Discussion List <[email protected]> On Behalf Of Jon
Perryman
Sent: Saturday, July 15, 2023 11:28 AM
To: [email protected]
Subject: Re: How to set a SLIP to catch S0C4 in OMVS separate AS
As you discovered, S0C4 SLIPs are at the best of times a pain in the a$$. S0C4
is difficult because it has a real use which is to determine if a page has been
created (not just allocated). It requires multiple SLIP IGNORE which can be
obtained from IBM. Since you are working with IBM support, I assume they gave
you these SLIP IGNORE to be defined the SLIP SVCDUMP. It would be helpful to
see the SLIPs provided by IBM.
I assume IBM looked at the CEEDUMP but it did not contain anything that would
be useful for setting a SLIP. This leaves you with some trial and error.
Without anything to go on, here's what I would look consider.
1. If you repeat the abend, does it occur at the same address? If so,
ADDRESS=,COND=0C4 may be your easiest option.2. If you can get quiet time on a
system, you can get quiet time on the system, this would be your second
choice.3. I assume you are somewhat comfortable with IPCS. If so, capture an
informational dump and create a SLIP using the information you find as
follows:3A. Generate a WTO as soon as possible after the abend. Since you have
Python source, code a TRY/EXCEPT which writes a message to the console (If I
remember correctly, its /dev/console). Alternatively, you can write a small
HLASM program that issues a WTO that is called from except. Another alternative
would be to write a script to run the python program and issue the console
message (/dev/console) after the python program terminates. 3B. Write a SLIP
WTO SVCDUMP for the console message and capture the dump.3C. Using IPCS, Find
the S0C4 abend in the trace table. Since you think its occurring in another
address space, don't restrict it to the selected address space. Find the not
all processors message then search backwards for '*' until you find the correct
S0C4. This can be tedious on a very active system. 3D. The trace entry will
have the failing address space and address. Hopefully the abend address is in
common or the python program and abend occur in the same address space
otherwise you will need a method to capture the failing address space. Using
the WHERE command, specify ASID and ADDRESS to find out which module caused the
S0C4.3E. Create a slip using the module name.
On Friday, July 14, 2023 at 05:17:06 PM PDT, Farley, Peter
<mailto:[email protected]> wrote:
Hi All,
I am trying to help the python ibmdb team help me solve an S0C4 abend issue
with (we think maybe) their code on the IBM Zxplore LPAR by generating an
SVCDUMP that the ibmdb team could analyze. The admins at Zxplore have tried a
couple of times to set a SLIP to catch the S0C4 abend that I am getting when
using one of the ibmdb functions, but it keeps missing catching the abend.
Here is the "usual" setup to duplicate the abend:
1. USS logon from ssh on a Windows box at my home into the Zxplore system.
Zxplore runs the bash shell as your default shell.
2. Execute "python3 db_fetch_both_err-2.py"
3. This reliably generates a S0C4 abend deep inside the python runtime
code in something named TOROLABA the first time the python script tries to use
the ibmdb function "fetch_both(...)".
I can supply both a copy of the python script and the exact text of the abend
messages if it helps you to help me, but the real question we have is how
should a SLIP trap be set up to catch a S0C4 abend in a forked USS address
space? The only dump that seems to be generated is a CEEDUMP in my $HOME
directory on Zxplore.
I have also tried a JCL executing BPXBATCH to run the exact same python script,
and that also does not trigger the SLIP they recently set to match the JOB name
of that JCL. SHAREAS=MUST does not work with the bash shell, so the python
process is (I believe) being forked to a new AS by BPXBATCH.
Any and all assistance to help us catch this abend and generate the SVCDUMP
that the ibmdb team have requested to help solve the root cause would be much
appreciated.
Peter
--
This message and any attachments are intended only for the use of the addressee
and may contain information that is privileged and confidential. If the reader
of the message is not the intended recipient or an authorized representative of
the intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication
in error, please notify us immediately by e-mail and delete the message and any
attachments from your system.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
This message and any attachments are intended only for the use of the addressee
and may contain information that is privileged and confidential. If the reader
of the message is not the intended recipient or an authorized representative of
the intended recipient, you are hereby notified that any dissemination of this
communication is strictly prohibited. If you have received this communication
in error, please notify us immediately by e-mail and delete the message and any
attachments from your system.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN