2

I looked at the messages I could find, but didn't find an answer that appears to help. I have a routine that calls debug_backtrace() and then cycles through the elements, outputting them in a nice format for my log. This works fine in most cases.

In some calls, the system just hangs. Assuming the following:

$curStack = debug_backtrace();
foreach ($curStack as $myStackLevel) {
  $test = gettype($myStackLevel);
  // code to write out contents of $myStackLevel
  // Log that we are getting the next item
}
// Log that the foreach is done

In some cases, PHP just dies - I can see the log that it processed the current item, but it crashes on the foreach line (or at least before I can programatically see the contects of the next $myStackLevel.

In one message here, I saw something about recursive calls and using serialize, but I can't use serialize (I use PDO and had the message "You cannot serialize or unserialize PDO instances") So that's out.

The funny thing is that, if it crashes, the PHP error system still provides a complete dump of the stack.... (I found this out when I tried to use serialize).

Any help is appreciated....

Thanks,

JustMeToo

JustMeToo
  • 325
  • 1
  • 14
  • What version of PHP are you running? If it's an actual PHP bug, upgrading might help. – Dave Feb 16 '11 at 23:02
  • I am running PHP 5.2.10. I am planning to go to 5.3.x, but can't until some other issues are resolved.... – JustMeToo Feb 17 '11 at 00:48

1 Answers1

2

Are you trying to output the contents of the object elements? It's likely that you have a recursive object graph that causes the PHP process to either overflow the stack or take too long to run.

David Harkness
  • 35,992
  • 10
  • 112
  • 134
  • It appears to hang when it gets to the end of the foreach - I log a message at the end and then again just after the gettype() - I see the one at the end, but not the one after gettype. I am sure it is a recursive item of some time, but can't figure out how to get past the hang on gettype() (which I am using to figure out how to test for a recursive type item) I am sure someone has already run into this and has a fix... I just can't find it. – JustMeToo Feb 21 '11 at 16:53
  • @JustMeToo - `gettype()` should never hang. What happens if you comment out everything but `echo gettype(...)`? Also, you should be calling `gettype()` on the object in the stack--not on the stack trace element itself. Can you step through with a debugger to see exactly what's happening? – David Harkness Feb 21 '11 at 20:45