Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash due to untrue assertion astnode_type==CYPHER_AST_IDENTIFIER #3043

Open
DominicWuest opened this issue Apr 21, 2023 · 0 comments · May be fixed by #3046
Open

Crash due to untrue assertion astnode_type==CYPHER_AST_IDENTIFIER #3043

DominicWuest opened this issue Apr 21, 2023 · 0 comments · May be fixed by #3046

Comments

@DominicWuest
Copy link

When running the following query:

REMOVE null.n0 RETURN 0

The RedisGraph instance crashed because of the assertion cypher_astnode_type(ast_entity) == CYPHER_AST_IDENTIFIER being untrue.

I encountered this issue when testing queries against RedisGraph v2.12.0 compiled with address sanitization in a Docker container running alpine v.3.

Redis Bug Report
=== REDIS BUG REPORT START: Cut & paste starting from here ===
54:M 21 Apr 2023 19:48:39.063 # === ASSERTION FAILED ===
54:M 21 Apr 2023 19:48:39.063 # ==> /app/src/ast/ast_build_reference_map.c:254 'cypher_astnode_type(ast_entity) == CYPHER_AST_IDENTIFIER' is not true

------ STACK TRACE ------

Backtrace:
redis-server *:6379(_serverAssert+0x8c)[0x557b0aebfb8c]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(+0x6161f8)[0x7f2cd48971f8]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(+0x61573a)[0x7f2cd489673a]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(+0x613f8d)[0x7f2cd4894f8d]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(+0x612c9f)[0x7f2cd4893c9f]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(AST_BuildReferenceMap+0xf9)[0x7f2cd4893499]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(AST_NewSegment+0x854)[0x7f2cd48873f4]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(+0x66dfe8)[0x7f2cd48eefe8]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(NewExecutionPlan+0xa3)[0x7f2cd48edcc3]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(ExecutionCtx_FromQuery+0x4c3)[0x7f2cd48c4073]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(_query+0xdd)[0x7f2cd48c088d]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(Graph_Query+0x19)[0x7f2cd48c30e9]
/app/bin/linux-x64-debug-asan/src/redisgraph.so(+0x831d8a)[0x7f2cd4ab2d8a]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7ea7)[0x7f2cdc773ea7]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f2cdc691a2f]

------ INFO OUTPUT ------
# Server

redis_version:7.0.11

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:5c712dc4cb9cfb70

redis_mode:standalone

os:Linux 6.2.10-arch1-1 x86_64

arch_bits:64

monotonic_clock:POSIX clock_gettime

multiplexing_api:epoll

atomicvar_api:c11-builtin

gcc_version:10.2.1

process_id:54

process_supervised:no

run_id:443f2d34485ad41f7f2bfabb6b247258fddc14e8

tcp_port:6379

server_time_usec:1682106519062508

uptime_in_seconds:5

uptime_in_days:0

hz:10

configured_hz:10

lru_clock:4384919

executable:/redis/redis-server

config_file:

io_threads_active:0



# Clients

connected_clients:1

cluster_connections:0

maxclients:10000

client_recent_max_input_buffer:0

client_recent_max_output_buffer:0

blocked_clients:1

tracking_clients:0

clients_in_timeout_table:0



# Memory

used_memory:1354104

used_memory_human:1.29M

used_memory_rss:39239680

used_memory_rss_human:37.42M

used_memory_peak:1354104

used_memory_peak_human:1.29M

used_memory_peak_perc:100.18%

used_memory_overhead:929048

used_memory_startup:928792

used_memory_dataset:425056

used_memory_dataset_perc:99.94%

allocator_allocated:1223920

allocator_active:1409024

allocator_resident:4825088

total_system_memory:8039120896

total_system_memory_human:7.49G

used_memory_lua:31744

used_memory_vm_eval:31744

used_memory_lua_human:31.00K

used_memory_scripts_eval:0

number_of_cached_scripts:0

number_of_functions:0

number_of_libraries:0

used_memory_vm_functions:32768

used_memory_vm_total:64512

used_memory_vm_total_human:63.00K

used_memory_functions:184

used_memory_scripts:184

used_memory_scripts_human:184B

maxmemory:0

maxmemory_human:0B

maxmemory_policy:noeviction

allocator_frag_ratio:1.15

allocator_frag_bytes:185104

allocator_rss_ratio:3.42

allocator_rss_bytes:3416064

rss_overhead_ratio:8.13

rss_overhead_bytes:34414592

mem_fragmentation_ratio:42.24

mem_fragmentation_bytes:38310744

mem_not_counted_for_evict:0

mem_replication_backlog:0

mem_total_replication_buffers:0

mem_clients_slaves:0

mem_clients_normal:0

mem_cluster_links:0

mem_aof_buffer:0

mem_allocator:jemalloc-5.2.1

active_defrag_running:0

lazyfree_pending_objects:0

lazyfreed_objects:0



# Persistence

loading:0

async_loading:0

current_cow_peak:0

current_cow_size:0

current_cow_size_age:0

current_fork_perc:0.00

current_save_keys_processed:0

current_save_keys_total:0

rdb_changes_since_last_save:0

rdb_bgsave_in_progress:0

