By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
457,900 Members | 1,378 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 457,900 IT Pros & Developers. It's quick & easy.

python 2.3.2 hangs when returning an int

P: n/a
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])

which is in this function

def GetNumberCols(self):
if len(self.data) <= 0:
return 0
else:
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.2 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\conso le\ndbbtable.py(17)__init

__()
-> self.data = data
(Pdb) s
c:\cygwin\home\ar881\development\bt_analysis\conso le\ndbbtable.py(18)__init

__()
-> self.colLabels = headings
(Pdb) s
Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
I guess it is a thread synchronization progblem
In that case some other thread modifies self.data leaving it empty in the
time between the if statement expression is evalutaed and the time the
return statement is executed.

Can this be the case?

"omission9" <ru******@salemstate.edu> wrote in message
news:de**************************@posting.google.c om...
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])

which is in this function

def GetNumberCols(self):
if len(self.data) <= 0:
return 0
else:
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.2 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\conso le\ndbbtable.py(17)__init
__()
-> self.data = data
(Pdb) s
c:\cygwin\home\ar881\development\bt_analysis\conso le\ndbbtable.py(18)__init
__()
-> self.colLabels = headings
(Pdb) s

Jul 18 '05 #2

P: n/a
ru******@salemstate.edu (omission9) writes:
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])


Does pythoncard or wxPython (or your program) use weak references?
There have been serious bugs fixed with weakrefs in Python 2.3.3.

Thomas
Jul 18 '05 #3

P: n/a
Thanks to all who responded. This took me forever to replicate and is
not that easy to demonstrate outside of my fairly complex application.
Basically, I feel that this is the fault of the Python garbage
collector. What was happening was that in one function I locally defined
a class which extended wxGrid. In another function, which was called by
the first one mentioned, I instantiated another instance, local to the
function, of that class. It seems that even though the wxGrid class
used in the calling function was only used after the function call
some stray references or something to the other instance were still
drifting around in the interpreter which were causing some bizarro
problems like the one in my original post. By eliminating the instance
in the function that was being called I eliminated the problem.
BIZARRE!! What made this so awful was that it took many many iterations
of these functions to generate the error. I have no idea why it didn't
blow the first, say, hundred times through.
Maybe if I ever get the motivation I'll attach a C debugger to the whole
thing and look deeper into the guts.
omission9 wrote:
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])

which is in this function

def GetNumberCols(self):
if len(self.data) <= 0:
return 0
else:
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.2 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\conso le\ndbbtable.py(17)__init

__()
-> self.data = data
(Pdb) s
c:\cygwin\home\ar881\development\bt_analysis\conso le\ndbbtable.py(18)__init

__()
-> self.colLabels = headings
(Pdb) s


Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.