加载调试工具栏时出错/无法获取pthread锁定| Symfony2的

时间:2014-02-23 14:10:54

标签: php symfony

几乎每次我想通过app_dev.php查看我的网站页面时,都会出现“加载调试工具栏时出错”对话框,如果我点击Firefug查看详细信息,我会收到此错误:

  

FatalErrorException:错误:require()[function.require]:无法   获取pthread锁(EDEADLK)   /Users/me/Sites/myproject/vendor/symfony/symfony/src/Symfony/Component/Debug/DebugClassLoader.php   第120行

这真烦人......

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

它肯定与APC有关,这是唯一发出错误的东西。

http://lxr.php.net/xref/PECL/APC/apc_pthreadmutex.c#76

(rwlock可以发出相同的错误)

两件事:

  • 信息可能是错的;根据操作系统的默认互斥锁属性,EDEADLK可能意味着您已经拥有锁定,而不是您无法获取锁定
  • 我们无能为力......

APC支持许多不同类型的锁定,因此,并且由于每个实现给出的各种返回值来表示不同的锁定状态,APC的代码库不检查对锁定函数的调用的返回值,而不是完全正如您所看到的,在锁定功能本身内保释。虽然业务逻辑无法为奇怪的状态做准备,比如EDEADLK ......

这将是我的猜测,而且我可能是对的,某些地方的某些事情会导致尝试递归锁定缓存,这可能是由于调用include / require / autoloaders而不是调用获取来自用户缓存的数据。

我所说的一切都没有帮助......对不起......