rdb_last_save_time:1682106514

rdb_last_bgsave_status:ok

rdb_last_bgsave_time_sec:-1

rdb_current_bgsave_time_sec:-1

rdb_saves:0

rdb_last_cow_size:0

rdb_last_load_keys_expired:0

rdb_last_load_keys_loaded:0

aof_enabled:0

aof_rewrite_in_progress:0

aof_rewrite_scheduled:0

aof_last_rewrite_time_sec:-1

aof_current_rewrite_time_sec:-1

aof_last_bgrewrite_status:ok

aof_rewrites:0

aof_rewrites_consecutive_failures:0

aof_last_write_status:ok

aof_last_cow_size:0

module_fork_in_progress:0

module_fork_last_cow_size:0



# Stats

total_connections_received:1

total_commands_processed:2

instantaneous_ops_per_sec:0

total_net_input_bytes:179

total_net_output_bytes:93

total_net_repl_input_bytes:0

total_net_repl_output_bytes:0

instantaneous_input_kbps:0.00

instantaneous_output_kbps:0.00

instantaneous_input_repl_kbps:0.00

instantaneous_output_repl_kbps:0.00

rejected_connections:0

sync_full:0

sync_partial_ok:0

sync_partial_err:0

expired_keys:0

expired_stale_perc:0.00

expired_time_cap_reached_count:0

expire_cycle_cpu_milliseconds:0

evicted_keys:0

evicted_clients:0

total_eviction_exceeded_time:0

current_eviction_exceeded_time:0

keyspace_hits:2

keyspace_misses:1

pubsub_channels:0

pubsub_patterns:0

pubsubshard_channels:0

latest_fork_usec:0

total_forks:0

migrate_cached_sockets:0

slave_expires_tracked_keys:0

active_defrag_hits:0

active_defrag_misses:0

active_defrag_key_hits:0

active_defrag_key_misses:0

total_active_defrag_time:0

current_active_defrag_time:0

tracking_total_keys:0

tracking_total_items:0

tracking_total_prefixes:0

unexpected_error_replies:0

total_error_replies:0

dump_payload_sanitizations:0

total_reads_processed:2

total_writes_processed:1

io_threaded_reads_processed:0

io_threaded_writes_processed:0

reply_buffer_shrinks:0

reply_buffer_expands:0



# Replication

role:master

connected_slaves:0

master_failover_state:no-failover

master_replid:58be717dda833dcd2cf3a42eb3ee00386bcea332

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:0

second_repl_offset:-1

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0



# CPU

used_cpu_sys:0.013690

used_cpu_user:0.025102

used_cpu_sys_children:0.000000

used_cpu_user_children:0.000000

used_cpu_sys_main_thread:0.000000

used_cpu_user_main_thread:0.003569



# Modules

module:name=graph,ver=21200,api=1,filters=0,usedby=[],using=[],options=[]



# Commandstats

cmdstat_graph.QUERY:calls=2,usec=1759,usec_per_call=879.50,rejected_calls=0,failed_calls=0



# Errorstats



# Latencystats

latency_percentiles_usec_graph.QUERY:p50=1646.591,p99=1646.591,p99.9=1646.591



# Cluster

cluster_enabled:0



# Keyspace

db0:keys=1,expires=0,avg_ttl=0


------ CLIENT LIST OUTPUT ------
id=6 addr=172.17.0.1:39270 laddr=172.17.0.2:6379 fd=8 name= age=0 idle=0 flags=b db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=0 qbuf-free=20474 argv-mem=74 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37738 events=r cmd=graph.QUERY user=default redir=-1 resp=2

------ MODULES INFO OUTPUT ------
# graph_executing commands

graph_command:GRAPH.QUERY CYPHER TIMEOUT_DEFAULT="30000" REMOVE null.n0 RETURN 0


------ CONFIG DEBUG OUTPUT ------
proto-max-bulk-len 512mb
replica-read-only yes
io-threads 1
slave-read-only yes
client-query-buffer-limit 1gb
sanitize-dump-payload no
repl-diskless-load disabled
activedefrag no
lazyfree-lazy-user-flush no
list-compress-depth 0
lazyfree-lazy-server-del no
repl-diskless-sync yes
lazyfree-lazy-expire no
lazyfree-lazy-user-del no
lazyfree-lazy-eviction no
io-threads-do-reads no

------ FAST MEMORY TEST ------
54:M 21 Apr 2023 19:48:39.066 # main thread terminated
54:M 21 Apr 2023 19:48:39.066 # Bio thread for job type #0 terminated
54:M 21 Apr 2023 19:48:39.066 # Bio thread for job type #1 terminated
54:M 21 Apr 2023 19:48:39.066 # Bio thread for job type #2 terminated

Fast memory test PASSED, however your memory can still be broken. Please run a memory test for several hours if possible.

=== REDIS BUG REPORT END. Make sure to include from START to END. ===

Steps to reproduce

Run the following query and observe the database crashes:

REMOVE null.n0 RETURN 0

Expected behavior

The query should run successfully

Actual behavior

The database crashes, with the untrue assertion: cypher_astnode_type(ast_entity) == CYPHER_AST_IDENTIFIER

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant