Comments (3)
Seems to be stack related. If you increase the stack size it can handle 500 widgets.
Simpler MRE:
from textual.app import App
from textual.widgets import Label
# import sys
# sys.setrecursionlimit(10**6)
class LabelApp(App[None]):
async def on_mount(self):
for _ in range(500):
await self.mount(Label(";)"))
if __name__ == "__main__":
LabelApp().run()
Suggest we try to get a failed stack trace, and seem if we can make it less deep.
I'm also wondering if there is something significant about mounting widgets from the mount handler, which feels like an odd thing to do, but should be possible.
Update: it also only occurs if you await the mounts.
from textual.
It looks like this was introduced in https://github.com/Textualize/textual/pull/3065/files. Specifically the change from invoke
to self._dispatch_message
is causing a stack overflow as we recursively bounce between _dispatch_message
and flush_next_callbacks
.
Fatal Python error: Cannot recover from stack overflow.
Python runtime state: initialized
Thread 0x000000016fca7000 (most recent call first):
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/selectors.py", line 558 in select
File "/Users/darrenburns/code/textual/src/textual/drivers/linux_driver.py", line 276 in run_input_thread
File "/Users/darrenburns/code/textual/src/textual/drivers/linux_driver.py", line 242 in _run_input_thread
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/threading.py", line 870 in run
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/threading.py", line 932 in _bootstrap_inner
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/threading.py", line 890 in _bootstrap
Thread 0x000000016ec9b000 (most recent call first):
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/threading.py", line 302 in wait
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/queue.py", line 170 in get
File "/Users/darrenburns/code/textual/src/textual/drivers/_writer_thread.py", line 57 in run
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/threading.py", line 932 in _bootstrap_inner
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/threading.py", line 890 in _bootstrap
Current thread 0x0000000102570580 (most recent call first):
File "/Users/darrenburns/.pyenv/versions/3.8.12/lib/python3.8/re.py", line 275 in escape
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 36 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in <genexpr>
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 77 in regex_opt_inner
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/regexopt.py", line 91 in regex_opt
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexer.py", line 491 in get
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexer.py", line 503 in _process_regex
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexer.py", line 575 in _process_state
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexer.py", line 559 in _process_state
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexer.py", line 596 in process_tokendef
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexer.py", line 657 in __call__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/pygments/lexers/__init__.py", line 127 in get_lexer_by_name
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/syntax.py", line 433 in lexer
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/syntax.py", line 480 in highlight
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/syntax.py", line 649 in _get_syntax
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/segment.py", line 667 in __init__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/syntax.py", line 621 in __rich_console__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1332 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/segment.py", line 291 in split_and_crop_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1372 in render_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/padding.py", line 97 in __rich_console__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1332 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/segment.py", line 291 in split_and_crop_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1372 in render_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/table.py", line 822 in _render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/table.py", line 509 in __rich_console__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1332 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1336 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1336 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/segment.py", line 291 in split_and_crop_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1372 in render_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/padding.py", line 97 in __rich_console__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1332 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/segment.py", line 291 in split_and_crop_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1372 in render_lines
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/panel.py", line 224 in __rich_console__
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1332 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1336 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/console.py", line 1336 in render
File "/Users/darrenburns/Library/Caches/pypoetry/virtualenvs/textual-DcnGcHTN-py3.8/lib/python3.8/site-packages/rich/segment.py", line 667 in __init__
File "/Users/darrenburns/code/textual/src/textual/app.py", line 2170 in _fatal_error
File "/Users/darrenburns/code/textual/src/textual/app.py", line 2159 in _handle_exception
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 597 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 595 in _flush_next_callbacks
File "/Users/darrenburns/code/textual/src/textual/message_pump.py", line 624 in _dispatch_message
...
fish: Job 1, 'textual run --dev sandbox/darre…' terminated by signal SIGABRT (Abort)
from textual.
Don't forget to star the repository!
Follow @textualizeio for Textual updates.
from textual.
Related Issues (20)
- Add `remove` attribute to `mount` and `mount_all` HOT 7
- Add a `lock` to every widget. HOT 3
- Clarify `Input` docs about removing spacing HOT 1
- Input widgets error when I configure type arguments
- A Widget with {margin: 1} style in a ScrollableContainer causes infinite resizes and scrollbars flicker HOT 3
- Pilot cannot click switch with horizontally aligned, long text HOT 5
- Clarify `is_end_of_document_line` in docs HOT 6
- Omitting TextArea theme doesn't highlight
- TabbedContent active attribute doesn't post message TabActivated + doesn't arrange tabs HOT 5
- TextArea crashes Python on html language HOT 5
- Blank display on AIX HOT 10
- check error in the "textual colors" app HOT 7
- Search Functionality for the Select Widget HOT 5
- No display on non-UTF8 locale HOT 1
- Tab scrolling not working HOT 5
- No Tcss file included in documentation for On_decorator example HOT 3
- Stop `TextArea` cursor moving beyond end of line in `read_only` mode? HOT 1
- Event documentation doubles up the bubble and verbose checkboxes HOT 1
- `grid-rows: auto` seems to be broken when `column-span`/`Pretty` is used HOT 5
- Dynamic bindings update HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from textual.