APC crashes when user cache is used - php

I'm developing a PHP app and and want to cache some data in APC. APC is running and enabled, I can see statistics when I open apc.php which indicate that opcode caching works fine.
However, the apache process crashes whenever I try to use apc_store() or apc_add() to store some data.
This is on a Windows 7 Professional 64bit system and happens with both of these version combinations:
Apache 2.2.21, PHP 5.3.9, APC 3.1.6
Apache 2.2.22, PHP 5.3.13, APC 3.1.9
With the first configuration, the crash happens immediately and this in the apache error log:
[Fri Jun 08 12:51:58 2012] [notice] Parent: child process exited with status 255 -- Restarting.
With second there is some delay and I get this:
[Fri Jun 08 16:18:48 2012] [notice] Child 5052: Exit event signaled. Child process is ending.
[Fri Jun 08 16:18:48 2012] [warn] (OS 995)Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen. : winnt_accept: Asynchronous AcceptEx failed.
[Fri Jun 08 16:18:48 2012] [warn] (OS 10038)Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist. : setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed.
[Fri Jun 08 16:18:52 2012] [warn] pid file C:/wamp/bin/apache/apache2.2.22/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Fri Jun 08 16:18:52 2012] [notice] Apache/2.2.22 (Win64) PHP/5.3.13 configured -- resuming normal operations
What can be done to fix this?

Seems like the array I wanted to store contained a native resource, and that caused the crash.
Using serialize() before storing it and unserialize() afterwards fixed the problem.

Related

Magento black screen locale

Something really stupid is going on here.
I have several magento projects and they were all fine until now.
I get a blank page on every Magento project;
Also if I want to create a new magento project, on the second installation step, it gives a blank page.
XAMPP is giving me several errors (error_log)
[Fri Oct 25 10:05:50 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Fri Oct 25 10:05:52 2013] [notice] Digest: generating secret for digest authentication ...
[Fri Oct 25 10:05:52 2013] [notice] Digest: done
[Fri Oct 25 10:05:53 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Fri Oct 25 10:16:03 2013] [notice] child pid 3039 exit signal Bus error (10)
[Fri Oct 25 10:16:04 2013] [notice] child pid 3041 exit signal Bus error (10)
[Fri Oct 25 10:25:57 2013] [notice] child pid 2787 exit signal Bus error (10)
[Fri Oct 25 10:25:58 2013] [notice] child pid 2715 exit signal Bus error (10)
I did reinstall XAMPP, but still the same errors.
Can anybody help me?
try following :
To get rid of the SSLSessionCache message in XAMPP
1) Open file \xampp\apache\conf\httpd.conf
2) Somewhere in the LoadModule area add the following line:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
3) Save the file
4) Now open file \xampp\apache\conf\extra\httpd-ssl.conf
5) at line 70 add the line
SSLSessionCache "shmcb:logs/ssl_scache(512000)"
6) Save the file
7) Restart Apache
Ref : XAMPP - Session Cache is not configured [hint: SSLSessionCache]
Ok i had the same problem with Magento and I found that it's since I upgraded Mac OS X to 10.9.
I was using XAMPP 1.7.3 .
To solve that, you need to upgrade XAMPP to 1.8.3.
Everything works fine for me now.

APACHE Crashing: Parent: child process exited with status 3221225477 -- Restarting

