In <
ac677af4-d08d-437a...@googlegroups.com>, on 06/14/22
> I set the server to use MAXCPU=1 and also memlimited to 1846 (in case
>of a dump). Also memlimited the desktop
What does memlimited the Desktop mean to you?
>and ran siege using 'siege
>www,
davemckenna.com' and the desktop trapped (as usual) and I was able to
> capture a dump on the desktop from that if you want to see it.
Do you mean a process dump or a system dump?
> SMP), but no AFINETK trap yet.
This is some evidence that we have an SMP issue with your setup.
>I'll attach the POPUPLOG
The POPUPLOG
06-14-2022 16:34:06 SYS3175 PID 007c TID 0001 Slot 00e0
C:\PROGRAMS\APACHE24\BIN\HTTPD.EXE
c0000005
7d36dd80
P1=00000002 P2=0081ff1c P3=XXXXXXXX P4=XXXXXXXX
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESI=00000000 EDI=00000000
DS=0053 DSACC=d0f3 DSLIM=7fffffff
ES=0053 ESACC=d0f3 ESLIM=7fffffff
FS=150b FSACC=00f3 FSLIM=00000030
GS=0000 GSACC=**** GSLIM=********
CS:EIP=005b:7d36dd80 CSACC=d0df CSLIM=7fffffff
SS:ESP=0053:0081ff20 SSACC=d0f3 SSLIM=7fffffff
EBP=00000000 FLG=00010206
EXCEPTQ.DLL 0001:0000dd80
implies that EXCEPTQ is loading in upper memory again. Is this true? If
so, please mark exceptq to load in lower memory. If not, I guess I'll
have to figure out what the POPUPLOG entry is trying to tell us.
>and apache error
> log.
The apache error contains pretty much what I expected. I notice that the
heap corruption reports are shown as:
zend_mm_heap corrupted
We need to cherry pick commit ccd4a01272e1c94804467e539a8224e72ee67a81.
If Paul is lurking a new 8.1.7 should be available in the fullness of
time.
We are still left with the problem of figuring out why and how:
owner PID: 00c9 (201)
owner TID: 10
died.
I took a quick look at the previous exceptq reports that where SIGSEGV's.
These would be:
62a6447a-006c_01-HTTPD-exceptq.txt
62a6449b-006d_01-HTTPD-exceptq.txt
The traps occurred because the php termination logic is not sufficiently
robust when there is insufficient memory for the php instance to fully
initialize. We know php is attempting to terminate because _zend_shutdown
is in the call path.
To avoid these traps, I may have to change the out of memory handling
logic in zend_mm_init. What happens is than when we are out of memmory
for the php heap:
alloc_globals->mm_heap = zend_mm_init();
sets alloc_globals->mm_heap to NULL. This is fine, but none of the other
code checks the pointer. I attempted to add the missing NULL pointer
checking code with the idea that we could just use the normal thread
termination code. The NULL pointer checks I put in worked as expected,
but I never got to the point where all the required checks were in place.
I may make another attempt at this.
The other option is to terminate the thread in zend_mm_init(). This might
produce some small, intermin leaks, but we are already out of memory and
this memory will be reclaimed when the parent process terminates when the
MaxConnectionsPerChild limit is reached.
> A new wrinkle is that on the desktop I have gotten a trap in SOCKETSK
>twice when running siege,
What this when running MAXCPU=1? Is so, it's just a variant of the
SOCKETSK trap. AFINETK SOCKETS and the NIC drivers all tied and the hip
and share common data structures.
Have fun,