griddb icon indicating copy to clipboard operation
griddb copied to clipboard

gsserver crashed at SQLExecution::checkSelectList

Open fuboat opened this issue 2 years ago • 1 comments

Describe the bug The gsserver binary throws SIGSEGV when executing a specific SQL statement.

To Reproduce Steps to reproduce the behavior:

  1. Start gsserver through executing gs_startnode and gs_joincluster.
  2. Execute the SQL statement through JDBC driver:
INSERT INTO x VALUES (1),();
  1. The gsserver process crashes. The backtrace of gsserver:
#0  0x0000000002941cb0 in __gnu_cxx::__normal_iterator<SyntaxTree::Expr**, std::vector<SyntaxTree::Expr*, util::StdAllocator<SyntaxTree::Expr*, void> > >::__normal_iterator (this=0x7fff98ff5af0, __i=<error reading variable>) at /usr/include/c++/4.8.2/bits/stl_iterator.h:726
#1  0x00000000029314d3 in std::vector<SyntaxTree::Expr*, util::StdAllocator<SyntaxTree::Expr*, void> >::begin (this=<incomplete type>) at /usr/include/c++/4.8.2/bits/stl_vector.h:539
#2  0x0000000002a08d4a in SQLExecution::checkSelectList (this=<incomplete type>, selectList=0x0, mergeSelectList=..., placeHolderCount=@0x7fff98ff5b9c: 0) at ./sql_execution.cpp:3567
#3  0x0000000002a05a92 in SQLExecution::checkFastInsert (this=<incomplete type>, setInfo=...) at ./sql_execution.cpp:2981
#4  0x0000000002a0418d in SQLExecution::fastInsert (this=<incomplete type>, ec=..., bindParamInfos=..., useCache=true) at ./sql_execution.cpp:2834
#5  0x00000000029f50a7 in SQLExecution::execute (this=<incomplete type>, ec=..., request=..., prepareBinded=255, e=0x7fff80011b18, versionId=160 '\240', responseJobId=0x0) at ./sql_execution.cpp:757
#6  0x0000000002b40dad in SQLRequestHandler::operator() (this=0x7fff8000a071, ec=..., ev=...) at ./sql_service.cpp:894
#7  0x00000000025c212d in EventEngine::Dispatcher::handleEvent (this=0x7fffffff84c8, ec=..., ev=..., entry=...) at ./event_engine.cpp:1663
#8  0x00000000025c0e67 in EventEngine::Dispatcher::execute (this=0x4e602e0, ec=..., ev=...) at ./event_engine.cpp:1495
#9  0x00000000025cbed5 in EventEngine::EventWorker::run (this=0x7fff80002b78) at ./event_engine.cpp:3399
#10 0x000000000348a285 in util::Thread::threadProc (param=0x4e73ec8) at ./util/thread.cpp:1262
#11 0x00007ffff7fa3609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#12 0x00007ffff7b4e133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Expected behavior The server should send error to the client, such as Parse Error at '(' or Table 'x' not exist, rather than crashing straightly.

Additional context It can be reproduced on the master branch and the v5.1.0 tag.

fuboat avatar May 10 '23 19:05 fuboat

Sorry for late reply. I'll check this issue.

knonomura avatar Aug 22 '23 12:08 knonomura