Edit report at http://bugs.php.net/bug.php?id=52144&edit=1
ID: 52144
Comment by: nicolas at netlog dot com
Reported by: taco at procurios dot nl
Summary: Error: Base lambda function for closure not found
Status: Open
Type: Bug
Package: Scripting Engine problem
Operating System: linux
PHP Version: 5.3.2
Block user comment: N
Private report: N
New Comment:
Hi there,
We're experiencing the same problem here at Netlog. Also on production servers
when we have some load. Unable to isolate this issue yet. We're running php
5.3.5
and apc 3.1.9. If we disable APC the problem goes away.
Any clues here?
Previous Comments:
------------------------------------------------------------------------
[2010-11-05 08:27:47] janne dot hietamaki at gmail dot com
Updated to APC 3.1.5 and the problem still persists.
------------------------------------------------------------------------
[2010-11-05 08:14:07] janne dot hietamaki at gmail dot com
I'm seeing this error quite often on our production servers.
The problem seems to have something to do with APC cache, and after updating
the files or apc_clear_cache() some random anonymous function call breaks at
somewhere on our code.
I can reproduce the error on our production server almost every time, but I
have not yet been able to build a reproducible test case. It seems to be a
concurrency issue, so the reproduction most probably
requires concurrent APC cache clearing and lambda function calls.
We're running PHP 5.3.3 with APC 3.1.4 on RHEL. I could try to upgrade to APC
3.1.5 next.
Any help would be appreciated.
------------------------------------------------------------------------
[2010-06-22 15:26:55] taco at procurios dot nl
The code in which the problem occurred looks like:
<?php
$methods = array(
'pfd_hor_pap' => function (&$v)
{
if (!empty($v)) {
$v /= 13.66;
}
return true;
},
// ...some other lambda functions
);
// ...code that uses the array with lambda functions
?>
The error occurs at the definition of the first lambda function in the array.
The problem is that the error isn't reproducable (at least not when I want it
to be). That's why I'd like to know what the typical situation is in which this
error could occur.
------------------------------------------------------------------------
[2010-06-22 15:09:52] [email protected]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
Please also ensure that you're having no Zend extension or opcode cache or
similar loaded.
------------------------------------------------------------------------
[2010-06-22 13:30:52] taco at procurios dot nl
Description:
------------
I've rewritten some create_function() calls to lambda functions. After updating
our servers with the new code the following error started to occur on one of
the servers:
"Base lambda function for closure not found"
We immediately replaced the new code with the old and tried to figure out what
went wrong. Since we couldn't find the bug and on development machines nothing
went wrong, we gave the new code another try: everything worked like expected,
without errors.
I'd really like to know what could have triggered this error, especially
because we didn't change the code that triggered it.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=52144&edit=1