Hi Experts, I am developing a Multi threaded solution using sqlite3 DB. I know there are some issues With SQlite3 and python multithreads.
1. I compiled libsqlite3 with SQLITE_THREADSAFE=2 so that multiple threads can use it. 2. I used the APIs threading.Lock(), and lock.acquire(), lock.release() to serialize the DB read/update operations. After this, I am always getting following segmentation fault. Can you please let me know what is going wrong and Potential fix to this. <snip> *** Error in `python': double free or corruption (!prev): 0x00007f5c30b20d30 *** ======= Backtrace: ========= /lib64/libc.so.6(+0x814e9)[0x7f5c44ed04e9] /usr/local/lib/libsqlite3.so.0(sqlite3_free+0x4f)[0x7f5c43165baf] /usr/local/lib/libsqlite3.so.0(+0x2c1f1)[0x7f5c431711f1] /usr/local/lib/libsqlite3.so.0(+0x2c287)[0x7f5c43171287] /usr/local/lib/libsqlite3.so.0(+0x78dc6)[0x7f5c431bddc6] /usr/local/lib/libsqlite3.so.0(sqlite3_finalize+0x3c)[0x7f5c431bde1c] /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_sqlite3.so(pysqlite_statement_finalize+0x21)[0x7f5c4345e7e1] /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_sqlite3.so(pysqlite_do_all_statements+0x45)[0x7f5c43459205] /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_sqlite3.so(pysqlite_connection_close+0x2e)[0x7f5c43459d3e] python(PyEval_EvalFrameEx+0x5cab)[0x4b63ab] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalCodeEx+0x7f8)[0x4b9d78] python[0x52dec0] python(PyObject_Call+0x3a)[0x422daa] python[0x42728d] python(PyObject_Call+0x3a)[0x422daa] python[0x48136f] python[0x47ea9a] python(PyObject_Call+0x3a)[0x422daa] python(PyEval_EvalFrameEx+0x179a)[0x4b1e9a] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalCodeEx+0x7f8)[0x4b9d78] python[0x52df8f] python(PyObject_Call+0x3a)[0x422daa] python(PyEval_EvalFrameEx+0x1e33)[0x4b2533] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalFrameEx+0x6334)[0x4b6a34] python(PyEval_EvalCodeEx+0x7f8)[0x4b9d78] python[0x52dec0] python(PyObject_Call+0x3a)[0x422daa] python[0x42728d] python(PyObject_Call+0x3a)[0x422daa] python(PyEval_CallObjectWithKeywords+0x47)[0x4b0657] python[0x4fed42] /lib64/libpthread.so.0(+0x7dd5)[0x7f5c4592cdd5] /lib64/libc.so.6(clone+0x6d)[0x7f5c44f4dbfd] ======= Memory map: ======== 00400000-005a6000 r-xp 00000000 08:01 668539 /root/.pyenv/versions/2.7.12/bin/python2.7 007a5000-007a6000 r--p 001a5000 08:01 668539 /root/.pyenv/versions/2.7.12/bin/python2.7 007a6000-007e2000 rw-p 001a6000 08:01 668539 /root/.pyenv/versions/2.7.12/bin/python2.7 007e2000-00804000 rw-p 00000000 00:00 0 021d4000-0285f000 rw-p 00000000 00:00 0 [heap] 7f5c28000000-7f5c29112000 rw-p 00000000 00:00 0 7f5c29112000-7f5c2c000000 ---p 00000000 00:00 0 7f5c2c000000-7f5c2c021000 rw-p 00000000 00:00 0 7f5c2c021000-7f5c30000000 ---p 00000000 00:00 0 7f5c30000000-7f5c310fd000 rw-p 00000000 00:00 0 7f5c310fd000-7f5c34000000 ---p 00000000 00:00 0 7f5c34000000-7f5c350f9000 rw-p 00000000 00:00 0 7f5c350f9000-7f5c38000000 ---p 00000000 00:00 0 7f5c38000000-7f5c39104000 rw-p 00000000 00:00 0 7f5c39104000-7f5c3c000000 ---p 00000000 00:00 0 7f5c3c216000-7f5c3c22b000 r-xp 00000000 08:01 133728 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7f5c3c22b000-7f5c3c42a000 ---p 00015000 08:01 133728 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7f5c3c42a000-7f5c3c42b000 r--p 00014000 08:01 133728 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7f5c3c42b000-7f5c3c42c000 rw-p 00015000 08:01 133728 /usr/lib64/libgcc_s-4.8.5-20150702.so.1 7f5c3c42c000-7f5c3c52c000 rw-p 00000000 00:00 0 7f5c3c52c000-7f5c3c52d000 ---p 00000000 00:00 0 7f5c3c52d000-7f5c3cd2d000 rw-p 00000000 00:00 0 7f5c3cd2d000-7f5c3cd2e000 ---p 00000000 00:00 0 7f5c3cd2e000-7f5c3d52e000 rw-p 00000000 00:00 0 7f5c3d52e000-7f5c3d52f000 ---p 00000000 00:00 0 7f5c3d52f000-7f5c3dd2f000 rw-p 00000000 00:00 0 7f5c3dd2f000-7f5c3dd30000 ---p 00000000 00:00 0 7f5c3dd30000-7f5c3e630000 rw-p 00000000 00:00 0 7f5c3e630000-7f5c3e644000 r-xp 00000000 08:01 671144 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_ssl.so 7f5c3e644000-7f5c3e843000 ---p 00014000 08:01 671144 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_ssl.so 7f5c3e843000-7f5c3e844000 r--p 00013000 08:01 671144 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_ssl.so 7f5c3e844000-7f5c3e848000 rw-p 00014000 08:01 671144 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_ssl.so 7f5c3e848000-7f5c3e858000 r-xp 00000000 08:01 671142 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_socket.so 7f5c3e858000-7f5c3ea57000 ---p 00010000 08:01 671142 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_socket.so 7f5c3ea57000-7f5c3ea58000 r--p 0000f000 08:01 671142 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_socket.so 7f5c3ea58000-7f5c3ea5d000 rw-p 00010000 08:01 671142 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_socket.so 7f5c3ea5d000-7f5c3eb5d000 rw-p 00000000 00:00 0 7f5c3eb5d000-7f5c3eb62000 r-xp 00000000 08:01 671168 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/select.so 7f5c3eb62000-7f5c3ed61000 ---p 00005000 08:01 671168 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/select.so 7f5c3ed61000-7f5c3ed62000 r--p 00004000 08:01 671168 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/select.so 7f5c3ed62000-7f5c3ed64000 rw-p 00005000 08:01 671168 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/select.so 7f5c3ed64000-7f5c3ed68000 r-xp 00000000 08:01 671172 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/termios.so 7f5c3ed68000-7f5c3ef67000 ---p 00004000 08:01 671172 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/termios.so 7f5c3ef67000-7f5c3ef68000 r--p 00003000 08:01 671172 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/termios.so 7f5c3ef68000-7f5c3ef6a000 rw-p 00004000 08:01 671172 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/termios.so 7f5c3ef6a000-7f5c3efea000 rw-p 00000000 00:00 0 7f5c3efea000-7f5c3efef000 r-xp 00000000 08:01 671175 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/zlib.so 7f5c3efef000-7f5c3f1ee000 ---p 00005000 08:01 671175 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/zlib.so 7f5c3f1ee000-7f5c3f1ef000 r--p 00004000 08:01 671175 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/zlib.so 7f5c3f1ef000-7f5c3f1f1000 rw-p 00005000 08:01 671175 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/zlib.so 7f5c3f1f1000-7f5c3f1f6000 r-xp 00000000 08:01 671161 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/mmap.so 7f5c3f1f6000-7f5c3f3f5000 ---p 00005000 08:01 671161 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/mmap.so 7f5c3f3f5000-7f5c3f3f6000 r--p 00004000 08:01 671161 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/mmap.so 7f5c3f3f6000-7f5c3f3f7000 rw-p 00005000 08:01 671161 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/mmap.so 7f5c3f3f7000-7f5c3f437000 rw-p 00000000 00:00 0 7f5c3f437000-7f5c3f439000 r-xp 00000000 08:01 671157 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/grp.so 7f5c3f439000-7f5c3f638000 ---p 00002000 08:01 671157 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/grp.so 7f5c3f638000-7f5c3f639000 r--p 00001000 08:01 671157 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/grp.so 7f5c3f639000-7f5c3f63a000 rw-p 00002000 08:01 671157 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/grp.so 7f5c3f63a000-7f5c3f6fa000 rw-p 00000000 00:00 0 7f5c3f6fa000-7f5c3f705000 r-xp 00000000 08:01 1320878 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/ujson.so 7f5c3f705000-7f5c3f904000 ---p 0000b000 08:01 1320878 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/ujson.so 7f5c3f904000-7f5c3f905000 r--p 0000a000 08:01 1320878 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/ujson.so 7f5c3f905000-7f5c3f906000 rw-p 0000b000 08:01 1320878 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/ujson.so 7f5c3f906000-7f5c3f99c000 r-xp 00000000 08:01 671174 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/unicodedata.so 7f5c3f99c000-7f5c3fb9c000 ---p 00096000 08:01 671174 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/unicodedata.so 7f5c3fb9c000-7f5c3fb9d000 r--p 00096000 08:01 671174 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/unicodedata.so 7f5c3fb9d000-7f5c3fbb0000 rw-p 00097000 08:01 671174 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/unicodedata.so 7f5c3fbb0000-7f5c3fc30000 rw-p 00000000 00:00 0 7f5c3fc64000-7f5c3fc6d000 r-xp 00000000 08:01 671136 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_json.so 7f5c3fc6d000-7f5c3fe6c000 ---p 00009000 08:01 671136 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_json.so 7f5c3fe6c000-7f5c3fe6d000 r--p 00008000 08:01 671136 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_json.so 7f5c3fe6d000-7f5c3fe6e000 rw-p 00009000 08:01 671136 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_json.so 7f5c3fe6e000-7f5c3fe78000 r-xp 00000000 08:01 671147 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/array.so 7f5c3fe78000-7f5c40077000 ---p 0000a000 08:01 671147 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/array.so 7f5c40077000-7f5c40078000 r--p 00009000 08:01 671147 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/array.so 7f5c40078000-7f5c4007a000 rw-p 0000a000 08:01 671147 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/array.so 7f5c4007a000-7f5c40085000 r-xp 00000000 08:01 803494 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/simplejson/_speedups.so 7f5c40085000-7f5c40284000 ---p 0000b000 08:01 803494 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/simplejson/_speedups.so 7f5c40284000-7f5c40285000 r--p 0000a000 08:01 803494 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/simplejson/_speedups.so 7f5c40285000-7f5c40286000 rw-p 0000b000 08:01 803494 /root/.pyenv/versions/2.7.12/lib/python2.7/site-packages/simplejson/_speedups.so 7f5c40286000-7f5c402c6000 rw-p 00000000 00:00 0 7f5c402c6000-7f5c402ca000 r-xp 00000000 08:01 133970 /usr/lib64/libuuid.so.1.3.0 7f5c402ca000-7f5c404c9000 ---p 00004000 08:01 133970 /usr/lib64/libuuid.so.1.3.0 7f5c404c9000-7f5c404ca000 r--p 00003000 08:01 133970 /usr/lib64/libuuid.so.1.3.0 7f5c404ca000-7f5c404cb000 rw-p 00004000 08:01 133970 /usr/lib64/libuuid.so.1.3.0 7f5c404cb000-7f5c404ce000 r-xp 00000000 08:01 671155 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/fcntl.so 7f5c404ce000-7f5c406cd000 ---p 00003000 08:01 671155 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/fcntl.so 7f5c406cd000-7f5c406ce000 r--p 00002000 08:01 671155 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/fcntl.so 7f5c406ce000-7f5c406cf000 rw-p 00003000 08:01 671155 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/fcntl.so 7f5c406cf000-7f5c406d2000 r-xp 00000000 08:01 671141 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_random.so 7f5c406d2000-7f5c408d1000 ---p 00003000 08:01 671141 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_random.so 7f5c408d1000-7f5c408d2000 r--p 00002000 08:01 671141 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_random.so 7f5c408d2000-7f5c408d3000 rw-p 00003000 08:01 671141 /root/.pyenv/versions/2.7.12/lib/python2.7/lib-dynload/_random.so 7f5c408d3000-7f5c40933000 r-xp 00000000 08:01 133875 /usr/lib64/libpcre.so.1.2.0 7f5c40933000-7f5c40b33000 ---p 00060000 08:01 133875 /usr/lib64/libpcre.so.1.2.0 7f5c40b33000-7f5c40b34000 r--p 00060000 08:01 133875 /usr/lib64/libpcre.so.1.2.0 7f5c40b34000-7f5c40b35000 rw-p 00061000 08:01 133875 /usr/lib64/libpcre.so.1.2.0 7f5c40b35000-7f5c40b59000 r-xp 00000000 08:01 133918 /usr/lib64/libselinux.so.1 7f5c40b59000-7f5c40d58000 ---p 00024000 08:01 133918 /usr/lib64/libselinux.so.1 7f5c40d58000-7f5c40d59000 r--p 00023000 08:01 133918 /usr/lib64/libselinux.so.1 7f5c40d59000-7f5c40d5a000 rw-p 00024000 08:01 133918 /usr/lib64/libselinux.so.1 7f5c40d5a000-7f5c40d5c000 rw-p 00000000 00:00 0 7f5c40d5c000-7f5c40d72000 r-xp 00000000 08:01 1444948 /usr/lib64/libresolv-2.17.so 7f5c40d72000-7f5c40f71000 ---p 00016000 08:01 1444948 /usr/lib64/libresolv-2.17.so 7f5c40f71000-7f5c40f72000 r--p 00015000 08:01 1444948 /usr/lib64/libresolv-2.17.so 7f5c40f72000-7f5c40f73000 rw-p 00016000 08:01 1444948 /usr/lib64/libresolv-2.17.so. </snip> Best Regards, Rishi _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users