After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 791243 - random crash (SIGSEGV)
random crash (SIGSEGV)
Status: RESOLVED OBSOLETE
Product: tracker
Classification: Core
Component: Store
2.0.x
Other Linux
: Normal normal
: ---
Assigned To: tracker-general
tracker-general
Depends on:
Blocks:
 
 
Reported: 2017-12-05 06:35 UTC by Paul Wise
Modified: 2021-05-26 22:24 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gdb backtrace of the crash (423.73 KB, text/plain)
2017-12-05 06:35 UTC, Paul Wise
Details
gdb backtrace of the crash (431.42 KB, text/plain)
2017-12-22 23:52 UTC, Paul Wise
Details
valgrind log (44.55 KB, text/plain)
2017-12-23 13:27 UTC, Paul Wise
Details
gdb backtrace of another crash (165.09 KB, text/plain)
2018-02-16 01:52 UTC, Paul Wise
Details

Description Paul Wise 2017-12-05 06:35:51 UTC
Created attachment 365000 [details]
gdb backtrace of the crash

I got a random crash (SIGSEGV) in tracker. I am using tracker 2.0.2-1, sqlite 3.21.0-1 and GNOME 3.26 on Debian buster. If the below gdb backtrace and the attached full gdb backtrace isn't useful, please close this bug.