My following setup is Xampp 1.7.7 and here is the info for everything in that package:
- Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
I'm running the server on Windows XP SP3 32 bit OS, 4 gigs of ram, Quad Core.
The issue I'm having in my apache error log file is:
[Tue Apr 24 15:55:55 2012] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Tue Apr 24 15:55:57 2012] [notice] Digest: generating secret for digest authentication ...
[Tue Apr 24 15:55:57 2012] [notice] Digest: done
[Tue Apr 24 15:55:59 2012] [notice] Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Tue Apr 24 15:55:59 2012] [notice] Server built: Sep 10 2011 11:34:11
[Tue Apr 24 15:55:59 2012] [notice] Parent: Created child process 776
[Tue Apr 24 15:56:00 2012] [notice] Disabled use of AcceptEx() WinSock2 API
[Tue Apr 24 15:56:01 2012] [notice] Digest: generating secret for digest authentication ...
[Tue Apr 24 15:56:01 2012] [notice] Digest: done
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Child process is running
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Acquired the start mutex.
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Starting 350 worker threads.
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Listening on port 443.
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Listening on port 80.
This seems to occur sporadically throughout the day and I even tried using Win32DisableEx, EnableIMAP Off and EnableSendFile Off in the apache conf file. I also tried copying the libmysql.dll file to the system32 and apache/bin folders with no avail.
If anyone knows other reasons this error for the child process exiting and causing apache to crash, info would be greatly appreciated. If any additional log files are needed please let me know.
Tks,
Shane.
The error code 3221225477 is 0xC0000005 in hex, which on Windows is:
#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L)
Access violation is Windows' version of "segmentation fault", which simply said means that the program tried to access a memory which is not allocated. This can happen for a lot of different reasons, but mostly (if not always) is a bug in the program.
Now, my guess for your situation, is that there is either a bug in PHP or in one of PHP's extensions or in Perl or some Perl application. Apache itself is usually very stable, but if you use some unusual extension, it might be the cause, too.
I would suggest updating all your configuration to latest versions. If you want to find the source of the problem for sure, run Apache inside a debugger, like Visual Studio or OllyDbg. When the exception (access violation) happens, it will stop execution (instead of restarting) and you'll see in which module it is.
Also take a look in the access log, if there is a suspicious request with the same timestamp as the error. But it may happen that the crash happens before the request is saved in the logfile.

Performance issue with php/apache/windows. Connection reset

