You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The fuzzer (#211) I am running with a timeout of 1 second. After running for a while, it finds a number of queries which are taking longer than one second to parse:
I think the main problem is in parse_table_factor where we first try parse_derived_table_factor but if it doesn't give us a parsed result go back into parse_table_and_joins again and try parsing the rest, where we repeat the whole thing for the rest of the input. Because we call into those functions recursively, those are repeated a large number of times for every "new" level.
The stacktrace looks like this:
#0 0x563837000f31 in __sanitizer_print_stack_trace /rustc/llvm/src/llvm-project/compiler-rt/lib/asan/asan_stack.cpp:86:3
#1 0x56383724c8a0 in fuzzer::PrintStackTrace() (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x38f8a0)
#2 0x5638372247e4 in fuzzer::Fuzzer::AlarmCallback() (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x3677e4)
#3 0x7faf2e0923bf (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
#4 0x5638371784fb in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb4fb)
#5 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#6 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#7 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#8 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#9 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#10 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#11 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#12 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#13 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#14 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#15 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#16 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#17 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#18 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#19 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#20 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#21 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#22 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#23 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#24 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#25 0x563837185a6d in sqlparser::parser::Parser::parse_derived_table_factor::heebdf4b6060718c1 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c8a6d)
#26 0x563837183c1f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c6c1f)
#27 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#28 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#29 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#30 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#31 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#32 0x5638371588f7 in sqlparser::parser::Parser::parse_comma_separated::h28f599ad92f27c78 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x29b8f7)
#33 0x56383717d64b in sqlparser::parser::Parser::parse_select::hb296875023d89e99 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c064b)
#34 0x56383717b9fa in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2be9fa)
#35 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#36 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#37 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#38 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#39 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#40 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#41 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#42 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#43 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#44 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#45 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#46 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#47 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#48 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#49 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#50 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#51 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#52 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#53 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#54 0x563837185a6d in sqlparser::parser::Parser::parse_derived_table_factor::heebdf4b6060718c1 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c8a6d)
#55 0x563837183c1f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c6c1f)
#56 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#57 0x5638371588f7 in sqlparser::parser::Parser::parse_comma_separated::h28f599ad92f27c78 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x29b8f7)
#58 0x56383717d64b in sqlparser::parser::Parser::parse_select::hb296875023d89e99 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c064b)
#59 0x56383717b9fa in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2be9fa)
#60 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#61 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#62 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#63 0x563837185a6d in sqlparser::parser::Parser::parse_derived_table_factor::heebdf4b6060718c1 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c8a6d)
#64 0x563837183c1f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c6c1f)
#65 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#66 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#67 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#68 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#69 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#70 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#71 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#72 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#73 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#74 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#75 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#76 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#77 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#78 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#79 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#80 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#81 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#82 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#83 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#84 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#85 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#86 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#87 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#88 0x5638371588f7 in sqlparser::parser::Parser::parse_comma_separated::h28f599ad92f27c78 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x29b8f7)
#89 0x56383717d64b in sqlparser::parser::Parser::parse_select::hb296875023d89e99 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c064b)
#90 0x56383717b9fa in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2be9fa)
#91 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#92 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#93 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#94 0x56383717bb17 in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2beb17)
#95 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#96 0x563837185a6d in sqlparser::parser::Parser::parse_derived_table_factor::heebdf4b6060718c1 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c8a6d)
#97 0x563837183c1f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c6c1f)
#98 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#99 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#100 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#101 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#102 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#103 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#104 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#105 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#106 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#107 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#108 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#109 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#110 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#111 0x56383718461f in sqlparser::parser::Parser::parse_table_factor::hc4dadaa544f80fe6 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c761f)
#112 0x563837181b49 in sqlparser::parser::Parser::parse_table_and_joins::h7bbdc0a0e017d180 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c4b49)
#113 0x5638371588f7 in sqlparser::parser::Parser::parse_comma_separated::h28f599ad92f27c78 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x29b8f7)
#114 0x56383717d64b in sqlparser::parser::Parser::parse_select::hb296875023d89e99 (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2c064b)
#115 0x56383717b9fa in sqlparser::parser::Parser::parse_query_body::h0a2b3e371d9e763f (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2be9fa)
#116 0x563837178444 in sqlparser::parser::Parser::parse_query::hc3d4d76b6b53865a (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2bb444)
#117 0x563837136b2b in sqlparser::parser::Parser::parse_statement::h99d71b13e95cc2db (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x279b2b)
#118 0x5638371346b0 in sqlparser::parser::Parser::parse_sql::h70d5374cda81bbae (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x2776b0)
#119 0x5638370466e3 in rust_fuzzer_test_input (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x1896e3)
#120 0x56383720fd80 in __rust_try (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x352d80)
#121 0x56383720f9df in LLVMFuzzerTestOneInput (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x3529df)
#122 0x563837224acc in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x367acc)
#123 0x56383722d4d0 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x3704d0)
#124 0x56383722de83 in fuzzer::Fuzzer::MutateAndTestOne() (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x370e83)
#125 0x56383723020f in fuzzer::Fuzzer::Loop(std::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x37320f)
#126 0x56383721ddf9 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0x360df9)
#127 0x563836f7f306 in main (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0xc2306)
#128 0x7faf2de970b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
#129 0x563836f7f4ad in _start (/home/d/C/sqlparser-rs/fuzz/target/x86_64-unknown-linux-gnu/release/parse_sql+0xc24ad)```
The text was updated successfully, but these errors were encountered:
The fuzzer (#211) I am running with a timeout of 1 second. After running for a while, it finds a number of queries which are taking longer than one second to parse:
According to the benchmark https://github.com/ballista-compute/sqlparser-rs/pull/217/files this takes 76 ms, which is more than 1000x slower than the other queries.
I think the main problem is in
parse_table_factor
where we first tryparse_derived_table_factor
but if it doesn't give us a parsed result go back intoparse_table_and_joins
again and try parsing the rest, where we repeat the whole thing for the rest of the input. Because we call into those functions recursively, those are repeated a large number of times for every "new" level.The stacktrace looks like this:
The text was updated successfully, but these errors were encountered: