Hello php experts,
We are doing php upgrade from 5.2.3 to 5.3.2 (unix on Octeon/MIPS) and getting a compilation error
-
Issue with Octeon platform
o Round()
API throws "Maximum execution time exceeded" error. Analyzed the issue and Found the problem to be that "mult" function (src/dist/php/Zend/zend_strtod.c) is being called indefinitely from "pow5mult" function (src/dist/php/Zend/zend_strtod.c). It might be some problem with byte alignment on this platform.
-
We have filed a bug
o http://bugs.php.net/bug.php?id=51701 - "Maximum execution time exceeded" error with round()
API on octeon platform
Any idea about this
Here is a response from one of our platform developers after doing some analysis
In pow5mult():
for(;;) {
if (k & 1) {
b1 = mult(b, p5);
Bfree(b);
b = b1;
}
if (!(k >>= 1)) {
break;
}
if (!(p51 = p5->next)) {
if (!(p51 = p5->next)) {
p51 = p5->next = mult(p5,p5);
p51->next = 0;
}
}
p5 = p51;
}
As it is suspected that mult is being called continuously from pow5mult: do we know:
-
How b and p5 are changing over each iteration?
-
If the computation done by mult() in each of these iteration is correct or not?
-
What is the impact of this computation on k?
-
The loop will break only with change in k but I don't see k changing here in mult5pow().
Can anyone throw some light on this?
Thanks