APAR status
Closed as canceled.
Error description
DEBUGGING INSTRUCTIONS FOR ABEND822-20 FOLLOW. Additional Keywords: Howto
Local fix
Problem summary
ABEND822-20 DEBUGGING THE ABEND IS CAUSED BY SOMEONE EITHER IN A PREVIOUS JOB OR JOBSTEP LEAVING FRAGMENTED STORAGE IN THE HIGH PRIVATE AREA OF AN ADDRESS SPACE. THE HIGH PRIVATE STORAGE IS DEFINED AS SUBPOOLS, 255 (LSQA, NOT TASK RELATED SO WILL NOT GET FREED BY VSM UNTIL THE ADDRESS SPACE IS TERMINATED), 236/237 AND 229/230. THE STORAGE WILL BE CHAINED TO A STILL-CURRENT TCB IN THE ADDRESS SPACE IF IT IS NOT ASSOCIATED WITH LSQA. THE REASON FOR THE ABEND IS VSM IS TRYING TO SATISFY THE IEALIMIT VALUE AT JOB OR JOBSTEP INITIALIZATION AND THIS VALUE CANNOT BE SATISFIED BY THE CONTIGUOUS FREE STORAGE AVAILABLE IN THE PRIVATE AREA. - TO DEBUG THIS ABEND REQUIRES AN SVCDUMP OF THE ABEND822. IN MVS R410 AND ABOVE THIS ABEND IS SLIPPABLE, SO SET THE FOLLOWING SLIP TO OBTAIN DOCUMENTATION: SLIP SET,COMP=822,A=SVCD,END. Note: Please ensure that the following sdata parm is either included or already defaulting to: (allnuc,sqa,csa,lpa,psa,lsqa,swa,rgn,trt,sum) WHEN THE DUMP IS PRODUCED, GO DIRECTLY TO STEP 2 TO DEBUG. FOR MVS/XA ALL RELEASES AND MVS/ESA PRIOR TO REL4: STEP 1. BECAUSE IN THESE RELEASES THE ABEND IS NOT SLIPPABLE SET THE SLIP LISTED IN APAR OZ93347 TO OBTAIN A DUMP OF THE ABEND822 RC20. ALL MVS RELEASES: STEP 2. ONCE DUMP IS OBTAINED FROM THE ABEND: A. FIND IF THIS IS STEP1 OF A JOB. IF OTHER THAN STEP1, DEBUG THE SAME, BUT REMEMBER THAT A PREVIOUS JOBSTEP IN THIS JOB LEFT THE STORAGE IN THE ASID,AND THIS STORAGE MAY NORMALLY REMAIN THERE FOR THE LIFE OF THE ENTIRE JOB. B. IF THE DUMP IS ON IPCS, GO TO THE COMMAND PANEL AND ISSUE THE FOLLOWING COMMAND: VERBX VSMDATA 'NOGLOBAL' or IF IPCS IS NOT AVAILABLE, PRINT VSMDATA VIA PRDMP. C. ONCE VSMDATA IS VISABLE, FIND THE LOCAL DATA AREA (LDA) CONTROL BLOCK. IT IS FORMATTED OUT AND YOU WILL NEED TO OBTAIN THE FOLLOWING FIELDS: X'3C'=CSTRT START OF PVT AREA X'40'=SIZA SIZE OF ENTIRE PVT AREA X'98'=CRGTP CURRENT TOP OF REGION ADDRESS X'D0'=LIMIT IEALIMIT VALUE X'D4'=VVRG REGION SIZE X'F8'=SMFL IF 'IEFUSI' IS ACTIVE FOR THIS JOB, THIS WILL CONTAIN THE IEALIMIT VALUE VALUE (DEFAULT IF NONE USED IS 'FFFFFFFF') THIS IS FOR BELOW THE 16M LINE. X'FC'=SMFR IF IEFUSI IS ACTIVE FOR THIS JOB, THIS WILL CONTAIN THE REGION SIZE (DEFAULT IS X'FFFFFFFF') (BELOW THE 16M LINE VALUE) D. NOW WE NEED TO FIND THE CONTIGUOUS FREE STORAGE. THIS IS DONE BY DOING A FIND ON 'FBQEF'. THIS FIELD IS PART OF A HEADER FOR THE 'FREE BLOCK QUEUE ELEMENTS' AND SO GIVES US A STARTING POINT TO FIND THE FREE CONTIGUOUS STORAGE. FROM THE 'FBQEF', GO DOWN TO THE CONTROL BLOCK LABELED 'FREE BLOCK QUEUE ELEMENT AT ADDRESS...' THIS CONTROL BLOCK IS FORMATTED OUT UNDERNEATH THIS STATEMENT, AND WILL SHOW CONTIGUOUS PAGES FREE IN THIS ADDRESS SPACE. THE TWO IMPORTANT FIELDS ARE 'AREA' (START OF FREE STORAGE) AND SIZE (HOW MUCH IS FREE). VSM MUST TAKE THE REGION IEALIMIT VALUE FROM THE FIRST FREE BLOCK QUEUE ELEMENT AMOUNT. FOR EXAMPLE: THE IEALIMIT VALUE FOR JOB'X' IS X'710000' VSM MUST SATISFY THIS AMOUNT FROM THE FIRST FBQE LISTED UNDER THE FBQEF HEADER. IF THE FIRST FBQE AREA IS X'6000' AND THE SIZE IS '6EB000' WE COULD NOT SATISFY THE IEALIMIT VALUE FROM THIS FBQE SO THE ABEND OCCURS. IF YOU ADD THE AREA AND THE SIZE OF THE FBQE TOGETHER YOU OBTAIN THE 'END' OF THE FREE STORAGE. THE NEXT FBQE LISTED WILL SHOW THE NEXT CONTIGUOUS BLOCK OF STORAGE IN OUR EXAMPLE, THE IEALIMIT VALUE VSM WAS TRYING TO SATISFY WAS X'710000'. THE REASON FOR THE ABEND IS THAT THERE IS ONLY '6EB000' BYTES OF STORAGE CONTIGUOUS. THE NEXT FBQE LISTED SHOWED THAT THE NEXT FREE CONTIGUOUS BLOCK STARTED AT X'6F2000' FOR X'20000' BYTES. (BY ADDING THE AREA AND SIZE OF THE FIRST FBQE, WE OBTAIN THE ENDING ADDRESS OF FREE STORAGE AT X'6F1000'). SO THIS MEANS THAT THE STORAGE STILL GETMAINED IS BETWEEN X'6F1000' AND X'6F2000' AND IS CAUSING THE IEALIMIT VALUE NOT TO BE SATISIFIED. E. ONCE THE PAGE(S) THAT CAUSE THE FRAGMENTATION ARE FOUND (BY MAPPING OUT THE FBQE'S), THEN WE NEED TO FIND OUT WHAT SUBPOOL THESE PAGE(S) BELONG TO. F. FIRST WE CAN SEE IF THE STORAGE IS ALLOCATED TO A SUBPOOL OTHER THAN SP255. DO A FIND ON THE FIRST ALLOCATED PAGE (FRAGMENTED PAGE). IF IT IS FOUND IT WILL BE IN A 'DQE' CONTROL BLOCK IN THE 'AREA' FIELD. THIS IS THE STARTING ADDRESS OF THE DESCRIBED STORAGE, THEN VERIFY THE SIZE. IF THERE IS AN FQE FORMATTED UNDER THIS DQE, THEN THERE IS FRAGMENTED STORAGE WITHIN THIS PAGE. THE FQE REPRESENTS STORAGE THAT IS NOW FREED. IN EACH CONTROL BLOCK THERE IS A FIELD CALLED AREA AND SIZE. IN A DQE, THE AREA AND SIZE IS THE AMOUNT DESCRIBED ON PAGE BOUNDRIES. FOR THE FQE, IT IS THE START AND AMOUNT OF FREE STORAGE IN THE PAGE. 1. IF THE PAGE IS FOUND IN THIS MANNER, GO DOWN THE REST OF THE DQE'S FOR THE SUBPOOL IN QUESTION, MAKING SURE THAT THE REST OF THE FRAGMENTED STORAGE IS IN THIS SUBPOOL ALSO. VERIFY THE SUBPOOL NUMBER BY DOING A FIND ON '*****'. THIS WILL TELL YOU THE SUBPOOL AND KEY OF THE STORAGE ALLOCATED. 2. IF THE PAGE IS NOT FOUND WHEN DOING A FIND FOR THE PAGE, THEN IT IS PROBABLY ALLOCATED TO SUBPOOL 255 (LSQA). TO VERIFY THIS, FROM FBQE'S, DO A FIND PREVIOUS (F '6F0000' PREV) FOR THE PAGE, ROUNDED DOWN TO A 64K BOUNDRY. FOR EXAMPLE, FOR AN ALLOCATED PAGE AT X'6F1000', F '6F0000' PREV . THIS SHOULD GET YOU BACK UP TO THE AQAT CONTROL BLOCK REPRESENTING THIS 64K BLOCK OF STORAGE. TO DETERMINE IF THE PAGE IS ALLOCATED, THE ALLOCATION BITS MUST BE MAPPED OUT. (1 BIT PER PAGE IN USE. IF THE BIT IS ON, THE PAGE CORROSPONDING TO THE BIT NUMBER (STARTING WITH THE LEFTMOST BIT AS BIT'0'). ONCE YOU FIND THAT THE BIT IS ON FOR THE PAGE, NOW WE NEED TO FIND IF THERE IS ANY FREE STORAGE ON THE PAGE. DO A FIND ON 'ADDRESS QUEUE ORDER'. THIS WILL BRING YOU DOWN TO THE 'DFE' CONTROL BLOCKS THAT REPRESENT FREE STORAGE WITHIN THE PAGES. GO DOWN THE 'AREA' FIELD IN THE DFE'S UNTIL YOU GET DOWN TO THE PAGE IN QUESTION. THE AREA REPRESENTS THE STARTING ADDRESS OF THE FREE STORAGE, AND THE SIZE, IS HOW MUCH IS FREE. ONCE THIS IS DONE: G. GO TO THE AREA(S) THAT ARE CAUSING THE FRAGMENTATION (ONCE THE SUBPOOL(S) ARE FOUND) TO FIND WHAT TYPE OF CONTROL BLOCKS ARE IN STORAGE. REMEMBER: 1. VSM SIMPLY SATISFIES GETMAINS FROM THE TOP OF PVT DOWN THE ASID FOR THE HIGH PVT SUBPOOLS. THIS CALLER GOT DOWN THIS LOW BECAUSE ALL THE STORAGE ABOVE HIM WAS ALREADY GETMAINED. THE CALLER OF VSM MAY HAVE 'FORGOTTEN' TO DO A FREEMAIN FOR THIS ORPHANED STORAGE, OR: 2. THE CONTROL BLOCKS THAT YOU SEE MAY BE ASID RELATED CONTROL BLOCKS (SO NORMAL TO SEE IN STORAGE). THIS MEANS THAT RESEARCH NEEDS TO BE DONE AS TO WHAT COULD HAVE CAUSED THESE CONTROL BLOCKS TO BE GETMAINED SO LOW IN STORAGE. FOR EXAMPLE, THIS STORAGE WAS GETMAINED AND VSM GAVE THE CALLER THE 'NEXT AVAILABLE' BLOCK OF STORAGE TO SATISFY THEIR GETMAIN. WHAT PROHIBITED VSM FROM SATISFYING THE GETMAIN ABOVE THIS VALUE? WHAT WAS GETMAINED ABOVE THIS AT THE TIME THIS GETMAIN WAS ISSUED. THIS STORAGE IS NOW PROBABLY FREE, SO WE WILL NOT BE ABLE TO IDENTIFY WHAT WAS IN STORAGE AT THE TIME OF THE GETMAIN REQUEST. IN EITHER CASE, CHECK WITH THE COMPONENT OWNER OF THE CONTROL BLOCK(S) TO FIND IF THERE IS A POSSIBLE PROBLEM IN FREEMAINING THEIR CONTROL BLOCKS. *** NOTE, THE GETMAIN/FREEMAIN TRACE MIGHT BE A USEFUL TOOL IN DETERMINING: 1. WHO GETMAINED THE CONTROL BLOCK(S) IN QUESTION 2. WHO GETMAINED THE STORAGE ABOVE THIS STORAGE MAKING THIS STORAGE ORPHANED SO LOW IN STORAGE. FOR MORE INFORMATION ON THE GM/FM TRACE IN MVS/ESA SEE APAR OY19890, AND FOR MVS ESA R430 AND ABOVE SEE INITIALIZATION AND TUNING GUIDE UNDER 'DIAGxx' PARMLIB MEMBER.
Problem conclusion
Additional keywords: MSGIEF085I IEF085I SP229 SP230 SWA JES2INFO VSAMINFO DB2INFO
Temporary fix
Comments
APAR Information
APAR number
II05575
Reported component name
V2 LIB INFO ITE
Reported component ID
INFOV2LIB
Reported release
001
Status
CLOSED CAN
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
1991-11-20
Closed date
1991-11-20
Last modified date
2003-12-11
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Applicable component levels
[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19N","label":"APARs - OS\/390 environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"001","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"001","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":null,"label":null},"Product":{"code":"SG19O","label":"APARs - MVS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"001","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSSN3L","label":"z\/OS Communications Server"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"001","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]
Document Information
Modified date:
13 December 2020