Skip to Main Content

SQL Developer for VS Code

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

StackOverflowError in parser

Peter L.Mar 15 2024

Separate thread as discussed here.

The following query can be used to to generate code that shows the problem. Save result in a file and open it.

WITH x AS (
  SELECT ROWNUM AS i FROM dual CONNECT BY ROWNUM <= 4000
)
SELECT 'CREATE OR REPLACE PROCEDURE vs_code_test_proc AS' FROM dual UNION ALL
SELECT ' c_' || i || ' CONSTANT PLS_INTEGER := ' || i || ';' FROM x UNION ALL
SELECT 'BEGIN' FROM dual UNION ALL
SELECT ' dbms_output.put_line( c_' || i || ' );' FROM x UNION ALL
SELECT 'END vs_code_test_proc;' FROM dual;

Reporting these in one thread since they are most likely related:

  1. When loading the file, I get a StackOverflowError (below). Outline stays empty.
  2. Executing with “Run in SQLcl” fails
  3. Format Document either does nothing or runs forever
[3/15/2024, 5:40:17 PM] [DBToolsServerApp(12882)] [WARN ] #stderr 
Mar 15, 2024 5:40:17 PM 
SEVERE: DBTS-04000: Server Error 
DBTS-04000: Server Error. An unexpected error with the following message occurred: java.lang.StackOverflowError. Retry the request, if the issue persists, report it to product support 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpcException.of(JsonRpcException.java:56) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc.handleError(JsonRpc.java:65) 
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.actions.Actions.dispatch(Actions.java:100) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server.dispatch(JsonRpc.java:1169) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server.onMessage(JsonRpc.java:1184) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server$Endpoint.onMessage(JsonRpc.java:1585) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.jsonrpc.JsonRpc$Server$Endpoint.onMessage(JsonRpc.java:1572) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.lsp.LanguageServer$EndpointAdaptor.onMessage(LanguageServer.java:476) 
at com.oracle.dbtools.server.lsp@23.4.1/com.oracle.dbtools.server.lsp.LanguageServer$EndpointAdaptor.onMessage(LanguageServer.java:458) 
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.transport.WebSocketTransport$ListenerAdaptor.onText(WebSocketTransport.java:272) 
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.web.socket.WebSocket$ListenerFilter.onText(WebSocket.java:405) 
at com.oracle.dbtools.utils.core@23.4.1/com.oracle.dbtools.utils.core.web.socket.server.WebSocketSupport$ErrorListener.onText(WebSocketSupport.java:501) 
at com.oracle.dbtools.utils.jetty@23.4.1/com.oracle.dbtools.utils.jetty.JettyWebServerBridge$ListenerAdapter.onWebSocketPartialText(JettyWebServerBridge.java:107) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.messages.PartialStringMessageSink.accept(PartialStringMessageSink.java:45) 
at org.eclipse.jetty.websocket.jetty.common@11.0.18/org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.acceptMessage(JettyWebSocketFrameHandler.java:348) 
at org.eclipse.jetty.websocket.jetty.common@11.0.18/org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.onContinuationFrame(JettyWebSocketFrameHandler.java:363) 
at org.eclipse.jetty.websocket.jetty.common@11.0.18/org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.onFrame(JettyWebSocketFrameHandler.java:247) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession$IncomingAdaptor.lambda$onFrame$1(WebSocketCoreSession.java:671) 
at org.eclipse.jetty.server@11.0.18/org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1466) 
at org.eclipse.jetty.server@11.0.18/org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1485) 
at org.eclipse.jetty.websocket.core.server@11.0.18/org.eclipse.jetty.websocket.core.server.internal.AbstractHandshaker$1.handle(AbstractHandshaker.java:212) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession$IncomingAdaptor.onFrame(WebSocketCoreSession.java:671) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.AbstractExtension.nextIncomingFrame(AbstractExtension.java:145) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:236) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.DemandingFlusher.emitFrame(DemandingFlusher.java:145) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingFlusher.inflate(PerMessageDeflateExtension.java:487) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension$IncomingFlusher.handle(PerMessageDeflateExtension.java:413) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.DemandingFlusher.process(DemandingFlusher.java:169) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:243) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.IteratingCallback.succeeded(IteratingCallback.java:369) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.DemandingFlusher.onFrame(DemandingFlusher.java:104) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.PerMessageDeflateExtension.onFrame(PerMessageDeflateExtension.java:93) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.ExtensionStack.onFrame(ExtensionStack.java:120) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.onFrame(WebSocketCoreSession.java:481) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onFrame(WebSocketConnection.java:271) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketConnection.fillAndParse(WebSocketConnection.java:464) 
at org.eclipse.jetty.websocket.core.common@11.0.18/org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onFillable(WebSocketConnection.java:349) 
at org.eclipse.jetty.io@11.0.18/org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) 
at org.eclipse.jetty.io@11.0.18/org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) 
at org.eclipse.jetty.io@11.0.18/org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) 
at org.eclipse.jetty.util@11.0.18/org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) 
at java.base/java.lang.Thread.run(Thread.java:1583) 
Caused by: java.lang.StackOverflowError 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Parser.getSymbol(Parser.java:250) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.isAsc(SqlEarley.java:1133) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:816) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.tree(SqlEarley.java:1215) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:843) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.tree(SqlEarley.java:1215) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:850) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.plsql.SqlEarley.tree(SqlEarley.java:1215) 
at oracle.dbtools.common.all@23.3.1/oracle.dbtools.parser.Earley.tree(Earley.java:843)
...
Comments
Post Details
Added on Mar 15 2024
5 comments
230 views