{"record":{"id":"ae86645c67e59978","repo":"sgl-project/sglang","slug":"error-in-stream-executor-get-exception-traceback","errorCode":null,"errorMessage":"Error in stream_executor: {get_exception_traceback()}","messagePattern":"Error in stream_executor: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"python/sglang/lang/interpreter.py","lineNumber":434,"sourceCode":"    def end(self):\n        if self.use_thread:\n            if self.worker.is_alive():\n                self.queue.put(None)\n        self.backend.end_program(self)\n\n    def _thread_worker_func(self):\n        error = None\n\n        while True:\n            expr = self.queue.get()\n            if expr is None:\n                self.queue.task_done()\n                break\n\n            try:\n                self._execute(expr)\n            except Exception as e:\n                warnings.warn(f\"Error in stream_executor: {get_exception_traceback()}\")\n                error = e\n                break\n            self.queue.task_done()\n            if self.stream_text_event:\n                self.stream_text_event.set()\n\n        # Clean the queue and events\n        if error is not None:\n            try:\n                while True:\n                    self.queue.task_done()\n                    self.queue.get_nowait()\n            except queue.Empty:\n                pass\n            for name in self.variable_event:\n                self.variable_event[name].set()\n            if self.stream_var_event:\n                for name in self.stream_var_event:","sourceCodeStart":416,"sourceCodeEnd":452,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/lang/interpreter.py#L416-L452","documentation":"This is the SGLang restricted-python interpreter's stream executor thread reporting that an inline expression you scheduled (via queue) raised a Python exception. The traceback of the original exception is embedded in the warning text; the worker stores the exception and stops processing further queued expressions.","triggerScenarios":"Using sglang.lang (SGL front-end) with stream/async execution: an expression submitted to the stream_executor (e.g. gen, call, control flow primitive) raises at runtime — NameError, TypeError, model API error, etc. The warning is emitted from _thread_worker_func and the failure surfaces later as the stored exception.","commonSituations":"Writing SGL programs with the sglang frontend where a function references an undefined variable, passes wrong argument types to primitives, or a backend call (OpenAI endpoint) fails mid-stream; upgrading sglang versions where primitive signatures changed.","solutions":["Read the embedded traceback inside the warning text — it names the real failing expression and original exception","Fix the offending SGL expression (undefined name, wrong arguments, backend error) in your program","Run the same logic synchronously (non-stream mode) to get a cleaner stack trace while debugging","If the error is from a backend call, check endpoint availability/API keys before retrying"],"exampleFix":"# before\ngen(\"Write a story\", max_tokens=nonexistent_var)  # NameError inside stream executor\n# after\nmax_tokens = 512\ngen(\"Write a story\", max_tokens=max_tokens)","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    result = program(runner, batch)\nexcept Exception as e:\n    # the stream worker re-raises the stored exception after the warning\n    logging.exception(\"SGL stream executor failed: %s\", e)","preventionTips":["Test each SGL expression in isolation before composing streaming pipelines","Read the embedded traceback in the warning — the outer exception is generic","Type-check primitive arguments (gen/select) before scheduling them"],"tags":["interpreter","stream-executor","async","frontend","nested-exception"],"backgroundTag":"worker-thread-exception","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}