Modify ↓
Opened 4 years ago
Last modified 14 months ago
#13390 new defect
tracd with SQLite crashes when concurrently reloading configuration and sending requests
Reported by: | Jun Omae | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | next-stable-1.6.x |
Component: | web frontend | Version: | |
Severity: | normal | Keywords: | |
Cc: | Branch: | ||
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description
I noticed this issue while investigating #13345.
Session 1
Launch tracd:
$ ~/venv/trac/1.4.2/bin/python -m trac.web.standalone -p 3000 /dev/shm/tracenv-1.4
Session 2
Touch trac.ini repeatedly
>>> def touch_file_endless(filename): ... while True: ... os.utime(filename, None) ... time.sleep(0.1) ... >>> touch_file_endless('/dev/shm/tracenv-1.4/conf/trac.ini')
Session 3
Concurrently sending requests
$ ab -c2 -n1000000 http://127.0.0.1:3000/tracenv-1.4/wiki/WikiStart
Result
... 127.0.0.1 - - [12/Apr/2021 23:47:32] "GET /tracenv-1.4/wiki/WikiStart HTTP/1.0" 200 - 127.0.0.1 - - [12/Apr/2021 23:47:32] "GET /tracenv-1.4/wiki/WikiStart HTTP/1.0" 200 - 127.0.0.1 - - [12/Apr/2021 23:47:32] "GET /tracenv-1.4/wiki/WikiStart HTTP/1.0" 200 - Segmentation fault
#0 sqlite3ErrorFinish (db=0x7fffe0062c48, err_code=err_code@entry=25) at sqlite3.c:31372 #1 0x00007ffff39ba6c4 in sqlite3Error (err_code=25, db=<optimized out>) at sqlite3.c:31384 #2 columnMem (pStmt=0x7fffe00643b8, i=<optimized out>) at sqlite3.c:18767 #3 0x00007ffff39c6e1e in sqlite3_column_type (pStmt=0x7fffe00643b8, i=i@entry=0) at sqlite3.c:84404 #4 0x00007ffff39a86c8 in _pysqlite_fetch_one_row (self=self@entry=0x7fffe8ebbcb0) at src/cursor.c:316 #5 0x00007ffff39a9445 in _pysqlite_query_execute (self=0x7fffe8ebbcb0, multiple=0, args=<optimized out>) at src/cursor.c:629 #6 0x00000000004a5a8e in PyObject_Call () #7 0x00000000004c620d in PyEval_CallObjectWithKeywords () #8 0x0000000000538e5c in ?? () #9 0x00000000004a5a8e in PyObject_Call () #10 0x00000000004beff5 in PyEval_EvalFrameEx () #11 0x00000000004b9e36 in PyEval_EvalCodeEx () #12 0x00000000004c2214 in PyEval_EvalFrameEx () #13 0x00000000004b9e36 in PyEval_EvalCodeEx () #14 0x00000000004d5869 in ?? () #15 0x00000000004eed1e in ?? () #16 0x00000000004a5a8e in PyObject_Call () #17 0x00000000004beff5 in PyEval_EvalFrameEx () #18 0x00000000004b9e36 in PyEval_EvalCodeEx () #19 0x00000000004c2214 in PyEval_EvalFrameEx () #20 0x00000000004b9e36 in PyEval_EvalCodeEx () #21 0x00000000004c1ad7 in PyEval_EvalFrameEx () #22 0x00000000004b9e36 in PyEval_EvalCodeEx () #23 0x00000000004c1ad7 in PyEval_EvalFrameEx () #24 0x00000000004b9e36 in PyEval_EvalCodeEx () #25 0x00000000004d5869 in ?? () #26 0x00000000004eed1e in ?? () #27 0x00000000004a5a8e in PyObject_Call () #28 0x0000000000549733 in ?? () #29 0x00000000004c194f in PyEval_EvalFrameEx () #30 0x00000000004c16ff in PyEval_EvalFrameEx () #31 0x00000000004b9e36 in PyEval_EvalCodeEx () #32 0x00000000004d5869 in ?? () #33 0x00000000004ae691 in PyObject_CallFunctionObjArgs () #34 0x000000000041ce69 in _PyObject_GenericGetAttrWithDict () #35 0x00000000004bc609 in PyEval_EvalFrameEx () #36 0x00000000004b9e36 in PyEval_EvalCodeEx () #37 0x00000000004c2214 in PyEval_EvalFrameEx () #38 0x00000000004b9e36 in PyEval_EvalCodeEx () #39 0x00000000004c2214 in PyEval_EvalFrameEx () #40 0x00000000004b9e36 in PyEval_EvalCodeEx () #41 0x00000000004c1ad7 in PyEval_EvalFrameEx () #42 0x00000000004b9e36 in PyEval_EvalCodeEx () #43 0x00000000004c2214 in PyEval_EvalFrameEx () #44 0x00000000004b9e36 in PyEval_EvalCodeEx () #45 0x00000000004c1ad7 in PyEval_EvalFrameEx () #46 0x00000000004b9e36 in PyEval_EvalCodeEx () #47 0x00000000004c2214 in PyEval_EvalFrameEx () #48 0x00000000004b9e36 in PyEval_EvalCodeEx () #49 0x00000000004c1ad7 in PyEval_EvalFrameEx () #50 0x00000000004c16ff in PyEval_EvalFrameEx () #51 0x00000000004b9e36 in PyEval_EvalCodeEx () #52 0x00000000004c2214 in PyEval_EvalFrameEx () #53 0x00000000004b9e36 in PyEval_EvalCodeEx () #54 0x00000000004c2214 in PyEval_EvalFrameEx () #55 0x00000000004b9e36 in PyEval_EvalCodeEx () #56 0x00000000004d5869 in ?? () #57 0x00000000004eed1e in ?? () #58 0x00000000004a5a8e in PyObject_Call () #59 0x0000000000549733 in ?? () #60 0x00000000004c194f in PyEval_EvalFrameEx () #61 0x00000000004c16ff in PyEval_EvalFrameEx () #62 0x00000000004c16ff in PyEval_EvalFrameEx () #63 0x00000000004c16ff in PyEval_EvalFrameEx () #64 0x00000000004b9e36 in PyEval_EvalCodeEx () #65 0x00000000004d5869 in ?? () #66 0x00000000004eed1e in ?? () #67 0x00000000004a5a8e in PyObject_Call () #68 0x00000000004d9342 in PyInstance_New () #69 0x00000000004c194f in PyEval_EvalFrameEx () #70 0x00000000004c16ff in PyEval_EvalFrameEx () #71 0x00000000004b9e36 in PyEval_EvalCodeEx () #72 0x00000000004d59a3 in ?? () #73 0x00000000004a5a8e in PyObject_Call () #74 0x00000000004beff5 in PyEval_EvalFrameEx () #75 0x00000000004c16ff in PyEval_EvalFrameEx () #76 0x00000000004c16ff in PyEval_EvalFrameEx () #77 0x00000000004b9e36 in PyEval_EvalCodeEx () #78 0x00000000004d5869 in ?? () #79 0x00000000004eed1e in ?? () #80 0x00000000004a5a8e in PyObject_Call () #81 0x00000000004c61c0 in PyEval_CallObjectWithKeywords () #82 0x0000000000588142 in ?? () #83 0x00007ffff7bc16ba in start_thread (arg=0x7fffe8c60700) at pthread_create.c:333 #84 0x00007ffff78f74dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Attachments (0)
Note:
See TracTickets
for help on using tickets.
Milestone renamed