Ich versuche, einen Speicherverlust in einer CICS-Transaktion zu finden. Die Transaktion führt ein Cobol-Programm aus, das eine C-DLL aufruft, die eine Verbindung zu einem Socket herstellt, eine Anzahl von mallocs, dann die Verbindung trennt und den Speicher freigibt.CICS-Transaktion, die Ressourcen nicht freigibt, wenn es beendet wird
Diese Transaktion führt zu Speicherlecks, gibt jedoch auch keinen Speicher frei, wenn dieser angehalten wird. Ich habe sorgfältig alle Malloc und Frees abgestimmt (sowie getaddrinfo/freeaddrinfo) und ich habe das gleiche cobol-Programm außerhalb von CICS getestet und es leckt nicht.
Welche CICS-Einstellungen stellen sicher, dass die Ressourcen freigegeben werden, wenn die Transaktion zurückkehrt? Gibt es auch Tipps, um das Speicherleck zu debuggen? Was könnte es sonst noch sein, wenn es nicht die Mallocs wären? Ich habe festgestellt, dass das TCPIP getaddrinfo/freeaddrinfo in SYSTCPT protokolliert wird, verwendet dies CICS-Regionsspeicher?
Die C DLL ist mit CICS Sockets kompiliert und es verwendet LE. –
RPTSTG zeigt an, dass HEAP auf HEAP (4096,4080, ANYWHERE, KEEP, 4096,4080) eingestellt ist. –
@MichaelTaylor Bitten Sie Ihren CICS SYSPROG, eine Ablaufverfolgung für Sie auszuführen und zu interpretieren. – cschneid