为什么我用apc随机遇到这个致命错误(在Yii Framework中)?

I sometimes run into

Fatal error: require() [<a href='function.require'>function.require</a>]: apc_fcntl_lock failed errno:6 in C:\web\yii\framework\web\CWebApplication.php on line 345

code context:

        else
            $controllerID.='/';
        $className=ucfirst($id).'Controller';
        $classFile=$basePath.DIRECTORY_SEPARATOR.$className.'.php';
        if(is_file($classFile))
        {
            if(!class_exists($className,false))
                require($classFile);  ////////////THIS IS LINE 345
            if(class_exists($className,false) && is_subclass_of($className,'CController'))
            {
                $id[0]=strtolower($id[0]);
                return array(
                    new $className($controllerID.$id,$owner===$this?null:$owner),
                    $this->parseActionParams($route),
                );
            }
            return null;
        }

Relative runtime environment:

OS:win2k3.
PHP Version 5.3.6 
Server API  CGI/FastCGI

apc:
Version 3.1.8-dev
APC Debugging   Disabled
MMAP Support    Disabled
Locking type    File Locks
Serialization Support   php
Revision    $Revision: 308812 $
Build Date  Mar 1 2011 13:31:44

What caused this error? How do I fix it?

This looks like an APC issue, which I also encounter from time to time. I can't tell you 100% what's going on, but, while developing you often change, move or overwrite files. APC then seems to loose the inode of the file which is used internally to handle to bytecode-caching.

For me the only way to 'fix' the error is to restart the webserver.

Does this also happen on production systems, where you don't change the sourcecode very often?

Seems it's apc's deadlock bug http://www.searchtb.com/2014/02/apc-lock-php-fpm.html I asked one of the apc maintainers about this, he suggested me to use opcache instead of apc.