[egenix-users] Glibc Memory corruption issues with Python 2.7

M.-A. Lemburg mal at egenix.com
Tue Jul 23 15:11:59 CEST 2013


On 23.07.2013 14:04, B.Nanda Kishore wrote:
> Hi, I am using egenix-mx-base==*3.2.1*, egenix-mxodbc==*3.1.1.*
> Also it turned out that, its not specific to Python 2.7. Its happening
> w.r.to 2.6 also
> 
> Python 2.6.6 (r266:84292, Mar 22 2013, 17:29:23)
> [GCC 4.4.4 20100726 (Red Hat 4.4.4-13)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> from sqlalchemy.orm import sessionmaker
>>>> from sqlalchemy import create_engine
>>>>
>>>> Session = sessionmaker()
>>>> engine = create_engine('mssql+mxodbc://my_user:my_pwd@my_dsn')
>>>> conn = engine.connect()
> *** glibc detected *** /my_instance/bin/python: malloc(): memory
> corruption: 0x09410260 ***
> *** glibc detected *** /my_instance/bin/python: malloc(): memory
> corruption: 0x09410260 ***

Ok, but which ODBC driver and unixODBC manager version are you using ?

This looks more like a problem with the ODBC driver, since the
memory corruption is detected in the the unixODBC call
to SQLExecDirectW.

Given that the SQLExecDirectW is used, are you using a Unicode
connection string for connecting to the database ?

Thanks,
-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Jul 23 2013)
>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/