I'm having a rather big problem with a site performance. It's a php site on Apache on Windows Server 2003.
Web site is basically crashing with 'connection was reset' or 'cannot load web page' quite often. httpd process in Windows takes about 100mb on normal traffic, having about 1gb of memory still free
This is first time I host a php site on Windows (WIndows was requirement in this case) and I'm not sure what are my options
Thanks
Apache log is displaying the following (sorry for pasting it like that, couldn't do it as 'code block' from some reason. This surely doesn't look right. Any ideas what could be going on?
[Tue Nov 08 16:44:43 2011] [notice] Parent: Received restart signal --
Restarting the server.
[Tue Nov 08 16:44:43 2011] [notice] Child 2072: Exit event signaled.
Child process is ending.
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
[Tue Nov 08 16:44:44 2011] [notice] Apache/2.2.17 (Win32)
mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.2.17 configured -- resuming normal
operations
[Tue Nov 08 16:44:44 2011] [notice] Server built: Oct 18 2010 01:58:12
[Tue Nov 08 16:44:44 2011] [notice] Parent: Created child process 7692
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
[Tue Nov 08 16:44:44 2011] [notice] Child 2072: Released the start
mutex
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Child process is
running
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Acquired the start
mutex.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting 1000 worker
threads.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 2090.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 8011.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 8080.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 443.
[Tue Nov 08 16:44:44 2011] [notice] Child 7692: Starting thread to
listen on port 80.
[Tue Nov 08 16:44:45 2011] [notice] Parent: child process exited with
status 0 -- Restarting.
httpd.exe: Could not reliably determine the server's fully qualified
domain name, using 192.168.67.1 for ServerName
Windows event viewer is throwing the following
Error - VsJITDebugger. An unhandled win32 exception occurred in httpd.exe [4416]. Just-In-Time debugging this exception failed with the following error: Debugger could not be started because no user is logged on.
Can anyone help with this?
That '[notice] Parent: child process exited with status 0 -- Restarting' is describing the issue here. Tho it describes it in vary vague way. Server is basically restarting on it's own every few minutes. I took the site down with a holding page and the error and restart ddidn't occure. I added an html page and bombed it with combinations of requests using AB. It would always crash at requests close to number of ThreadsPerChild specified in mpm config, which I have set to 1000. Each crash followed with an error
apr_socket_recv: An existing connection was forcibly closed by the remote host.
(730054)
That error only displays when benchmarking. Nothing like that appears in apache log. As soon I switch the site back live, it starts to crash every few minutes. The site generates about 100 requests per page and is also using 2-3 ajax calls per page (while loading)
I spent hours searching the web for possible solutions. Found nothing that fits. I'm completely out of options. I'm not even experienced running apache on windows as during 5 years I work in the business I never had to run php sites on Windows. I haven't seen such error on linux neither
There are two places where you should have a look:
Regular Apache logs, located in the logs folder inside Apache installation.
Windows event viewer, located in Windows control panel
In particular, the second one will log Apache crashes and will possibly reveal additional details.

The infamous Apache error "Parent: child process exited with status 3221225477"

I've read some questions and responses related to the infamous Apache error
Apache error [notice] Parent: child process exited with status 3221225477 — Restarting
But nothing could help me so far. What I'm asking to you is if I used a Linux version, could the script crash Apache for the same reason?
By the way if anyone has any suggestion for my case here is Apache's error.log
[Mon Aug 08 14:31:44 2011] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Mon Aug 08 14:31:44 2011] [crit] (22)Invalid argument: unable to replace stderr with error_log
[Mon Aug 08 14:31:44 2011] [crit] (2)No such file or directory: unable to replace stderr with /dev/null
[Mon Aug 08 14:31:44 2011] [notice] Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_autoindex_color PHP/5.1.6 configured -- resuming normal operations
[Mon Aug 08 14:31:44 2011] [notice] Server built: Aug 13 2006 19:16:43
[Mon Aug 08 14:31:44 2011] [notice] Parent: Created child process 4364
[Mon Aug 08 14:31:45 2011] [notice] Child 4364: Child process is running
[Mon Aug 08 14:31:45 2011] [notice] Child 4364: Acquired the start mutex.
[Mon Aug 08 14:31:45 2011] [notice] Child 4364: Starting 250 worker threads.
[Mon Aug 08 14:31:45 2011] [notice] Child 4364: Starting thread to listen on port 8088.
[Mon Aug 08 14:31:45 2011] [notice] Child 4364: Starting thread to listen on port 8086.
I can't understand why moving dlls around the filesystem solve most problems and all the suggestions in the related questions which were about moving libraries didn't work for me.
I'm running an old XAMPP release with PHP 5.1.6 (XAMPP for Windows 1.5.4) and working with Doctrine ORM (Yes, I'm aware that Doctrine requires PHP 5.2.3+).
I've just had this same problem on a WAMP installation. I tracked it down to a bit of my own rubbish code. I had a method calling itself.
Here's an example:-
<?php
echo "Welcome to stupid class!";
class stupid_class {
public $example_data;
function stupid_function($Data) {
self::stupid_function($Data);
if($Data=="Hello") return true;
else die("Incorrect data passed through.".$Data."<br />");
}
}
$myClass = new stupid_class();
$myvalue = $myClass->stupid_function("Hello");
?>
I know this is hardly an ideal example of great code, (it was actually a typo) but I would have expected there to be some error thrown before getting a 'connection was reset' message.
So I guess an answer would be, check through all your methods to make sure that you're not calling one infinitely.
I hope this helps someone to figure out why this is happening in PHP, Apache.
Cheers
Tee
In my case it was the php extension APC (php_apc.dll, 3.1.10-5.4-vc9-x86, threadsafe), which caused the error.
I used XAMPP 1.8.2 with PHP 5.4.19 and Apache 2.4.4
Since it could be caused by another extension as well, it might be a good starting point to restore the original php.ini from the xampp distribution. If this one works well, try to change it line by line to your desired configuration (starting with the extension list).

