|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2019-01-16 13:38 UTC] thomas dot wiedmann at laek-bw dot de
Description: ------------ Apache 2 Errorlog shows: zend_mm_heap corrupted and restart. Maybe PDO_OCI related. Try to move from project from 5.6.x to 7.3.1 Test script: --------------- [...] [Wed Jan 16 14:24:28.175823 2019] [authz_core:debug] [pid 3520:tid 796] mod_authz_core.c(817): [client x.x.x.x:55680] AH01626: authorization result of Require all granted: granted, referer: http://x.x.x.x/start/wellcome?SID=7686e02d7a8928b02b448f1e5998781c [Wed Jan 16 14:24:28.175823 2019] [authz_core:debug] [pid 3520:tid 796] mod_authz_core.c(817): [client x.x.x.x:55680] AH01626: authorization result of <RequireAny>: granted, referer: http://x.x.x.x/start/wellcome?SID=7686e02d7a8928b02b448f1e5998781c zend_mm_heap corrupted [Wed Jan 16 14:24:28.339839 2019] [mpm_winnt:notice] [pid 1496:tid 368] AH00428: Parent: child process 3520 exited with status 1 -- Restarting. [Wed Jan 16 14:24:28.372843 2019] [mpm_winnt:notice] [pid 1496:tid 368] AH00455: Apache/2.4.37 (Win64) PHP/7.3.1 configured -- resuming normal operations [Wed Jan 16 14:24:28.372843 2019] [mpm_winnt:notice] [pid 1496:tid 368] AH00456: Apache Lounge VC15 Server built: Nov 21 2018 11:51:35 [Wed Jan 16 14:24:28.372843 2019] [core:notice] [pid 1496:tid 368] AH00094: Command line: 'C:\\Program Files\\Apache24\\bin\\httpd.exe -d C:/Program Files/Apache24' [Wed Jan 16 14:24:28.372843 2019] [core:debug] [pid 1496:tid 368] log.c(1568): AH02639: Using SO_REUSEPORT: no (0) [Wed Jan 16 14:24:28.373843 2019] [mpm_winnt:notice] [pid 1496:tid 368] AH00418: Parent: Created child process 3372 [Wed Jan 16 14:24:28.373843 2019] [mpm_winnt:debug] [pid 1496:tid 368] mpm_winnt.c(430): AH00402: Parent: Sent the scoreboard to the child [Wed Jan 16 14:24:28.603866 2019] [mpm_winnt:debug] [pid 3372:tid 244] mpm_winnt.c(1719): AH00453: Child process is running [Wed Jan 16 14:24:28.604866 2019] [mpm_winnt:debug] [pid 3372:tid 244] mpm_winnt.c(344): AH00391: Child: Retrieved our scoreboard from the parent. [Wed Jan 16 14:24:28.604866 2019] [mpm_winnt:debug] [pid 3372:tid 244] mpm_winnt.c(466): AH00403: Child: Waiting for data for listening socket 127.0.0.1:8080 [Wed Jan 16 14:24:28.604866 2019] [mpm_winnt:debug] [pid 1496:tid 368] mpm_winnt.c(513): AH00408: Parent: Duplicating socket 324 (127.0.0.1:8080) and sending it to child process 3372 [Wed Jan 16 14:24:28.604866 2019] [mpm_winnt:debug] [pid 1496:tid 368] mpm_winnt.c(513): AH00408: Parent: Duplicating socket 268 (x.x.x.x:80) and sending it to child process 3372 [Wed Jan 16 14:24:28.604866 2019] [mpm_winnt:debug] [pid 1496:tid 368] mpm_winnt.c(532): AH00411: Parent: Sent 2 listeners to child 3372 [Wed Jan 16 14:24:28.605866 2019] [mpm_winnt:debug] [pid 3372:tid 244] mpm_winnt.c(466): AH00403: Child: Waiting for data for listening socket x.x.x.x:80 [Wed Jan 16 14:24:28.605866 2019] [mpm_winnt:debug] [pid 3372:tid 244] mpm_winnt.c(491): AH00407: Child: retrieved 2 listeners from parent [Wed Jan 16 14:24:28.605866 2019] [mpm_winnt:debug] [pid 3372:tid 244] child.c(969): AH00352: Child: Acquired the start mutex. [Wed Jan 16 14:24:28.605866 2019] [mpm_winnt:notice] [pid 3372:tid 244] AH00354: Child: Starting 64 worker threads. [...] Expected result: ---------------- No zend_mm_heap related Apache restart PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 10:00:01 2025 UTC |
Second piece After the second stmt=null apache crashed ----[php PL/SQL call]--- $sQuery = ''; $sQuery = $sQuery . 'BEGIN '; $sQuery = $sQuery . ' tw_pkg_bearbeiter.Read(:df_nBearbeiter,:df_sArt); '; $sQuery = $sQuery . ' tw_pkg_bearbeiter.GetnBearbeiter(:df_nBearbeiter);'; $sQuery = $sQuery . ' tw_pkg_bearbeiter.GetsArt(:df_sArt);'; $sQuery = $sQuery . ' tw_pkg_bearbeiter.GetnZahl(:df_nZahl);'; $sQuery = $sQuery . ' tw_pkg_bearbeiter.GetsText(:df_sText);'; $sQuery = $sQuery . ' tw_pkg_bearbeiter.GetdtZahl(:df_dtZahl);'; $sQuery = $sQuery . ' tw_pkg_bearbeiter.GetnStatus(:nStatus); '; $sQuery = $sQuery . 'END; '; $stmt = $dbh->prepare($sQuery); if ($stmt) { error_log('bearbeiter read() - prepared', 0); $stmt->bindParam(':df_nBearbeiter', $df_nBearbeiter, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->bindParam(':df_sArt', $df_sArt, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 15 ); $stmt->bindParam(':df_nZahl', $df_nZahl, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->bindParam(':df_sText', $df_sText, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 40 ); $stmt->bindParam(':df_dtZahl', $df_dtZahl, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 10 ); $stmt->bindParam(':nStatus', $nStatus, PDO::PARAM_INT | PDO::PARAM_INPUT_OUTPUT, 22 ); $stmt->execute(); error_log('bearbeiter read() - executed', 0); $stmt->closeCursor(); error_log('bearbeiter read() - closeCursor', 0); $stmt = null; error_log('bearbeiter read() - stmt=null', 0); if ($nStatus) { // ok } else { // nicht gefunden @todo - Fehlermeldung? } } ----[php PL/SQL call]---Forth piece ----[PL/SQL Package Body]---- CREATE OR REPLACE PACKAGE BODY tw_pkg_bearbeiter IS /** * Globale Variablen für Tabelle: BEARBEITER */ g_nBearbeiter bearbeiter.bearbeiter%TYPE; g_sArt bearbeiter.art%TYPE; g_nZahl bearbeiter.zahl%TYPE; g_sText bearbeiter.text%TYPE; /** * Verarbeitungsstatus */ g_nStatus NUMBER := 0; g_nEOF NUMBER := 0; error_code NUMBER := SQLCODE; error_msg VARCHAR2(512) := SQLERRM; CURSOR curBearbeiterRead(p_nBearbeiter NUMBER, p_sArt VARCHAR2 ) IS SELECT bearbeiter, art, zahl, text FROM bearbeiter WHERE bearbeiter = p_nBearbeiter AND art = p_sArt; recBearbeiterRead curBearbeiterRead%ROWTYPE; /** * globale Variable zu BEARBEITER initialisieren */ PROCEDURE Init IS BEGIN g_nBearbeiter := NULL; g_sArt := NULL; g_nZahl := NULL; g_sText := NULL; END; /** * Datensatz direkt lesen */ PROCEDURE Read (p_nBearbeiter IN NUMBER, p_sArt IN VARCHAR2 ) IS BEGIN /** * INIT */ Init(); OPEN curBearbeiterRead(p_nBearbeiter, p_sArt); LOOP FETCH curBearbeiterRead INTO recBearbeiterRead; EXIT WHEN curBearbeiterRead%NOTFOUND; /** * Datensatz in globale Variablen einlesen */ g_nBearbeiter := recBearbeiterRead.bearbeiter; g_sArt := recBearbeiterRead.art; g_nZahl := recBearbeiterRead.zahl; g_sText := recBearbeiterRead.text; EXIT; END LOOP; IF curBearbeiterRead%FOUND THEN g_nStatus := 1; ELSE g_nStatus := 0; END IF; CLOSE curBearbeiterRead; END; PROCEDURE Close IS BEGIN IF curBearbeiterRead%ISOPEN THEN CLOSE curBearbeiterRead; END IF; IF curBearbeiterSearch%ISOPEN THEN CLOSE curBearbeiterSearch; END IF; END; /** * PRIVAT FUNCTION - nicht in Spezifikation * Prüfen auf zwischenzeitliche Änderung (multiuser) und Sperren für UPDATE */ /** * Status - Get - Variablen */ PROCEDURE GetnStatus (p_nStatus OUT NUMBER) IS BEGIN p_nStatus := g_nStatus; END; PROCEDURE GetnErrorcode (p_error_code OUT NUMBER) IS BEGIN p_error_code := error_code; END; PROCEDURE GetsErrormsg (p_error_msg OUT VARCHAR2) IS BEGIN p_error_msg := error_msg; END; /** * SET/GET Methoden */ PROCEDURE GetnBearbeiter ( p_nBearbeiter OUT NUMBER ) IS BEGIN p_nBearbeiter := g_nBearbeiter; END; PROCEDURE SetnBearbeiter ( p_nBearbeiter IN NUMBER ) IS BEGIN g_nBearbeiter := p_nBearbeiter; END; PROCEDURE GetsArt ( p_sArt OUT VARCHAR2 ) IS BEGIN p_sArt := g_sArt; END; PROCEDURE SetsArt ( p_sArt IN VARCHAR2 ) IS BEGIN g_sArt := p_sArt; END; PROCEDURE GetnZahl ( p_nZahl OUT NUMBER ) IS BEGIN p_nZahl := g_nZahl; END; PROCEDURE SetnZahl ( p_nZahl IN NUMBER ) IS BEGIN g_nZahl := p_nZahl; END; PROCEDURE GetsText ( p_sText OUT VARCHAR2 ) IS BEGIN p_sText := g_sText; END; PROCEDURE SetsText ( p_sText IN VARCHAR2 ) IS BEGIN g_sText := p_sText; END; /** * wenn in Zahl ein Julianisches Datum hinterlegt ist, * dieses im Format DD.MM.YYYY abholen/setzen */ PROCEDURE GetdtZahl ( p_dtZahl OUT VARCHAR2 ) IS BEGIN p_dtZahl := TO_CHAR(TO_DATE(g_nZahl,'J'),'DD.MM.YYYY'); END; PROCEDURE SetdtZahl ( p_dtZahl IN VARCHAR2 ) IS BEGIN g_nZahl := TO_NUMBER(TO_CHAR(TO_DATE(p_dtZahl,'DD.MM.YYYY'),'J')); END; BEGIN NULL; EXCEPTION WHEN others THEN error_code := SQLCODE; error_msg := SQLERRM; END; ----[PL/SQL Package Body]----