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