bogus OverflowError: python bug?

L

Luke

Hi,

I'm getting an OverflowError which doesn't make sense to me. Is this a
python bug?

Traceback (most recent call last):
File "/home/demoau/lib/py/omniORB/__init__.py", line 717, in static_is_a
for b in cls.__bases__:
OverflowError: long int too large to convert to int

cls=<class omniORB.PortableServer.Servant at 0x4073656c>
cls.__bases__=()

Surely that line of source code shouldn't be able to produce an OverflowError?

(BTW, I know that a traceback can sometimes print the wrong source line when
the .py file has been modified since importing the module into the python
process, but I was careful to avoid this problem).

Regards,
Luke.
 
?

=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=

Luke said:
I'm getting an OverflowError which doesn't make sense to me. Is this a
python bug?

I very much doubt this. More likely, it's an omniORB bug.
Surely that line of source code shouldn't be able to produce an
OverflowError?

It actually might. If the internal memory of the interpreter got
corrupted by a buggy extension module, any code may cause any exception.
(BTW, I know that a traceback can sometimes print the wrong source line
when
the .py file has been modified since importing the module into the python
process, but I was careful to avoid this problem).

There are other possible causes for bogus exceptions. A common one is
that Python set an exception at some point, but the extension module
forgot to forward the exception. Then, the next time Python checks
for exceptions, it sees that there still is an exception pending, and
raises it. That exception will make no sense that that point, of course.

Only a gdb session can tell what really happened.

Regards,
Martin
 
L

Luke

Martin said:
It actually might. If the internal memory of the interpreter got
corrupted by a buggy extension module, any code may cause any exception.

Good point, though I would expect a memory corruption bug to cause less
predictable behaviour (I can repeat this problem regularly in a large
multithreaded program, and the bogus exception is always at this specific
line of python).
There are other possible causes for bogus exceptions. A common one is
that Python set an exception at some point, but the extension module
forgot to forward the exception. Then, the next time Python checks
for exceptions, it sees that there still is an exception pending, and
raises it. That exception will make no sense that that point, of course.

Oh yes of course, thanks... this sounds to be more consistent with the
repeatability of the bogus exception.
Only a gdb session can tell what really happened.

Ouch. I might try searching the omniORB extension module for a
forgot-to-forward-exception bug first.

Thanks for your help, Martin.

Luke.
 
D

Duncan Grisby

Luke said:
Martin v. Löwis wrote:

Oh yes of course, thanks... this sounds to be more consistent with the
repeatability of the bogus exception.


Ouch. I might try searching the omniORB extension module for a
forgot-to-forward-exception bug first.

The best thing for you to do is to subscribe to the omniORB mailing
list, and post as much information as you can about the problem.
Please include the full traceback, and a log from omniORB run with
-ORBtraceLevel 25.

Cheers,

Duncan.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top