Core was generated by `/usr/lib/tracker/tracker-store'.
Program terminated with signal SIGSEGV, Segmentation fault.
  • #0 pcache1RemoveFromHash
    at sqlite3.c line 46161
  • #0 pcache1RemoveFromHash
    at sqlite3.c line 46161
  • #1 pcache1FetchStage2
    at sqlite3.c line 46453
  • #2 sqlite3PcacheFetch
    at sqlite3.c line 45077
  • #3 getPageNormal
    at sqlite3.c line 52925
  • #4 sqlite3PagerGet
    at sqlite3.c line 53104
  • #5 getAndInitPage
    at sqlite3.c line 61753
  • #6 moveToRoot
    at sqlite3.c line 64673
  • #7 sqlite3BtreeMovetoUnpacked
    at sqlite3.c line 64929
  • #8 sqlite3VdbeExec
    at sqlite3.c line 83325
  • #9 sqlite3Step
    at sqlite3.c line 77537
  • #10 sqlite3_step
    at sqlite3.c line 12064
  • #11 blobSeekToRow
    at sqlite3.c line 86479
  • #12 sqlite3_blob_open
    at sqlite3.c line 86735
  • #13 fts5DataRead
    at sqlite3.c line 192616
  • #14 fts5StructureReadUncached
    at sqlite3.c line 192939
  • #15 fts5StructureRead
    at sqlite3.c line 61921
  • #16 sqlite3Fts5IndexLoadConfig
    at sqlite3.c line 197493
  • #17 fts5InitVtab
    at sqlite3.c line 198853
  • #18 fts5ConnectMethod
    at sqlite3.c line 198880
  • #19 vtabCallConstructor
    at sqlite3.c line 126862
  • #20 sqlite3VtabCallConnect
    at sqlite3.c line 126961
  • #21 sqlite3ViewGetColumnNames
    at sqlite3.c line 37332
  • #22 selectExpander
    at sqlite3.c line 122104
  • #23 sqlite3WalkSelect
    at sqlite3.c line 90253
  • #24 sqlite3WalkSelect
    at sqlite3.c line 90251
  • #25 selectExpander
    at sqlite3.c line 56535
  • #26 sqlite3WalkSelect
    at sqlite3.c line 90253
  • #27 sqlite3WalkSelect
    at sqlite3.c line 122352
  • #28 sqlite3SelectExpand
    at sqlite3.c line 56817
  • #29 sqlite3SelectPrep
    at sqlite3.c line 56901
  • #30 sqlite3Select
    at sqlite3.c line 122862
  • #31 yy_reduce
    at sqlite3.c line 139450
  • #32 sqlite3Parser
    at sqlite3.c line 9487
  • #33 sqlite3RunParser
  • #34 sqlite3Prepare
  • #35 sqlite3LockAndPrepare
  • #36 sqlite3_prepare_v2
  • #37 tracker_db_interface_prepare_stmt
  • #38 tracker_db_interface_create_statement
    at tracker-db-interface-sqlite.c line 2190
  • #39 tracker_sparql_query_prepare_for_exec
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 517
  • #40 tracker_sparql_query_exec_sql_cursor
  • #41 tracker_sparql_query_execute_select_cursor
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 568
  • #42 tracker_sparql_query_execute_cursor
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 436
  • #43 tracker_data_query_sparql_cursor
    at tracker-data-query.c line 146
  • #44 0x000055d129aac760 in
  • #45 g_thread_pool_thread_proxy
    at ../../../../glib/gthreadpool.c line 307
  • #46 g_thread_proxy
    at ../../../../glib/gthread.c line 784
  • #47 start_thread
    at pthread_create.c line 456
  • #48 0x0000000000000000 in

Comment 1 Paul Wise 2017-12-22 23:52:18 UTC
Created attachment 365891 [details]
gdb backtrace of the crash

I got what looks like the same crash again.

Core was generated by `/usr/lib/tracker/tracker-store'.
Program terminated with signal SIGSEGV, Segmentation fault.
  • #0 pcache1RemoveFromHash
    at sqlite3.c line 46161
  • #0 pcache1RemoveFromHash
    at sqlite3.c line 46161
  • #1 pcache1FetchStage2
    at sqlite3.c line 46453
  • #2 sqlite3PcacheFetch
    at sqlite3.c line 45077
  • #3 getPageNormal
    at sqlite3.c line 52925
  • #4 sqlite3PagerGet
    at sqlite3.c line 53104
  • #5 getAndInitPage
    at sqlite3.c line 61753
  • #6 moveToRoot
    at sqlite3.c line 64673
  • #7 sqlite3BtreeMovetoUnpacked
    at sqlite3.c line 64929
  • #8 sqlite3VdbeExec
    at sqlite3.c line 83325
  • #9 sqlite3Step
    at sqlite3.c line 77537
  • #10 sqlite3_step
    at sqlite3.c line 12064
  • #11 blobSeekToRow
    at sqlite3.c line 86479
  • #12 sqlite3_blob_open
    at sqlite3.c line 86735
  • #13 fts5DataRead
    at sqlite3.c line 192616
  • #14 fts5StructureReadUncached
    at sqlite3.c line 192939
  • #15 fts5StructureRead
    at sqlite3.c line 61921
  • #16 sqlite3Fts5IndexLoadConfig
    at sqlite3.c line 197493
  • #17 fts5InitVtab
    at sqlite3.c line 198853
  • #18 fts5ConnectMethod
    at sqlite3.c line 198880
  • #19 vtabCallConstructor
    at sqlite3.c line 126862
  • #20 sqlite3VtabCallConnect
    at sqlite3.c line 126961
  • #21 sqlite3ViewGetColumnNames
    at sqlite3.c line 37332
  • #22 selectExpander
    at sqlite3.c line 122104
  • #23 sqlite3WalkSelect
    at sqlite3.c line 90253
  • #24 sqlite3WalkSelect
    at sqlite3.c line 90251
  • #25 selectExpander
    at sqlite3.c line 56535
  • #26 sqlite3WalkSelect
    at sqlite3.c line 90253
  • #27 sqlite3WalkSelect
    at sqlite3.c line 122352
  • #28 sqlite3SelectExpand
    at sqlite3.c line 56817
  • #29 sqlite3SelectPrep
    at sqlite3.c line 56901
  • #30 sqlite3Select
    at sqlite3.c line 122862
  • #31 yy_reduce
    at sqlite3.c line 139450
  • #32 sqlite3Parser
    at sqlite3.c line 9487
  • #33 sqlite3RunParser
  • #34 sqlite3Prepare
  • #35 sqlite3LockAndPrepare
  • #36 sqlite3_prepare_v2
  • #37 tracker_db_interface_prepare_stmt
  • #38 tracker_db_interface_create_statement
    at tracker-db-interface-sqlite.c line 2190
  • #39 tracker_sparql_query_prepare_for_exec
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 517
  • #40 tracker_sparql_query_exec_sql_cursor
  • #41 tracker_sparql_query_execute_select_cursor
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 568
  • #42 tracker_sparql_query_execute_cursor
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 436
  • #43 tracker_data_query_sparql_cursor
    at tracker-data-query.c line 146
  • #44 tracker_store_pool_dispatch_cb
    at /home/carlos/Source/gnome/tracker/src/tracker-store/tracker-store.vala line 215
  • #45 _tracker_store_pool_dispatch_cb_gfunc
    at /home/carlos/Source/gnome/tracker/src/tracker-store/tracker-store.vala line 312
  • #46 g_thread_pool_thread_proxy
    at ../../../../glib/gthreadpool.c line 307
  • #47 g_thread_proxy
    at ../../../../glib/gthread.c line 784
  • #48 start_thread
    at pthread_create.c line 456
  • #49 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 104
  • #50 0x0000000000000000 in

