On 10/31/17, Wang, Peter (Xu) <[email protected]> wrote:
> Hi
> I am trying to provide a asychnonous queue based on sqlite3 in Python
> Current, I already passted the file based tests with my queue
> When switching file to in-memory db, I keep meeting a "segfault" issue when
> running the same tests test suite
>
> Can anyone help me out of this situation?
Can you get us a reproducible test case?
Can you tell us what version of SQLite you are using?
Can you recompile the SQLite shared library using -DSQLITE_DEBUG and
-DSQLITE_ENABLE_API_ARMOR and see how that changes the outcome?
>
>
> I tested the in-memory with multi-thread (but inserts/deletes are in a lock)
> Here is the trace of the core file:
>
> (gdb) bt
> #0 sqlite3_value_type (pVal=0x0) at sqlite3.c:72512
> #1 0x00007fda2a34fd86 in sqlite3_column_type (pStmt=0x7fda08004178,
> i=<optimized out>) at sqlite3.c:73318
> #2 0x00007fda2a607987 in _pysqlite_fetch_one_row
> (self=self@entry=0x7fda2a204b20) at
> /build/python2.7-1tJBSB/python2.7-2.7.12/Modules/_sqlite/cursor.c:352
> #3 0x00007fda2a6089c1 in _pysqlite_query_execute (self=0x7fda2a204b20,
> multiple=<optimized out>, args=<optimized out>)
> at /build/python2.7-1tJBSB/python2.7-2.7.12/Modules/_sqlite/cursor.c:711
> #4 0x00000000004b0cb3 in PyObject_Call () at ../Objects/abstract.c:2546
> #5 0x00000000004ce5d0 in PyEval_CallObjectWithKeywords () at
> ../Python/ceval.c:4219
> #6 0x00007fda2a609106 in pysqlite_connection_execute (self=<optimized out>,
> args=('SELECT _id, data FROM queue_default ORDER BY _id ASC LIMIT 1', ()))
> at
> /build/python2.7-1tJBSB/python2.7-2.7.12/Modules/_sqlite/connection.c:1262
> #7 0x00000000004cb945 in call_function (oparg=<optimized out>,
> pp_stack=0x7fda19ff9fc0) at ../Python/ceval.c:4350
> #8 PyEval_EvalFrameEx () at ../Python/ceval.c:2987
> #9 0x00000000004c2765 in PyEval_EvalCodeEx () at ../Python/ceval.c:3582
> #10 0x00000000004ca8d1 in fast_function (nk=0, na=<optimized out>,
> n=<optimized out>, pp_stack=0x7fda19ffa1d0, func=<function at remote
> 0x7fda2a83c050>)
> at ../Python/ceval.c:4445
> #11 call_function (oparg=<optimized out>, pp_stack=0x7fda19ffa1d0) at
> ../Python/ceval.c:4370
> #12 PyEval_EvalFrameEx () at ../Python/ceval.c:2987
> #13 0x00000000004c9d8f in fast_function (nk=<optimized out>, na=<optimized
> out>, n=<optimized out>, pp_stack=0x7fda19ffa320,
> func=<function at remote 0x7fda2a8416e0>) at ../Python/ceval.c:4435
> #14 call_function (oparg=<optimized out>, pp_stack=0x7fda19ffa320) at
> ../Python/ceval.c:4370
> #15 PyEval_EvalFrameEx () at ../Python/ceval.c:2987
> #16 0x00000000004c2765 in PyEval_EvalCodeEx () at ../Python/ceval.c:3582
> #17 0x00000000004ca099 in fast_function (nk=1, na=<optimized out>,
> n=<optimized out>, pp_stack=0x7fda19ffa530, func=<function at remote
> 0x7fda2a841758>)
> at ../Python/ceval.c:4445
> #18 call_function (oparg=<optimized out>, pp_stack=0x7fda19ffa530) at
> ../Python/ceval.c:4370
> #19 PyEval_EvalFrameEx () at ../Python/ceval.c:2987
> #20 0x00000000004c2765 in PyEval_EvalCodeEx () at ../Python/ceval.c:3582
> #21 0x00000000004de8b8 in function_call.lto_priv () at
> ../Objects/funcobject.c:523
> #22 0x00000000004b0cb3 in PyObject_Call () at ../Objects/abstract.c:2546
> #23 0x00000000004c6ad1 in ext_do_call (nk=<optimized out>, na=<optimized
> out>, flags=<optimized out>, pp_stack=0x7fda19ffa7e8,
> func=<function at remote 0x7fda29fd6c80>) at ../Python/ceval.c:4664
> #24 PyEval_EvalFrameEx () at ../Python/ceval.c:3026
> #25 0x00000000004c9d8f in fast_function (nk=<optimized out>, na=<optimized
> out>, n=<optimized out>, pp_stack=0x7fda19ffa930,
> func=<function at remote 0x7fda2da20758>) at ../Python/ceval.c:4435
> #26 call_function (oparg=<optimized out>, pp_stack=0x7fda19ffa930) at
> ../Python/ceval.c:4370
> #27 PyEval_EvalFrameEx () at ../Python/ceval.c:2987
> #28 0x00000000004c9d8f in fast_function (nk=<optimized out>, na=<optimized
> out>, n=<optimized out>, pp_stack=0x7fda19ffaa80,
> ---Type <return> to continue, or q <return> to quit---
> func=<function at remote 0x7fda2da208c0>) at ../Python/ceval.c:4435
> #29 call_function (oparg=<optimized out>, pp_stack=0x7fda19ffaa80) at
> ../Python/ceval.c:4370
> #30 PyEval_EvalFrameEx () at ../Python/ceval.c:2987
> #31 0x00000000004c2765 in PyEval_EvalCodeEx () at ../Python/ceval.c:3582
> #32 0x00000000004de6fe in function_call.lto_priv () at
> ../Objects/funcobject.c:523
> #33 0x00000000004b0cb3 in PyObject_Call () at ../Objects/abstract.c:2546
> #34 0x00000000004f492e in instancemethod_call.lto_priv () at
> ../Objects/classobject.c:2602
> #35 0x00000000004b0cb3 in PyObject_Call () at ../Objects/abstract.c:2546
> #36 0x00000000004ce5d0 in PyEval_CallObjectWithKeywords () at
> ../Python/ceval.c:4219
> #37 0x0000000000597e32 in t_bootstrap () at ../Modules/threadmodule.c:620
> #38 0x00007fda2d77f6ba in start_thread (arg=0x7fda19ffb700) at
> pthread_create.c:333
> #39 0x00007fda2d4b53dd in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
>
> Here is the python trace:
>
> (gdb) py-bt
> Traceback (most recent call first):
> File "/home/user/Documents/persist-queue/persistqueue/sqlbase.py", line
> 140, in _select
> def _select(self, *args):
> File "/home/user/Documents/persist-queue/persistqueue/sqlqueue.py", line
> 49, in _pop
> row = self._select()
> File "/home/wangp11/Documents/persist-queue/persistqueue/sqlqueue.py",
> line 67, in get
> pickled = self._pop()
> File "/home/user/Documents/persist-queue/tests/test_sqlqueue.py", line
> 105, in consumer
> x = m_queue.get(block=True)
> File "/usr/lib/python2.7/threading.py", line 754, in run
> self.__target(*self.__args, **self.__kwargs)
> File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
> self.run()
> File "/usr/lib/python2.7/threading.py", line 774, in __bootstrap
> self.__bootstrap_inner()
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
--
D. Richard Hipp
[email protected]
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users