2017-04-25 38 views
1

我們在生產環境中運行pyodbc 4.0.1,並且突然開始面對內存錯誤。我不知道爲什麼它開始發生,因爲一切正常工作,直到那時......有沒有任何已知的根本原因的問題在服務器配置方面?當使用FreeTDS ODBC與pyodbc時,glibc檢測到損壞的雙鏈表

我們已經將我們的Pyodbc版本從4.0.1升級到了DEV和UAT中的4.0.16。不幸的是,這個問題仍然存在並且具有可重現性(見下面的跟蹤)。

[...] 
*** glibc detected *** python: corrupted double-linked list: 0x0000000002644650 *** 
======= Backtrace: ========= 
/lib64/libc.so.6(+0x75f4e)[0x7f751c639f4e] 
/lib64/libc.so.6(+0x79066)[0x7f751c63d066] 
/usr/lib64/libtdsodbc.so.0(+0x1e2fd)[0x7f74fd2aa2fd] 
/usr/lib64/libtdsodbc.so.0(+0x2095e)[0x7f74fd2ac95e] 
/usr/lib64/libtdsodbc.so.0(+0x27de5)[0x7f74fd2b3de5] 
/usr/lib64/libtdsodbc.so.0(+0x3729f)[0x7f74fd2c329f] 
/usr/lib64/libtdsodbc.so.0(+0x11e15)[0x7f74fd29de15] 
/usr/lib64/libtdsodbc.so.0(SQLGetTypeInfo+0x187)[0x7f74fd2a0547] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/lib/libodbc.so.2(SQLGetTypeInfo+0x1e3)[0x7f75033c8c93] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/lib/python3.5/site-packages/pyodbc.cpython-35m-x86_64-linux-gnu.so(_Z17GetConnectionInfoP7_objectP10Connection+0x42f)[0x7f75036297af] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/lib/python3.5/site-packages/pyodbc.cpython-35m-x86_64-linux-gnu.so(_Z14Connection_NewP7_objectbblbS0_R6Object+0x6a9)[0x7f7503621249] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/lib/python3.5/site-packages/pyodbc.cpython-35m-x86_64-linux-gnu.so(+0xb174)[0x7f7503622174] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyCFunction_Call+0x131)[0x7f751d4c4621] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyEval_EvalFrameEx+0x9017)[0x7f751d54bc37] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyEval_EvalFrameEx+0x9546)[0x7f751d54c166] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyEval_EvalFrameEx+0x9546)[0x7f751d54c166] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyEval_EvalFrameEx+0x9546)[0x7f751d54c166] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(+0x144b49)[0x7f751d54cb49] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyEval_EvalCodeEx+0x48)[0x7f751d54ccd8] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyEval_EvalCode+0x3b)[0x7f751d54cd1b] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyRun_FileExFlags+0x130)[0x7f751d572020] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(PyRun_SimpleFileExFlags+0x173)[0x7f751d573623] 
/opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/../lib/libpython3.5m.so.1.0(Py_Main+0xca7)[0x7f751d58e8c7] 
python(main+0x15d)[0x400add] 
/lib64/libc.so.6(__libc_start_main+0xfd)[0x7f751c5e2d5d] 
python[0x4008b9] 
======= Memory map: ======== 
00400000-00401000 r-xp 00000000 fd:05 11011012       /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/python3.5 
00601000-00602000 rw-p 00001000 fd:05 11011012       /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/envs/ed/bin/python3.5 
01241000-02873000 rw-p 00000000 00:00 0         [heap] 
7f74f8000000-7f74f8021000 rw-p 00000000 00:00 0 
7f74f8021000-7f74fc000000 ---p 00000000 00:00 0 
7f74fc354000-7f74fc356000 r-xp 00000000 fd:01 3837      /usr/lib64/gconv/CP1252.so 
7f74fc356000-7f74fc555000 ---p 00002000 fd:01 3837      /usr/lib64/gconv/CP1252.so 
7f74fc555000-7f74fc556000 r--p 00001000 fd:01 3837      /usr/lib64/gconv/CP1252.so 
7f74fc556000-7f74fc557000 rw-p 00002000 fd:01 3837      /usr/lib64/gconv/CP1252.so 
7f74fc557000-7f74fc558000 r-xp 00000000 fd:01 4029      /usr/lib64/gconv/ISO8859-1.so 
7f74fc558000-7f74fc758000 ---p 00001000 fd:01 4029      /usr/lib64/gconv/ISO8859-1.so 
7f74fc758000-7f74fc759000 r--p 00001000 fd:01 4029      /usr/lib64/gconv/ISO8859-1.so 
7f74fc759000-7f74fc75a000 rw-p 00002000 fd:01 4029      /usr/lib64/gconv/ISO8859-1.so 
7f74fc75a000-7f74fc75f000 r-xp 00000000 fd:01 3803      /lib64/libnss_dns-2.12.so 
7f74fc75f000-7f74fc95e000 ---p 00005000 fd:01 3803      /lib64/libnss_dns-2.12.so 
7f74fc95e000-7f74fc95f000 r--p 00004000 fd:01 3803      /lib64/libnss_dns-2.12.so 
7f74fc95f000-7f74fc960000 rw-p 00005000 fd:01 3803      /lib64/libnss_dns-2.12.so 
7f74fc960000-7f74fc963000 r-xp 00000000 fd:01 5388      /lib64/libgpg-error.so.0.5.0 
7f74fc963000-7f74fcb62000 ---p 00003000 fd:01 5388      /lib64/libgpg-error.so.0.5.0 
7f74fcb62000-7f74fcb63000 r--p 00002000 fd:01 5388      /lib64/libgpg-error.so.0.5.0 
7f74fcb63000-7f74fcb64000 rw-p 00003000 fd:01 5388      /lib64/libgpg-error.so.0.5.0 
7f74fcb64000-7f74fcb74000 r-xp 00000000 fd:01 6697      /usr/lib64/libtasn1.so.3.1.6 
7f74fcb74000-7f74fcd73000 ---p 00010000 fd:01 6697      /usr/lib64/libtasn1.so.3.1.6 
7f74fcd73000-7f74fcd74000 rw-p 0000f000 fd:01 6697      /usr/lib64/libtasn1.so.3.1.6 
7f74fcd74000-7f74fcde6000 r-xp 00000000 fd:01 5401      /lib64/libgcrypt.so.11.5.3 
7f74fcde6000-7f74fcfe5000 ---p 00072000 fd:01 5401      /lib64/libgcrypt.so.11.5.3 
7f74fcfe5000-7f74fcfe6000 r--p 00071000 fd:01 5401      /lib64/libgcrypt.so.11.5.3 
7f74fcfe6000-7f74fcfe9000 rw-p 00072000 fd:01 5401      /lib64/libgcrypt.so.11.5.3 
7f74fcfe9000-7f74fd086000 r-xp 00000000 fd:01 13301      /usr/lib64/libgnutls.so.26.14.12 
7f74fd086000-7f74fd285000 ---p 0009d000 fd:01 13301      /usr/lib64/libgnutls.so.26.14.12 
7f74fd285000-7f74fd28c000 rw-p 0009c000 fd:01 13301      /usr/lib64/libgnutls.so.26.14.12 
7f74fd28c000-7f74fd2ee000 r-xp 00000000 fd:01 52715      /usr/lib64/libtdsodbc.so.0.0.0 
7f74fd2ee000-7f74fd4ed000 ---p 00062000 fd:01 52715      /usr/lib64/libtdsodbc.so.0.0.0 
7f74fd4ed000-7f74fd4f1000 rw-p 00061000 fd:01 52715      /usr/lib64/libtdsodbc.so.0.0.0 
7f74fd4f1000-7f74fd4f5000 r-xp 00000000 fd:05 7997029     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/termios.so 
7f74fd4f5000-7f74fd6f5000 ---p 00004000 fd:05 7997029     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/termios.so 
7f74fd6f5000-7f74fd6f7000 rw-p 00004000 fd:05 7997029     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/termios.so 
7f74fd6f7000-7f74fd6fa000 r-xp 00000000 fd:05 7997070     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/fcntl.so 
7f74fd6fa000-7f74fd8f9000 ---p 00003000 fd:05 7997070     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/fcntl.so 
7f74fd8f9000-7f74fd8fb000 rw-p 00002000 fd:05 7997070     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/python-3.5.2-0/lib/python3.5/lib-dynload/fcntl.so 
7f74fd8fb000-7f74fd8fe000 r-xp 00000000 fd:05 10749483     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cresultproxy.so 
7f74fd8fe000-7f74fdafe000 ---p 00003000 fd:05 10749483     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cresultproxy.so 
7f74fdafe000-7f74fdaff000 rw-p 00003000 fd:05 10749483     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cresultproxy.so 
7f74fdaff000-7f74fdb00000 r-xp 00000000 fd:05 10749167     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cutils.so 
7f74fdb00000-7f74fdd00000 ---p 00001000 fd:05 10749167     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cutils.so 
7f74fdd00000-7f74fdd01000 rw-p 00001000 fd:05 10749167     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cutils.so 
7f74fdd01000-7f74fdd41000 rw-p 00000000 00:00 0 
7f74fdec1000-7f74fdf01000 rw-p 00000000 00:00 0 
7f74fdf41000-7f74fdf44000 r-xp 00000000 fd:05 10749471     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cprocessors.so 
7f74fdf44000-7f74fe143000 ---p 00003000 fd:05 10749471     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cprocessors.so 
7f74fe143000-7f74fe144000 rw-p 00002000 fd:05 10749471     /opt/cloudera/parcels/Anaconda3-4.2.0-python-3.5/pkgs/sqlalchemy-1.0.13-py35_0/lib/python3.5/site-packages/sqlalchemy/cprocessors.soAborted 

