in reply to loop not ending...

Perhaps someone can pick up on something I missed on a few cursory passes, but I would try to narrow down the scope of the problem a bit further. You said you sprinkled some debugging code all around to identify its progress through the loop. Were you able to nail it down to a specific spot that was blocking/looping? Were you able to identify a function or other call that was blocking and not returning control? If you're not getting responsive debugging output, be sure $| is set to 1, so that stdio buffering isn't keeping you from seeing something when you should be.

Replies are listed 'Best First'.
RE: Re: loop not ending...
by jptxs (Curate) on Oct 25, 2000 at 01:04 UTC

    $| is set t 1, got that :)

    the problem i'm having is that the only thing i've been able to determine is that it does not leave the loop. The array it's looping on only has three elements, it makes exactly three entries into the database and then has no database activity after that, it does all the other assignment in the loop and will do everything up to the last brace with no problem. It just won't leave the loop. I've literally gone through and put a die btween every line of code. I have known from the start it had three results to process - i have short-circuited it at two and it's fine with everything before that. I have altered the data coming in so that it will have less and more than three loops to go through, always on the last time through it fails.

    "sometimes when you make a request for the head you don't
    want the big, fat body...don't you go snickering."
                                             -- Nathan Torkington UoP2K a.k.a gnat

      So, breaking it down, your code and debugging looks something like this:
      for (...) { print "We've started the loop\n"; # body of loop print "We're about to leave the loop\n"; } print "We've left the loop\n";
      Produces this output (with 3 iterations):
      We've started the loop We're about to leave the loop We've started the loop We're about to leave the loop We've started the loop We're about to leave the loop <hang>
      Is this accurate?

      I'm deliberately oversimplifying and ignoring your code for the moment. If you have a line at the very end of the loop's block that is being executed, but the very next line after that is not, that doesn't sound right. Something else is amiss. If you can't reduce your code to that level of simplicity, then some element of complexity between that and your actual code is probably responsible for the behavior.

      See if you can reduce your code in functionality to the bare minimum required to reproduce the flaw. If the bug doesn't become self-evident by this time, post the simplified code and we'll see if we can't take it from there.