On Mon, 3 Dec 2012 16:34:21 +0000, Hamilton, Robert <rhamil...@cas.org> wrote:
>I'm having trouble with IPv6...er...something overwriting some storage in a >gateway server, and I want to use an SA SLIP trap to catch it. I can observe >the error has occurred with > > DATA=(8R?+2C0,NE,00000000,AND,8R?+2C0,NE,00000013) > >The trouble is, the storage overwritten is in a control block that is used to >manage a connection through the gateway, and for most of my gateway instances >there are 200-300 possible connections, so I have 200-300 possible places >where this might occur. The location that is being overwritten is consistent >within the data structure, but the location is specific to the subtask and >it's in dynamically-obtained storage. So, when I say > > RANGE=(8R?+2C0,+2C7) > >the SLIP...is invalid, because it can't find the starting location. Do I >really, really need a few hundred dynamic SLIPs to trap this problem? > >On the other hand, if I wait until the storage is allocated and issue just a >single slip with this RANGE parameter, will each subtask be monitored, or just >the main task? AND, if I then use > > TRDATA=(STD,REGS,8R?,8R?+33F) > >to dump the entire control block when the slip is triggered, will it just dump >the one that was overwritten, or will it try to dump the information for each >task? > . . . As I see it, you have two problems. Firstly, you don't know the address of the control block to be monitored by SA SLIP in advance. Dynamic PER allows you to solve that issue if you can identify a point in the code where the storage has been allocated (get the ball rolling with an IF trap at that point). Secondly, you have not one control block, but hundreds of them. The PER hardware only allows one range to be defined, which is why you can only have one non-IGNORE SA trap "eligible for checking" at any one time. To monitor multiple control blocks, the range would have to start at the lowest address of any of the blocks, and end at the last byte of the block with the highest address (and covering anything in between if the blocks are not contiguous). You might be able to filter out unwanted updates using DATA (could be a challenge with so many blocks) or maybe with other traps using IGNORE or SUBTRAP, but still the overhead could be high. Unless you know for sure that the control block is being hit a program which is addressing the control block using reg 8, the TRDATA you specified may not trace what you want. If the damage really is being done by "gatewaypgm", and it always does have a particular register pointing to the block, you could perhaps consider an IF trap over the whole module, with DATA used to identify when the block gets damaged, but since that would cause a PER interrupt for every instruction in the module, the overhead could also be high. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN