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:
1.       How b and p5 are changing over each iteration?
2.      If the computation done by mult() in each of these iteration is correct 
or not?
3.      What is the impact of this computation on k?
4.      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

Reply via email to