How do I debug errors that have no error message?

How do I debug errors that have no error message?
When loading a PHP page I am getting this error in Firefox.
The connection to the server was reset while the page was loading.
It gives no indication as to why other than it appears to be Apache crashing.
Apache error logs shows:
[Wed Nov 03 10:23:04 2010] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Wed Nov 03 10:23:06 2010] [notice] Digest: generating secret for digest authentication ...
[Wed Nov 03 10:23:06 2010] [notice] Digest: done
[Wed Nov 03 10:23:06 2010] [notice] Apache/2.2.14 (Win32) DAV/2 mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Wed Nov 03 10:23:06 2010] [notice] Server built: Nov 11 2009 14:29:03
[Wed Nov 03 10:23:06 2010] [notice] Parent: Created child process 5100
[Wed Nov 03 10:23:07 2010] [notice] Digest: generating secret for digest authentication ...
[Wed Nov 03 10:23:07 2010] [notice] Digest: done
[Wed Nov 03 10:23:07 2010] [notice] Child 5100: Child process is running
[Wed Nov 03 10:23:07 2010] [notice] Child 5100: Acquired the start mutex.
[Wed Nov 03 10:23:07 2010] [notice] Child 5100: Starting 150 worker threads.
[Wed Nov 03 10:23:07 2010] [notice] Child 5100: Starting thread to listen on port 80.
[Wed Nov 03 10:23:07 2010] [notice] Child 5100: Starting thread to listen on port 80.
I tried searching the 3221225477 code but found nothing that worked.
Also the Windows Event Viewer shows this:
Faulting application name: httpd.exe, version: 2.2.14.0, time stamp: 0x4aeb9704
Faulting module name: php5ts.dll, version: 5.3.1.0, time stamp: 0x4b06c41d
Exception code: 0xc0000005
Fault offset: 0x00082391
Faulting process id: 0x8f4
Faulting application start time: 0x01cb7b85fa74bf83
Faulting application path: C:\xampp\apache\bin\httpd.exe
Faulting module path: C:\xampp\php\php5ts.dll
Report Id: 73996201-e779-11df-938f-e0cb4e5b154a
This is happening when I call:
return mysql_fetch_object($result, $class_name);
Its also happening on another page when I use $_SESSION
If I switch to using CGI instead of the php5ts.dll and php5apache2_2.dll I get:
Premature end of script headers: php-cgi.exe
Its is only happening for some pages. Others work fine.
No PHP errors or exceptions occur. Error reporting is set to E_ALL & ~E_NOTICE & ~E_DEPRECATED. display_errors is on.
Timeout is set to 60 seconds, the error page is returned in about 10 seconds.
The memory usage gets about 16MB, the maximum limit is 256MB.
PHP 5.3.1, Windows 7 64bit.
So does anyone know how to effectively debug this error?
Well, you can start by reading "Generating a Backtrace" and searching for registered PHP bug reports similar to you, and submitting a bug if you've really found none. If you are really interested, you can inspect the PHP Source and propose a patch.
Looks like you are experiencing a bug in PHP, leading to a crash. Try to upgrade to the latest nightly build (http://snaps.php.net/). If that doesn't help, try to get a backtrace and submit a bug on bugs.php.net.
Seems that the script is taking a long time to execute so the browser is timing out. try using the php function set_time_limit to keep the script from dying.
set_time_limit(0); // no time limit
If apache is crashing it may be due to a mangled .htaccess. Is there any log entry before the error message/crash to indicate what Apache thought it was doing?
Upgrade your PHP.
(This is what I did, and now it seems to work, however my question still stands: How do I effectively debug issues like these?)
http://bugs.php.net/bugs-getting-valgrind-log.php
[edit2]
http://en.wikipedia.org/wiki/Strace can also be handy to find the spot that takes you system down.
[edit]
how did you monitor the memory usage?

Categories