在對我們的目標做了一些更多的測試後,連接到Microsoft SQL Server數據庫時出現問題。我們使用下面的連接字符串連接dsn-less。這就是說,我不知道內存問題何時發生(連接之前/期間/之後)......問題似乎是隨機觸發的。

[...] 
pyodbc.pooling=False 
oConnexion = pyodbc.connect(Driver="{FreeTDS};Server=xxx;Port=1433;TDS_Version=7.0;UID=xxx;PWD=xxx;", autocommit=True) 
oConnexion.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8') 
oConnexion.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8') 
oConnexion.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-8') 
oConnexion.setencoding(encoding='utf-8') 
[...] 

配置:
- 的Python 3.5.2
- 阿納康達4.2.0(64位)
- 在Linux紅帽4.4.7-1
- Pyodbc 4.0.16

+0

^你認真嗎?我一直在尋找這個,這完全是不明智的,只是因爲你無法回答這個問題!爲什麼不把它重新映射到服務器故障或什麼? – pythonian29033

+0

我很好重新打開這個問題。但是你有什麼建議呢? –

+0

我在Gord Thompson實際上發表了我的評論,但我認爲大多數開發人員並不是100%確定這是配置/依賴問題,並且問題仍然存在,因此您無需執行任何操作。謝謝 – pythonian29033

回答

2

以前的ODBC驅動程序的配置是FreeTDS v0.91。 將ODBC驅動程序升級到FreeTDS 1.0rc5解決了此問題。

+0

在版本1.1這個問題仍然在我身上發生,它只發生在一些時間,但它成爲一個痛苦時,它就好像FreeTDS或pyodbc訪問單身人士對象來創建每個新的連接 – pythonian29033

0

我不知道爲什麼它開始發生,因爲一切工作正常,直到然後...

永遠一切正常,直到你改變了一些東西。你需要知道你改變了什麼,然後改回來。

在服務器配置方面是否有任何已知的問題根本原因?

問題有沒有與服務器配置。問題是,你正在加載到你的Python的東西是越野車,並導致堆腐敗。

您或許可以通過在Valgrind下運行python來找出發生堆損壞的位置。

相關問題