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?


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
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to