Deployment info: Local deployment on Windows Subsystem for Linux 2 (Ubuntu 22.04.3 LTS, which I fully updated and restarted). Windows is also updated and restarted (OS build 22621.2428).
Today I upgraded Streamlit from 1.27.2 to 1.28.0 and ran into the following problem. Downgrading to earlier versions of Streamlit does not help. Before the upgrade, I had been running Streamlit regularly on my system for almost a year (including upgrades) without issue. The problem started occurring on my original version of Streamlit but it persists even after creating an entire fresh new installation, the details of which are below.
My test.py
script is simple:
import streamlit as st
st.write('hello')
if st.button('click me'):
st.rerun()
As soon as I click the button, the app runs continuously (RUNNING...
in the top right) until it dies, after which the following appears in my terminal:
Exception in thread ScriptRunner.scriptThread:
Traceback (most recent call last):
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 534, in _run_script
exec(code, module.__dict__)
File "/home/weismanal/notebook/2023-10-30/new_streamlit_installation2/test.py", line 3, in <module>
st.write('hello')
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/metrics_util.py", line 396, in wrapped_func
result = non_optional_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/elements/write.py", line 268, in write
flush_buffer()
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/elements/write.py", line 185, in flush_buffer
self.dg.markdown(
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/metrics_util.py", line 396, in wrapped_func
result = non_optional_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/elements/markdown.py", line 106, in markdown
return self.dg._enqueue("markdown", markdown_proto)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/delta_generator.py", line 532, in _enqueue
_enqueue_message(msg)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/delta_generator.py", line 873, in _enqueue_message
ctx.enqueue(msg)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_run_context.py", line 108, in enqueue
self._enqueue(msg)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 321, in _enqueue_forward_msg
self.on_event.send(
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/blinker/base.py", line 297, in send
result = receiver(sender, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/app_session.py", line 462, in _on_scriptrunner_event
self._event_loop.call_soon_threadsafe(
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/asyncio/base_events.py", line 809, in call_soon_threadsafe
handle = self._call_soon(callback, args, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/asyncio/base_events.py", line 781, in _call_soon
handle = events.Handle(callback, args, self, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/asyncio/events.py", line 33, in __init__
context = contextvars.copy_context()
^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/threading.py", line 982, in run
self._target(*self._args, **self._kwargs)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 286, in _run_script_thread
self._run_script(request.rerun_data)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 588, in _run_script
self._run_script(rerun_exception_data)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 588, in _run_script
self._run_script(rerun_exception_data)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 588, in _run_script
self._run_script(rerun_exception_data)
[Previous line repeated 976 more times]
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 549, in _run_script
handle_uncaught_app_exception(uncaught_exception)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/site-packages/streamlit/error_util.py", line 95, in handle_uncaught_app_exception
_LOGGER.warning("Uncaught app exception", exc_info=ex)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 1501, in warning
self._log(WARNING, msg, args, **kwargs)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 1634, in _log
self.handle(record)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 1644, in handle
self.callHandlers(record)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 1706, in callHandlers
hdlr.handle(record)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 978, in handle
self.emit(record)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 1110, in emit
msg = self.format(record)
^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 953, in format
return fmt.format(record)
^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 695, in format
record.exc_text = self.formatException(record.exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/logging/__init__.py", line 645, in formatException
traceback.print_exception(ei[0], ei[1], tb, None, sio)
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/traceback.py", line 124, in print_exception
te = TracebackException(type(value), value, tb, limit=limit, compact=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/traceback.py", line 702, in __init__
self.stack = StackSummary._extract_from_extended_frame_gen(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/traceback.py", line 416, in _extract_from_extended_frame_gen
for f, (lineno, end_lineno, colno, end_colno) in frame_gen:
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/traceback.py", line 353, in _walk_tb_with_full_positions
positions = _get_code_position(tb.tb_frame.f_code, tb.tb_lasti)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2/lib/python3.11/traceback.py", line 364, in _get_code_position
if instruction_index < 0:
^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded in comparison
Everything works just fine if I comment out the st.rerun()
.
Here is my environment:
(conda-streamlit-2023-10-30_2) weismanal@XXXX:~/notebook/2023-10-30/new_streamlit_installation2$ conda env export
name: conda-streamlit-2023-10-30_2
channels:
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- bzip2=1.0.8=h7f98852_4
- ca-certificates=2023.7.22=hbcca054_0
- ld_impl_linux-64=2.40=h41732ed_0
- libexpat=2.5.0=hcb278e6_1
- libffi=3.4.2=h7f98852_5
- libgcc-ng=13.2.0=h807b86a_2
- libgomp=13.2.0=h807b86a_2
- libnsl=2.0.1=hd590300_0
- libsqlite=3.43.2=h2797004_0
- libuuid=2.38.1=h0b41bf4_0
- libzlib=1.2.13=hd590300_5
- ncurses=6.4=hcb278e6_0
- openssl=3.1.4=hd590300_0
- pip=23.3.1=pyhd8ed1ab_0
- python=3.11.6=hab00c5b_0_cpython
- readline=8.2=h8228510_1
- setuptools=68.2.2=pyhd8ed1ab_0
- tk=8.6.13=h2797004_0
- wheel=0.41.3=pyhd8ed1ab_0
- xz=5.2.6=h166bdaf_0
- pip:
- altair==5.1.2
- attrs==23.1.0
- blinker==1.6.3
- cachetools==5.3.2
- certifi==2023.7.22
- charset-normalizer==3.3.1
- click==8.1.7
- gitdb==4.0.11
- gitpython==3.1.40
- idna==3.4
- importlib-metadata==6.8.0
- jinja2==3.1.2
- jsonschema==4.19.2
- jsonschema-specifications==2023.7.1
- markdown-it-py==3.0.0
- markupsafe==2.1.3
- mdurl==0.1.2
- numpy==1.26.1
- packaging==23.2
- pandas==2.1.2
- pillow==10.1.0
- protobuf==4.24.4
- pyarrow==13.0.0
- pydeck==0.8.1b0
- pygments==2.16.1
- python-dateutil==2.8.2
- pytz==2023.3.post1
- referencing==0.30.2
- requests==2.31.0
- rich==13.6.0
- rpds-py==0.10.6
- six==1.16.0
- smmap==5.0.1
- streamlit==1.28.0
- tenacity==8.2.3
- toml==0.10.2
- toolz==0.12.0
- tornado==6.3.3
- typing-extensions==4.8.0
- tzdata==2023.3
- tzlocal==5.2
- urllib3==2.0.7
- validators==0.22.0
- watchdog==3.0.0
- zipp==3.17.0
prefix: /home/weismanal/programs/miniconda3/envs/conda-streamlit-2023-10-30_2
Any advice would be greatly appreciated. Thank you!