Hello - I'm experiencing an 46D-18 abend under certain conditions when
running a supervisor mode multi-tcb CEEPIPI job step.  Under other
conditions the 46D-18 does not occur.

Any assistance or advice would be appreciated.

Per the system completion codes documentation, a 46D-18 occurs when an
ESPIE is issued in supervisor mode or when the program issuing the ESPIE
had a PSW storage key that did not match the TCB storage key.

All HLL programs are either C or C++.
All assembler programs are reentrant
The only #pragma present is to set the fetchable attribute.
Each invocation of CEEPIPI specifies TRAP(ON,NOSPIE),INTERRUPT(OFF),NOTEST
as part of the runtime options.

The //STEPLIB references only 1 dataset.  It is a PDSE.  It is in the list
of APF authorized libraries.  Issuing MODESET MODE=SUP does not cause an
abend.

The program invoked by JCL is linked AC(1).  Let's call this program
JCLMAIN.  It is assembler.

4 TCBs are created via the ATTACHX macro.  Let's call the related load
modules INIT, READ, PROCESS and WRITE

Each attached TCB setups up its own CEEPIPI environment.

The PROCESS load module is linked AC(1).

The read, process and write tasks interact with each other via a queue and
are coordinated with a combination of WAIT/POST and Pause/Release services.

CEEPIPI for the PROCESS TCB is initialized as a SUB_DP environment with a
service vector to handle LOAD, DELETE, GET, FREE and MESSAGE.  Exception
handling is not yet handled in the service vector.

The PROCESS TCB uses either call_sub_addr_nochk  or call_sub_addr_nochk2 to
invokes the C/C++ program.  call_sub_addr_nochk  and call_sub_addr_nochk2
are documented in the Language Environment Vendor Interfaces (SA22-7568)
manual.  Only nochk or nochk2 is used at any one time.  I've tested with
both with no difference in outcome.

Conditions under which this works:
1) This works when MODESET is never issued and the entire process is
problem state.  THis has been run from a load library that is not APF
authorized and it works.

2) This works when the JCLMAIN issues MODESET MODE=SUP,KEY=NZERO prior to
any sub-tasks being attached and then issuing MODESET MODE=PROB,KEY=NZERO
after all tasks are detached.

Conditions under which this fails:
1) This fails and the 46D-18 occurs when JCLMAIN reamins in problem state
at all times and attaches all sub-tasks.  The PROCESS TCB issues MODESET
MODE=SUP,KEY=NZERO prior to calling CEEPIPI to setup the SUB_DP
environment.  The PROCESS TCB is the only TCB which enters supervisor state.

This has me perplexed because the run ops provided to CEEPIPI has
TRAP(ON,NOSPIE),INTERRUPT(OFF),NOTEST.  The TRAP(ON,NOSPIE) is supposed to
cause LE to issue an ESTAE instead of an ESPIE.


You might be asking, why I'm doing this.  The answer is that eventually, I
want to be able to run the C/C++ programs that are setup in the SUB_DP
environment under an SRB.  This is documented in Language Environment
Vendor Interfaces (SA22-7568).  This will allow me to offload C/C++ code to
a zIIP engine.

Let me know if more details are needed.

Please contact me off list if you have information that can only be shared
in private.

Thanks,
Sam

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to