test for absence of infinite loop

Robin Becker robin at reportlab.com
Tue Jul 17 07:39:44 EDT 2018


On 17/07/2018 12:16, Cameron Simpson wrote:
> On 17Jul2018 10:10, Robin Becker <robin at reportlab.com> wrote:
>> A user reported an infinite loop in reportlab. I determined a possible cause and fix and would like to test for absence of the 
>> loop. Is there any way to check for presence/absence of an infinite loop in python? I imagine we could do something like call an 
>> external process and see if it takes too long, but that seems a bit flaky.
> 
> While others have kindly pointed you at the halting problem (unsolvable in the general case) you can usually verify that the 
> specific problem you fixed is fixed. Can you figure out how long the task should run with your fix in a test case? Not as time, 
> but in loop iterations? Put a counter in the loop and check that its value doesn't exceed that.

well I understand the problem about not halting. However as you point out in a fixed case I know that the test should take 
fractions of a second to complete. I certainly don't want to put instrumentation into the source code. It's relatively easy to 
imagine polling termination of a separate thread/process, but that's not particularly reliable. I don't know if there is a way to 
ask a python interpeter how many instructions it has carried out.
-- 
Robin Becker



More information about the Python-list mailing list