Comment 2 Carlos Garnacho 2017-12-23 00:05:53 UTC
Seeing that the deepest 3/4ths of the backtrace belongs to SQLite, and the deepmost function still belonging to Tracker code is just creating a SQL statement, all my bets are on this being a SQLite bug.
Comment 3 Paul Wise 2017-12-23 00:32:26 UTC
I've posted a message the sqlite-users mailing list, it should show up there after moderation.
Comment 4 Paul Wise 2017-12-23 01:35:27 UTC
The thread is available here:

https://marc.info/?i=1513989092.2859.79.camel@bonedaddy.net

The sqlite folks suggested it might be a heap corruption issue in tracker-store and said they would investigate further.

https://marc.info/?i=CALwJ=MzGRs_SL8+5eDVXw0ZB=4TGEeU-3eFu+6+x9OeSa6cMUA@mail.gmail.com
Comment 5 Carlos Garnacho 2017-12-23 10:59:37 UTC
Thanks for moving the bug around :). The heap corruption scenario sounds plausible, but there's been no other recent reports of tracker-store crashes, and your SQLite seems bleeding edge enough. I'll be doing some runs on valgrind anyway, maybe you can do some too with:

killall -9 tracker-store ; valgrind --leak-check=full --num-callers=30 --log-file=$(non_indexed_dir)/valgrind-log $(libexecdir)/tracker-store

(replace non_indexed_dir and libexecdir with suitable locations)

One thing that looks mildly odd in the backtrace is that tracker-store is dispatching a SELECT query. This is not wrong per-se, but for performance reasons non-update queries are usually performed directly by the users of libtracker-sparql through a readonly connection, instead of through dbus/tracker-store. This may indicate tracker-store and client(s) are running with different locales, or that TRACKER_SPARQL_BACKEND=bus is somewhere in the environment? Still, this shouldn't influence nor cause crashes.
Comment 6 Carlos Garnacho 2017-12-23 11:13:22 UTC
Oh, but the GtkFileChooser search is done through direct dbus calls, that might a reason.
Comment 7 Paul Wise 2017-12-23 13:27:46 UTC
Created attachment 365900 [details]
valgrind log

I did a valgrind run and it just sat there for hours, when I eventually hit Ctrl+C I noticed that the valgrind log file had quite a lot of data in it.
Comment 8 Carlos Garnacho 2017-12-23 14:14:46 UTC
Thanks. I see some minor leaks, and the usual noise from glib/libc creating caches that don't get ever freed until process exit. But there seems to be no reports of "Invalid read" or "Invalid write", which is what I would expect in memory corruption or mishandling scenarios.

And it's kind of the same here...
Comment 9 Paul Wise 2018-02-16 01:52:48 UTC
Created attachment 368394 [details]
gdb backtrace of another crash

I got another similar (but slightly different) crash:

