Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • tracker tracker
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 79
    • Issues 79
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 11
    • Merge requests 11
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOMEGNOME
  • trackertracker
  • Issues
  • #242
Closed
Open
Issue created Aug 13, 2020 by Sam Thursfield@sthursfieldMaintainer

Segfault in SPARQL parser when using VALUES

The following query produces a segfault in the SPARQL parser:

SELECT ?urn ?file nfo:fileName (?file) AS ?filename nie:mimeType (?urn) AS ?mimetype nie:title (?urn) AS ?title tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') AS ?author_name tracker:coalesce (nfo:fileLastModified (?file), nie:contentLastModified (?urn)) AS ?mtime nao:identifier (?urn) AS ?identifier rdf:type (?urn) AS ?type nie:dataSource(?urn) AS ?datasource ( EXISTS { ?urn nco:contributor ?contributor FILTER ( ?contributor != ?creator ) } ) AS ?has_contributor tracker:coalesce(nfo:fileCreated (?file), nie:contentCreated (?urn)) AS ?ctime nfo:width (?urn) AS ?width nfo:height (?urn) AS ?height nfo:equipment (?urn) AS ?equipment nfo:orientation (?urn) AS ?orientation nmm:exposureTime (?urn) AS ?exposure_time nmm:fnumber (?urn) AS ?fnumber nmm:focalLength (?urn) AS ?focal_length nmm:isoSpeed (?urn) AS ?isospeed nmm:flash (?urn) AS ?flash slo:location (?urn) AS ?location 
{
    {
        SELECT ?urn COUNT(?item) AS ?count
        {
            VALUES (?file ?filename) { ("" "") }
            ?urn a nfo:DataContainer.
                ?item a nmm:Photo ;
                nie:isPartOf ?urn ;
                nie:isStoredAs ?file .
        } GROUP BY ?urn
    }
    FILTER (?count > 0 && (fn:starts-with (nao:identifier (?urn), 'photos:collection:')   || (?urn = nfo:image-category-screenshot)) && (true))
}
GROUP BY ?urn
ORDER BY DESC (?mtime)
LIMIT 60 OFFSET 0

Backtrace:

#0  0x00007ffff5584867 in translate_DataBlockValue (sparql=0x7fffd800c100, error=0x7fffe3ffdb10)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5466
#1  0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_DataBlockValue, error=0x7fffe3ffdba0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#2  0x00007ffff55846ad in translate_InlineDataFull (sparql=0x7fffd800c100, error=0x7fffe3ffdba0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5418
#3  0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_InlineDataFull, error=0x7fffe3ffdc20)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#4  0x00007ffff55841d4 in translate_DataBlock (sparql=0x7fffd800c100, error=0x7fffe3ffdc20)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5296
#5  0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_DataBlock, error=0x7fffe3ffdca0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#6  0x00007ffff55840d4 in translate_InlineData (sparql=0x7fffd800c100, error=0x7fffe3ffdca0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5264
#7  0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_InlineData, error=0x7fffe3ffdd20)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#8  0x00007ffff55832f4 in translate_GraphPatternNotTriples (sparql=0x7fffd800c100, error=0x7fffe3ffdd20)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:4918
#9  0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GraphPatternNotTriples, error=0x7fffe3ffddd0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#10 0x00007ffff5582fc2 in translate_GroupGraphPatternSub (sparql=0x7fffd800c100, error=0x7fffe3ffddd0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:4818
#11 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GroupGraphPatternSub, error=0x7fffe3ffde50)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#12 0x00007ffff55856f0 in translate_GroupGraphPattern (sparql=0x7fffd800c100, error=0x7fffe3ffde50)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5864
#13 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GroupGraphPattern, error=0x7fffe3ffded0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#14 0x00007ffff557fa83 in translate_WhereClause (sparql=0x7fffd800c100, error=0x7fffe3ffded0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:3348
--Type <RET> for more, q to quit, c to continue without paging--
#15 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_WhereClause, error=0x7fffe3ffdf70)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#16 0x00007ffff557eb51 in translate_SubSelect (sparql=0x7fffd800c100, error=0x7fffe3ffdf70)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:3017
#17 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_SubSelect, error=0x7fffe3ffdff0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#18 0x00007ffff55856b5 in translate_GroupGraphPattern (sparql=0x7fffd800c100, error=0x7fffe3ffdff0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5861
#19 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GroupGraphPattern, error=0x7fffe3ffe0a0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#20 0x00007ffff5584e29 in translate_GroupOrUnionGraphPattern (sparql=0x7fffd800c100, error=0x7fffe3ffe0a0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5619
#21 0x00007ffff558ecb4 in _call_rule_func
    (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GroupOrUnionGraphPattern, error=0x7fffe3ffe120)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#22 0x00007ffff55832f4 in translate_GraphPatternNotTriples (sparql=0x7fffd800c100, error=0x7fffe3ffe120)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:4918
