need help with bizarre error caught in debugger. execution is hanging

omission9 omission9 at invalid.email.info
Sun Feb 22 23:39:26 EST 2004


Ziaran wrote:
> Why do you do
> 
> if len(self.data) <= 0:
>     return len(self.data[0])
> 
> Isn't that a sure IndexError exception?
> Maybe you catch it somewhere up the stack and so you keep it silent.
> 

That if statement just happens to be the last line before the return.
What you have stated is not what actually happens.
The actual code is
         if len(self.data) <= 0:
             return 0
         else:
             return len(self.data[0])
I guess the "else" line doesn't appear in the stack trace for whatever 
reason.
There is no doubt, however, that it is hanging on the line
return len(self.data[0])

> 
> "omission9" <omission9 at invalid.email.info> wrote in message
> news:vfBZb.57526$1S1.32587 at nwrddc01.gnilink.net...
> 
>>Any advice on the following would be much appreciated. I have thrown
>>everything I have at it and am completely stumped. I apologize for the
>>length, I have tried to be as succint as possible.
>>
>>I have a pythoncard/wxPython application. The application works well
>>except that users were reporting occasional crashes. The application
>>would simply stop and just hang. I was able to reproduce the bug
>>faithfully and ran the application in the python debugger pdb.py.
>>The trace is below and I simply cannot understand why it is hanging
>>where it is. The application gets stuck executing
>>
>>return len(self.data[0])
>>
>>This works many many times during the applications execution, indeed
>>several successful runs of this line are visible immediatley above the
>>hang. I have also printed out the value of self.data. This is a list
>>containing 12 inner lists each of length 3 at the point of the hang and
>>is never larger than that.
>>What on earth could cause this to stop the interpreter cold in its
>>tracks without an exception being thrown? CPU usage on the machine is
>>high throughout the application's execution and stays as such after the
>>"hang" begins. I eventually kill the app although I have let it run for
>>a long time and it never leaves this line.
>>For what its worth, I am using python 2.3 on windows2k.
>>
>>Anyone have idea what could be happening?
>>
>>  c:\python23\lib\site-packages\wxpython\grid.py(664)_setOORInfo()->None
>>  -> return val
>>  (Pdb) s
>>  --Return--
>>   c:\python23\lib\site-packages\wxpython\grid.py(850)__init__()->None
>>  -> self._setOORInfo(self)
>>  (Pdb) s
>>
>>
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(17)__init
> 
>>  __()
>>  -> self.data = data
>>  (Pdb) s
>>
>>
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(18)__init
> 
>>  __()
>>  -> self.colLabels = headings
>>  (Pdb) s
>>  --Return--
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(18)__init
> 
>>  __()->None
>>  -> self.colLabels = headings
>>  (Pdb) s
>>
>>
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtablegrid.py(15)__
> 
>>  init__()
>>  -> self.colsizes = colsizes
>>  (Pdb) s
>>
>>
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtablegrid.py(16)__
> 
>>  init__()
>>  -> self.SetTable(table, True)
>>  (Pdb) s
>>  --Call--
>>  c:\python23\lib\site-packages\wxpython\grid.py(993)SetTable()
>>  -> def SetTable(self, *_args, **_kwargs):
>>  (Pdb) s
>>  > c:\python23\lib\site-packages\wxpython\grid.py(994)SetTable()
>>  -> val = gridc.wxGrid_SetTable(self, *_args, **_kwargs)
>>  (Pdb) s
>>  --Call--
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(27)GetNumb
> erRows()
> 
>>  -> def GetNumberRows(self):
>>  (Pdb) s
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(28)GetNumb
> erRows()
> 
>>  -> return len(self.data)
>>  (Pdb) s
>>  --Return--
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(28)GetNumb
> erRows()->12
> 
>>  -> return len(self.data)
>>  (Pdb) s
>>  --Call--
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(30)GetNumb
> erCols()
> 
>>  -> def GetNumberCols(self):
>>  (Pdb) s
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(31)GetNumb
> erCols()
> 
>>  -> if len(self.data) <= 0:
>>  (Pdb) s
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(34)GetNumb
> erCols()
> 
>>  -> return len(self.data[0])
>>  (Pdb) s
>>--Return--
>>
>>
>>
> 
> c:\cygwin\home\ar881\development\bt_analysis\console\ndbbtable.py(34)GetNumb
> erCols()->3
> 
>>  -> return len(self.data[0])
>>  (Pdb) s
>>
> 
> 
> 




More information about the Python-list mailing list