> Regards,
> Nanda
> 
> 
> On Tue, Jul 23, 2013 at 5:31 PM, M.-A. Lemburg <mal at egenix.com> wrote:
> 
>> Hello,
>>
>> which ODBC driver and unixODBC manager version are you using ?
>>
>> The stack trace shows that the double free happens in the
>> unixODBC driver. It could be related to a bug we fixed in
>> 3.1.2. Perhaps you could try with that version and see whether
>> it fixes your problem:
>>
>> http://www.egenix.com/products/python/mxODBC/3.1.2/changelog.html
>>
>> On 23.07.2013 13:52, B.Nanda Kishore wrote:
>>> Hi Everybody,
>>>
>>> I am running into glibc memory corruption issues when I try to access
>> mssql
>>> db using mxodbc,
>>> using SQLAlchemy ORM with Python 2.7 alone(everything works fine with
>>> Python 2.6).
>>> Given below is the stack trace. Can someone let me know what I am
>> missing ?
>>> Currently I have 2.12 version of glibc.
>>>
>>> ---------- Stack Trace ---------------
>>>
>>> Python 2.7.3 (default, Apr 10 2013, 05:46:21)
>>> [GCC 4.6.3] on linux2
>>> Type "help", "copyright", "credits" or "license" for more information.
>>>>>> from sqlalchemy.orm import sessionmaker
>>>>>> from sqlalchemy import create_engine
>>>>>>
>>>>>> Session = sessionmaker()
>>>>>> engine = create_engine('mssql+mxodbc://my_user:my_pwd@my_dsn')
>>>>>> conn = engine.connect()
>>> *** glibc detected *** /usr/bin/python: double free or corruption
>> (!prev):
>>> 0x09eecf48 ***
>>> ======= Backtrace: =========
>>> /lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0xb7437ee2]
>>>
>> /my_instance/parts/unixODBC/lib/libodbc.so.1(SQLExecDirectW+0x567)[0xb6d29427]
>>>
>> /my_instance/eggs/egenix_mxodbc-3.1.1-py2.7-linux-i686.egg/mx/ODBC/unixODBC/mxODBC.so(+0x12b97)[0xb6d7ab97]
>>>
>> /my_instance/eggs/egenix_mxodbc-3.1.1-py2.7-linux-i686.egg/mx/ODBC/unixODBC/mxODBC.so(+0x1441b)[0xb6d7c41b]
>>> /usr/bin/python(PyEval_EvalFrameEx+0x5a07)[0x81a2d47]
>>> ======= Memory map: ========
>>> 08048000-0829e000 r-xp 00000000 fc:01 11141548   /usr/bin/python2.7
>>> 0829e000-0829f000 r--p 00255000 fc:01 11141548   /usr/bin/python2.7
>>> 0829f000-082f4000 rw-p 00256000 fc:01 11141548   /usr/bin/python2.7
>>> 082f4000-08300000 rw-p 00000000 00:00 0
>>> 099a3000-09f66000 rw-p 00000000 00:00 0          [heap]
>>> b6c85000-b6c86000 rw-p 00000000 00:00 0
>>> b6c86000-b6c88000 r-xp 00000000 fc:01 11143751
>>> /usr/lib/i386-linux-gnu/gconv/CP1252.so
>>> b6c88000-b6c89000 r--p 00001000 fc:01 11143751
>>> /usr/lib/i386-linux-gnu/gconv/CP1252.so
>>> b6c89000-b6c8a000 rw-p 00002000 fc:01 11143751
>>> /usr/lib/i386-linux-gnu/gconv/CP1252.so
>>> b6c8a000-b6c9f000 r-xp 00000000 00:13 264309
>>> /my_instance/parts/unixODBC/lib/libodbcinst.so.1.0.0
>>> b6c9f000-b6ca0000 r--p 00014000 00:13 264309
>>> /my_instance/parts/unixODBC/lib/libodbcinst.so.1.0.0
>>> b6ca0000-b6ca1000 rw-p 00015000 00:13 264309
>>> /my_instance/parts/unixODBC/lib/libodbcinst.so.1.0.0
>>> b6ca1000-b6cf2000 r-xp 00000000 00:13 264437
>>> /my_instance/parts/FreeTDS/lib/libtdsodbc.so.0.0.0
>>> b6cf2000-b6cf4000 r--p 00050000 00:13 264437
>>> /my_instance/parts/FreeTDS/lib/libtdsodbc.so.0.0.0
>>> b6cf4000-b6cf5000 rw-p 00052000 00:13 264437
>>> /my_instance/parts/FreeTDS/lib/libtdsodbc.so.0.0.0
>>> b6cf5000-b6d62000 r-xp 00000000 00:13 264314
>>> /my_instance/parts/unixODBC/lib/libodbc.so.1.0.0
>>> b6d62000-b6d63000 r--p 0006c000 00:13 264314
>>> /my_instance/parts/unixODBC/lib/libodbc.so.1.0.0
>>> b6d63000-b6d67000 rw-p 0006d000 00:13 264314
>>> /my_instance/parts/unixODBC/lib/libodbc.so.1.0.0
>>> b6d67000-b6d68000 rw-p 00000000 00:00 0
>>> b6d68000-b6d8c000 r-xp 00000000 00:13 133343
>>>
>> /my_instance/eggs/egenix_mxodbc-3.1.1-py2.7-linux-i686.egg/mx/ODBC/unixODBC/mxODBC.so
>>> b6d8c000-b6d90000 r--p 00023000 00:13 133343
>>>
>> /my_instance/eggs/egenix_mxodbc-3.1.1-py2.7-linux-i686.egg/mx/ODBC/unixODBC/mxODBC.so
>>> b6d90000-b6d91000 rw-p 00027000 00:13 133343
>>>
>> /my_instance/eggs/egenix_mxodbc-3.1.1-py2.7-linux-i686.egg/mx/ODBC/unixODBC/mxODBC.so
>>> b6d91000-b6d98000 r-xp 00000000 fc:01 10485788   /lib/i386-linux-gnu/
>>> librt-2.15.so
>>> b6d98000-b6d99000 r--p 00006000 fc:01 10485788   /lib/i386-linux-gnu/
>>> librt-2.15.so
>>> b6d99000-b6d9a000 rw-p 00007000 fc:01 10485788   /lib/i386-linux-gnu/
>>> librt-2.15.so
>>> b6d9d000-b6da8000 r-xp 00000000 fc:01 10485785   /lib/i386-linux-gnu/
>>> libnss_files-2.15.so
>>> b6da8000-b6da9000 r--p 0000a000 fc:01 10485785   /lib/i386-linux-gnu/
>>> libnss_files-2.15.so
>>> b6da9000-b6daa000 rw-p 0000b000 fc:01 10485785   /lib/i386-linux-gnu/
>>> libnss_files-2.15.so
>>> b6daa000-b6db8000 r-xp 00000000 00:13 133439
>>>
>> /my_instance/eggs/egenix_mx_base-3.2.1-py2.7-linux-i686.egg/mx/DateTime/mxDateTime/mxDateTime.so
>>> b6db8000-b6db9000 r--p 0000d000 00:13 133439
>>>
>> /my_instance/eggs/egenix_mx_base-3.2.1-py2.7-linux-i686.egg/mx/DateTime/mxDateTime/mxDateTime.so
>>> b6db9000-b6dba000 rw-p 0000e000 00:13 133439
>>>
>> /my_instance/eggs/egenix_mx_base-3.2.1-py2.7-linux-i686.egg/mx/DateTime/mxDateTime/mxDateTime.so
>>> b6dbb000-b6dbe000 r-xp 00000000 00:13 264723
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cresultproxy.so
>>> b6dbe000-b6dbf000 r--p 00002000 00:13 264723
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cresultproxy.so
>>> b6dbf000-b6dc0000 rw-p 00003000 00:13 264723
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cresultproxy.so
>>> b6dc0000-b6dc1000 r-xp 00000000 00:13 264722
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cutils.so
>>> b6dc1000-b6dc2000 r--p 00000000 00:13 264722
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cutils.so
>>> b6dc2000-b6dc3000 rw-p 00001000 00:13 264722
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cutils.so
>>> b6dc3000-b6ea6000 rw-p 00000000 00:00 0
>>> b6ea7000-b6ea9000 r-xp 00000000 00:13 264717
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cprocessors.so
>>> b6ea9000-b6eaa000 r--p 00001000 00:13 264717
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cprocessors.so
>>> b6eaa000-b6eab000 rw-p 00002000 00:13 264717
>>>
>> /my_instance/eggs/SQLAlchemy-0.8.2-py2.7-linux-i686.egg/sqlalchemy/cprocessors.so
>>> b6eab000-b6eec000 rw-p 00000000 00:00 0
>>> b6eed000-b6f00000 r-xp 00000000 fc:01 11147242
>>> /usr/lib/python2.7/lib-dynload/datetime.so
>>> b6f00000-b6f01000 r--p 00012000 fc:01 11147242
>>> /usr/lib/python2.7/lib-dynload/datetime.so
>>> b6f01000-b6f04000 rw-p 00013000 fc:01 11147242
>>> /usr/lib/python2.7/lib-dynload/datetime.so
>>> b6f04000-b6fc7000 rw-p 00000000 00:00 0
>>> b6fd1000-b6fdb000 r-xp 00000000 fc:01 10485789   /lib/i386-linux-gnu/
>>> libnss_nis-2.15.so
>>> b6fdb000-b6fdc000 r--p 00009000 fc:01 10485789   /lib/i386-linux-gnu/
>>> libnss_nis-2.15.so
>>> b6fdc000-b6fdd000 rw-p 0000a000 fc:01 10485789   /lib/i386-linux-gnu/
>>> libnss_nis-2.15.so
>>> b6fdd000-b6ff3000 r-xp 00000000 fc:01 10485801   /lib/i386-linux-gnu/
>>> libnsl-2.15.so
>>> b6ff3000-b6ff4000 r--p 00015000 fc:01 10485801   /lib/i386-linux-gnu/
>>> libnsl-2.15.so
>>> b6ff4000-b6ff5000 rw-p 00016000 fc:01 10485801   /lib/i386-linux-gnu/
>>> libnsl-2.15.so
>>> b6ff5000-b6ff7000 rw-p 00000000 00:00 0
>>> b7003000-b7005000 r-xp 00000000 fc:01 11144103
>>> /usr/lib/i386-linux-gnu/gconv/ISO8859-1.so
>>> b7005000-b7006000 r--p 00001000 fc:01 11144103
>>> /usr/lib/i386-linux-gnu/gconv/ISO8859-1.so
>>> b7006000-b7007000 rw-p 00002000 fc:01 11144103
>>> /usr/lib/i386-linux-gnu/gconv/ISO8859-1.so
>>> b7007000-b7048000 rw-p 00000000 00:00 0
>>> b7048000-b7064000 r-xp 00000000 fc:01 10485829
>>> /lib/i386-linux-gnu/libtinfo.so.5.9
>>> b7064000-b7066000 r--p 0001b000 fc:01 10485829
>>> /lib/i386-linux-gnu/libtinfo.so.5.9
>>> b7066000-b7067000 rw-p 0001d000 fc:01 10485829
>>> /lib/i386-linux-gnu/libtinfo.so.5.9
>>> b7067000-b709c000 r-xp 00000000 fc:01 10486005
>>> /lib/i386-linux-gnu/libreadline.so.6.2
>>> b709c000-b709d000 r--p 00035000 fc:01 10486005
>>> /lib/i386-linux-gnu/libreadline.so.6.2
>>> b709d000-b70a0000 rw-p 00036000 fc:01 10486005
>>> /lib/i386-linux-gnu/libreadline.so.6.2
>>> b70a0000-b70a1000 rw-p 00000000 00:00 0
>>> b70a2000-b70a9000 r-xp 00000000 fc:01 10485779   /lib/i386-linux-gnu/
>>> libnss_compat-2.15.so
>>> b70a9000-b70aa000 r--p 00006000 fc:01 10485779   /lib/i386-linux-gnu/
>>> libnss_compat-2.15.so
>>> b70aa000-b70ab000 rw-p 00007000 fc:01 10485779   /lib/i386-linux-gnu/
>>> libnss_compat-2.15.so
>>> b70ab000-b70ae000 r-xp 00000000 fc:01 11147246
>>> /usr/lib/python2.7/lib-dynload/_heapq.so
>>> b70ae000-b70af000 r--p 00002000 fc:01 11147246
>>> /usr/lib/python2.7/lib-dynload/_heapq.so
>>> b70af000-b70b1000 rw-p 00003000 fc:01 11147246
>>> /usr/lib/python2.7/lib-dynload/_heapq.so
>>> b70b1000-b72b1000 r--p 00000000 fc:01 11147310
>>> /usr/lib/locale/locale-archive
>>> b72b1000-b72f2000 rw-p 00000000 00:00 0
>>> b72f3000-b7377000 rw-p 00000000 00:00 0
>>> b7377000-b73a1000 r-xp 00000000 fc:01 10485792   /lib/i386-linux-gnu/
>>> libm-2.15.so
>>> b73a1000-b73a2000 r--p 00029000 fc:01 10485792   /lib/i386-linux-gnu/
>>> libm-2.15.so
>>> b73a2000-b73a3000 rw-p 0002a000 fc:01 10485792   /lib/i386-linux-gnu/
>>> libm-2.15.so
>>> b73a3000-b73bf000 r-xp 00000000 fc:01 10485804
>>> /lib/i386-linux-gnu/libgcc_s.so.1
>>> b73bf000-b73c0000 r--p 0001b000 fc:01 10485804
>>> /lib/i386-linux-gnu/libgcc_s.so.1
>>> b73c0000-b73c1000 rw-p 0001c000 fc:01 10485804
>>> /lib/i386-linux-gnu/libgcc_s.so.1
>>> b73c1000-b73c2000 rw-p 00000000 00:00 0
>>> b73c2000-b7565000 r-xp 00000000 fc:01 10485777   /lib/i386-linux-gnu/
>>> libc-2.15.so
>>> b7565000-b7566000 ---p 001a3000 fc:01 10485777   /lib/i386-linux-gnu/
>>> libc-2.15.so
>>> b7566000-b7568000 r--p 001a3000 fc:01 10485777   /lib/i386-linux-gnu/
>>> libc-2.15.so
>>> b7568000-b7569000 rw-p 001a5000 fc:01 10485777   /lib/i386-linux-gnu/
>>> libc-2.15.so
>>> b7569000-b756c000 rw-p 00000000 00:00 0
>>> b756c000-b7580000 r-xp 00000000 fc:01 10485988
>>> /lib/i386-linux-gnu/libz.so.1.2.3.4
>>> b7580000-b7581000 r--p 00013000 fc:01 10485988
>>> /lib/i386-linux-gnu/libz.so.1.2.3.4
>>> b7581000-b7582000 rw-p 00014000 fc:01 10485988
>>> /lib/i386-linux-gnu/libz.so.1.2.3.4
>>> b7582000-b7714000 r-xp 00000000 fc:01 10489622
>>> /lib/i386-linux-gnu/libcrypto.so.1.0.0
>>> b7714000-b7723000 r--p 00192000 fc:01 10489622
>>> /lib/i386-linux-gnu/libcrypto.so.1.0.0
>>> b7723000-b772a000 rw-p 001a1000 fc:01 10489622
>>> /lib/i386-linux-gnu/libcrypto.so.1.0.0
>>> b772a000-b772d000 rw-p 00000000 00:00 0
>>> b772d000-b777e000 r-xp 00000000 fc:01 10489621
>>> /lib/i386-linux-gnu/libssl.so.1.0.0
>>> b777e000-b7780000 r--p 00050000 fc:01 10489621
>>> /lib/i386-linux-gnu/libssl.so.1.0.0
>>> b7780000-b7784000 rw-p 00052000 fc:01 10489621
>>> /lib/i386-linux-gnu/libssl.so.1.0.0
>>> b7784000-b7786000 r-xp 00000000 fc:01 10485776   /lib/i386-linux-gnu/
>>> libutil-2.15.so
>>> b7786000-b7787000 r--p 00001000 fc:01 10485776   /lib/i386-linux-gnu/
>>> libutil-2.15.so
>>> b7787000-b7788000 rw-p 00002000 fc:01 10485776   /lib/i386-linux-gnu/
>>> libutil-2.15.so
>>> b7788000-b7789000 rw-p 00000000 00:00 0
>>> b7789000-b778c000 r-xp 00000000 fc:01 10485796   /lib/i386-linux-gnu/
>>> libdl-2.15.so
>>> b778c000-b778d000 r--p 00002000 fc:01 10485796   /lib/i386-linux-gnu/
>>> libdl-2.15.so
>>> b778d000-b778e000 rw-p 00003000 fc:01 10485796   /lib/i386-linux-gnu/
>>> libdl-2.15.so
>>> b778e000-b77a5000 r-xp 00000000 fc:01 10485790   /lib/i386-linux-gnu/
>>> libpthread-2.15.so
>>> b77a5000-b77a6000 r--p 00016000 fc:01 10485790   /lib/i386-linux-gnu/
>>> libpthread-2.15.so
>>> b77a6000-b77a7000 rw-p 00017000 fc:01 10485790   /lib/i386-linux-gnu/
>>> libpthread-2.15.so
>>> b77a7000-b77a9000 rw-p 00000000 00:00 0
>>> b77aa000-b77ab000 rw-s 00000000 00:04 65538      /SYSV791309fc (deleted)
>>> b77ab000-b77ac000 rw-p 00000000 00:00 0
>>> b77ac000-b77b3000 r--s 00000000 fc:01 11144061
>>> /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
>>> b77b3000-b77b7000 r-xp 00000000 fc:01 11147190
>>> /usr/lib/python2.7/lib-dynload/readline.so
>>> b77b7000-b77b8000 r--p 00003000 fc:01 11147190
>>> /usr/lib/python2.7/lib-dynload/readline.so
>>> b77b8000-b77b9000 rw-p 00004000 fc:01 11147190
>>> /usr/lib/python2.7/lib-dynload/readline.so
>>> b77b9000-b77bb000 rw-p 00000000 00:00 0
>>> b77bb000-b77bc000 r-xp 00000000 00:00 0          [vdso]
>>> b77bc000-b77dc000 r-xp 00000000 fc:01 10485793   /lib/i386-linux-gnu/
>>> ld-2.15.so
>>> b77dc000-b77dd000 r--p 0001f000 fc:01 10485793   /lib/i386-linux-gnu/
>>> ld-2.15.so
>>> b77dd000-b77de000 rw-p 00020000 fc:01 10485793   /lib/i386-linux-gnu/
>>> ld-2.15.so
>>> bfaa5000-bfac6000 rw-p 00000000 00:00 0          [stack]
>>> Aborted (core dumped)
>>>
>>> Regards,
>>> Nanda
>>>
>>>
>>>
>>>
>>> _______________________________________________________________________
>>> eGenix.com User Mailing List                     http://www.egenix.com/
>>> https://www.egenix.com/mailman/listinfo/egenix-users
>>>
>>
>> --
>> Marc-Andre Lemburg
>> eGenix.com
>>
>> Professional Python Services directly from the Source  (#1, Jul 23 2013)
>>>>> Python Projects, Consulting and Support ...   http://www.egenix.com/
>>>>> mxODBC.Zope/Plone.Database.Adapter ...       http://zope.egenix.com/
>>>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
>> ________________________________________________________________________
>>
>> ::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::
>>
>>    eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
>>     D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
>>            Registered at Amtsgericht Duesseldorf: HRB 46611
>>                http://www.egenix.com/company/contact/
>>
> 
> 
> 
> 
> _______________________________________________________________________
> eGenix.com User Mailing List                     http://www.egenix.com/
> https://www.egenix.com/mailman/listinfo/egenix-users
> 



More information about the egenix-users mailing list