#23 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GraphPatternNotTriples, error=0x7fffe3ffe1d0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#24 0x00007ffff5582fc2 in translate_GroupGraphPatternSub (sparql=0x7fffd800c100, error=0x7fffe3ffe1d0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:4818
#25 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GroupGraphPatternSub, error=0x7fffe3ffe250)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#26 0x00007ffff55856f0 in translate_GroupGraphPattern (sparql=0x7fffd800c100, error=0x7fffe3ffe250)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:5864
#27 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_GroupGraphPattern, error=0x7fffe3ffe2d0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#28 0x00007ffff557fa83 in translate_WhereClause (sparql=0x7fffd800c100, error=0x7fffe3ffe2d0)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:3348
#29 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_WhereClause, error=0x7fffe3ffe370)
--Type <RET> for more, q to quit, c to continue without paging--
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#30 0x00007ffff557e9ff in translate_SelectQuery (sparql=0x7fffd800c100, error=0x7fffe3ffe370)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:2977
#31 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_SelectQuery, error=0x7fffe3ffe400)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#32 0x00007ffff557d85e in translate_Query (sparql=0x7fffd800c100, error=0x7fffe3ffe400)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:2498
#33 0x00007ffff558ecb4 in _call_rule_func (sparql=0x7fffd800c100, named_rule=NAMED_RULE_Query, error=0x7fffd800c130)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9109
#34 0x00007ffff558f0b6 in tracker_sparql_new
    (manager=0x466ae0, query=0x134f220 "SELECT ?urn ?file nfo:fileName (?file) AS ?filename nie:mimeType (?urn) AS ?mimetype nie:title (?urn) AS ?title tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') AS ?author_nam"...)
    at ../subprojects/tracker/src/libtracker-data/tracker-sparql.c:9189
#35 0x00007ffff66c08bf in tracker_direct_connection_query
    (self=0x466ac0, sparql=0x134f220 "SELECT ?urn ?file nfo:fileName (?file) AS ?filename nie:mimeType (?urn) AS ?mimetype nie:title (?urn) AS ?title tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') AS ?author_nam"..., cancellable=0x1211ca0, error=0x7fffe3ffe530) at ../subprojects/tracker/src/libtracker-sparql/direct/tracker-direct.c:657
#36 0x00007ffff66a3c86 in tracker_sparql_connection_query
    (connection=0x466ac0, sparql=0x134f220 "SELECT ?urn ?file nfo:fileName (?file) AS ?filename nie:mimeType (?urn) AS ?mimetype nie:title (?urn) AS ?title tracker:coalesce (nco:fullname (?creator), nco:fullname (?publisher), '') AS ?author_nam"..., cancellable=0x1211ca0, error=0x7fffe3ffe530) at ../subprojects/tracker/src/libtracker-sparql/tracker-connection.c:231
#37 0x00007ffff66bf9c9 in query_thread_pool_func (data=0x12a51a0, user_data=0x466ac0)
    at ../subprojects/tracker/src/libtracker-sparql/direct/tracker-direct.c:172
#38 0x00007ffff7c470f4 in g_thread_pool_thread_proxy () at /lib64/libglib-2.0.so.0
#39 0x00007ffff7c467f2 in g_thread_proxy () at /lib64/libglib-2.0.so.0
#40 0x00007ffff65f8432 in start_thread () at /lib64/libpthread.so.0
#41 0x00007ffff7822913 in clone () at /lib64/libc.so.6

Top frame:

(gdb) l
5461		rule = _current_rule (sparql);
5462	
5463		switch (rule) {
5464		case NAMED_RULE_RDFLiteral:
5465			_call_rule (sparql, rule, error);
5466			binding = g_ptr_array_index (select_context->literal_bindings,
5467			                             select_context->literal_bindings->len - 1);
5468			_append_literal_sql (sparql, TRACKER_LITERAL_BINDING (binding));
5469			break;
5470		case NAMED_RULE_iri:

Problem is select_context->literal_bindings is uninitialised:

(gdb) p select_context->literal_bindings 
$4 = (GPtrArray *) 0x0
Assignee
Assign to
Time tracking