Core was generated by `/usr/lib/tracker/tracker-store'.
Program terminated with signal SIGSEGV, Segmentation fault.
  • #0 pcache1PinPage
    at sqlite3.c line 46624
  • #0 pcache1PinPage
    at sqlite3.c line 46624
  • #1 pcache1FetchStage2
    at sqlite3.c line 46941
  • #2 sqlite3PcacheFetch
    at sqlite3.c line 45565
  • #3 getPageNormal
    at sqlite3.c line 53412
  • #4 sqlite3PagerGet
    at sqlite3.c line 53591
  • #5 getAndInitPage
    at sqlite3.c line 62511
  • #6 moveToRoot
    at sqlite3.c line 65445
  • #7 sqlite3BtreeMovetoUnpacked
    at sqlite3.c line 65701
  • #8 sqlite3VdbeExec
    at sqlite3.c line 84187
  • #9 sqlite3Step
    at sqlite3.c line 78340
  • #10 sqlite3_step
    at sqlite3.c line 12867
  • #11 blobSeekToRow
    at sqlite3.c line 87367
  • #12 sqlite3_blob_open
    at sqlite3.c line 87623
  • #13 fts5DataRead
    at sqlite3.c line 194865
  • #14 fts5StructureReadUncached
    at sqlite3.c line 195188
  • #15 fts5StructureRead
    at sqlite3.c line 64170
  • #16 sqlite3Fts5IndexLoadConfig
    at sqlite3.c line 199749
  • #17 fts5InitVtab
    at sqlite3.c line 201109
  • #18 fts5ConnectMethod
    at sqlite3.c line 201136
  • #19 vtabCallConstructor
    at sqlite3.c line 127909
  • #20 sqlite3VtabCallConnect
    at sqlite3.c line 128008
  • #21 sqlite3ViewGetColumnNames
    at sqlite3.c line 38256
  • #22 selectExpander
    at sqlite3.c line 123085
  • #23 sqlite3WalkSelect
    at sqlite3.c line 91139
  • #24 sqlite3WalkSelect
    at sqlite3.c line 91137
  • #25 selectExpander
    at sqlite3.c line 57516
  • #26 sqlite3WalkSelect
    at sqlite3.c line 91139
  • #27 sqlite3WalkSelect
    at sqlite3.c line 123340
  • #28 sqlite3SelectExpand
    at sqlite3.c line 57805
  • #29 sqlite3SelectPrep
    at sqlite3.c line 57889
  • #30 sqlite3Select
    at sqlite3.c line 123852
  • #31 yy_reduce
    at sqlite3.c line 140843
  • #32 sqlite3Parser
    at sqlite3.c line 10858
  • #33 sqlite3RunParser
  • #34 sqlite3Prepare
  • #35 sqlite3LockAndPrepare
  • #36 sqlite3_prepare_v2
  • #37 tracker_db_interface_prepare_stmt
  • #38 tracker_db_interface_create_statement
    at tracker-db-interface-sqlite.c line 2190
  • #39 tracker_sparql_query_prepare_for_exec
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 517
  • #40 tracker_sparql_query_exec_sql_cursor
  • #41 tracker_sparql_query_execute_select_cursor
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 568
  • #42 tracker_sparql_query_execute_cursor
    at /home/carlos/Source/gnome/tracker/src/libtracker-data/tracker-sparql-query.vala line 436
  • #43 tracker_data_query_sparql_cursor
    at tracker-data-query.c line 146
  • #44 tracker_store_pool_dispatch_cb
    at /home/carlos/Source/gnome/tracker/src/tracker-store/tracker-store.vala line 215
  • #45 _tracker_store_pool_dispatch_cb_gfunc
    at /home/carlos/Source/gnome/tracker/src/tracker-store/tracker-store.vala line 312
  • #46 g_thread_pool_thread_proxy
    at ../../../../glib/gthreadpool.c line 307
  • #47 g_thread_proxy
    at ../../../../glib/gthread.c line 784
  • #48 start_thread
    at pthread_create.c line 465
  • #49 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 95

Comment 10 Sam Thursfield 2021-05-26 22:24:30 UTC
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org.
As part of that, we are mass-closing older open tickets in bugzilla.gnome.org
which have not seen updates for a longer time (resources are unfortunately
quite limited so not every ticket can get handled).

If you can still reproduce the situation described in this ticket in a recent
and supported software version, then please follow
  https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines
and create a new enhancement request ticket at
  https://gitlab.gnome.org/GNOME/tracker/-/issues/

Thank you for your understanding and your help.