Hi,

Selecting from multiple threads with thread-count > 10 my app:
 * crashes without any error message
 * starts spweing out
cx_Oracle.DatabaseError: Error while trying to retrieve text for error ORA-12520
 * crashes with:
*** glibc detected *** double free or corruption (fasttop): 0x3eeff0b8 ***
 * all of the above

With 10 threads it seems to run rock-solid. With 11 it gets the errors
occasionally. with 50 it gets them quite reliably, with 200 you could
practically bet on the errors to happen. Though they don't show up regularly,
mostly they happen fast or not for a long time.

I get the error as well on Linux as on Windows.

Any ideas what I can do (other then limiting my web-server to 10 threads)?

Example Atached

Cheers,
Florian



from sqlalchemy import *
import thread

engine = create_engine('oracle://dsn=mydb&user=myusert&password=mypass')

foo = Table('foo', engine,
    Column('id', Integer, Sequence('foo_seq'), primary_key=True),
    )

try: foo.drop()
except Exception, e: print e
try: foo.create()
except Exception, e: print e

foo.insert().execute()


def test():
    while 1:
        foo.select().execute().fetchone()

for _ in range(200):
    thread.start_new_thread(test, ())

raw_input('enter to close')

"""
Traceback (most recent call last):
  File "segmentation_fault.py", line 20, in test
    foo.select().execute().fetchone()
  File "build/bdist.linux-i686/egg/sqlalchemy/sql.py", line 473, in execute
  File "build/bdist.linux-i686/egg/sqlalchemy/sql.py", line 378, in execute
  File "build/bdist.linux-i686/egg/sqlalchemy/sql.py", line 355, in execute
  File "build/bdist.linux-i686/egg/sqlalchemy/engine.py", line 626, in 
execute_compiled
  File "build/bdist.linux-i686/egg/sqlalchemy/engine.py", line 466, in 
connection
  File "build/bdist.linux-i686/egg/sqlalchemy/engine.py", line 191, in 
_connection
  File "build/bdist.linux-i686/egg/sqlalchemy/pool.py", line 89, in connect
  File "build/bdist.linux-i686/egg/sqlalchemy/pool.py", line 132, in __init__
  File "build/bdist.linux-i686/egg/sqlalchemy/pool.py", line 102, in get
  File "build/bdist.linux-i686/egg/sqlalchemy/pool.py", line 219, in do_get
  File "build/bdist.linux-i686/egg/sqlalchemy/pool.py", line 273, in <lambda>
cx_Oracle.DatabaseError: Error while trying to retrieve text for error ORA-12520

*** glibc detected *** double free or corruption (fasttop): 0x3eeff0b8 ***
"""

Reply via email to