Closed NathanHowell closed 3 years ago
Would you mind trying this with a nightly build?
@wez it still happens, here is the profile output from current main e9372086ae941445ce40cec13561959cb12073a4:
Sampling process 19897 for 3 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols...
Analysis of sampling wezterm-gui (pid 19897) every 1 millisecond
Process: wezterm-gui [19897]
Path: /Users/USER/*/wezterm-gui
Load Address: 0x10bfca000
Identifier: com.github.wez.wezterm
Version: 0.1.0 (1)
Code Type: X86-64
Parent Process: zsh [99916]
Date/Time: 2021-04-21 15:35:53.753 -0700
Launch Time: 2021-04-21 15:35:14.530 -0700
OS Version: Mac OS X 10.15.7 (19H2)
Report Version: 7
Analysis Tool: /usr/bin/sample
Physical footprint: 3.3G
Physical footprint (peak): 14.9G
----
Call graph:
2480 Thread_3312653 DispatchQueue_1: com.apple.main-thread (serial)
+ 2480 start (in libdyld.dylib) + 1 [0x7fff67777cc9]
+ 2480 main (in wezterm-gui) + 41 [0x10c00a019]
+ 2480 std::rt::lang_start_internal::h86f505dc7de50d93 (in wezterm-gui) + 644 [0x10cf05bc4]
+ 2480 std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h09cb5ea809249110 (in wezterm-gui) + 12 [0x10c08e30c]
+ 2480 std::sys_common::backtrace::__rust_begin_short_backtrace::h31c12490650e5bdd (in wezterm-gui) + 10 [0x10c0e80ea]
+ 2480 wezterm_gui::main::h03355ecfc03ea067 (in wezterm-gui) + 82 [0x10c005232]
+ 2480 wezterm_gui::run::h425de49271d84414 (in wezterm-gui) + 11164 [0x10c007f2c]
+ 2480 _$LT$window..os..macos..connection..Connection$u20$as$u20$window..connection..ConnectionOps$GT$::run_message_loop::h1b6ff6b10e1742da (in wezterm-gui) + 22 [0x10c723dc6]
+ 2480 -[NSApplication run] (in AppKit) + 658 [0x7fff2aa3d58e]
+ 2480 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) + 1352 [0x7fff2aa4b880]
+ 2480 _DPSNextEvent (in AppKit) + 883 [0x7fff2aa4d039]
+ 2480 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) + 64 [0x7fff2c407579]
+ 2480 ReceiveNextEventCommon (in HIToolbox) + 584 [0x7fff2c4077d5]
+ 2480 RunCurrentEventLoopInMode (in HIToolbox) + 292 [0x7fff2c407abd]
+ 2477 CFRunLoopRunSpecific (in CoreFoundation) + 466 [0x7fff2d7ec953]
+ ! 2473 __CFRunLoopRun (in CoreFoundation) + 884 [0x7fff2d7ed324]
+ ! : 2473 __CFRunLoopDoObservers (in CoreFoundation) + 457 [0x7fff2d7edd8c]
+ ! : 2473 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ (in CoreFoundation) + 23 [0x7fff2d7ede5c]
+ ! : 2473 ___NSRunLoopObserverCreateWithHandler_block_invoke (in AppKit) + 41 [0x7fff2b30c080]
+ ! : 2473 __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke (in AppKit) + 266 [0x7fff2abecda1]
+ ! : 2472 CA::Transaction::commit() (in QuartzCore) + 644 [0x7fff392e4cf0]
+ ! : | 2472 CA::Context::commit_transaction(CA::Transaction*, double) (in QuartzCore) + 334 [0x7fff392e6106]
+ ! : | 2472 CA::Layer::display_if_needed(CA::Transaction*) (in QuartzCore) + 757 [0x7fff39307e09]
+ ! : | 2472 -[_NSOpenGLViewBackingLayer display] (in AppKit) + 836 [0x7fff2b14df4b]
+ ! : | 2470 window::os::macos::window::WindowView::draw_rect::h951bf4bf3731cb68 (in wezterm-gui) + 550 [0x10c735486]
+ ! : | + 2469 _$LT$wezterm_gui..termwindow..TermWindow$u20$as$u20$window..WindowCallbacks$GT$::paint::h9d445e80f3c59797 (in wezterm-gui) + 1849 [0x10c057f39]
+ ! : | + ! 2453 wezterm_gui::termwindow::render::_$LT$impl$u20$wezterm_gui..termwindow..TermWindow$GT$::paint_opengl_pass::h70ec24149c4be8c1 (in wezterm-gui) + 7261 [0x10c04a4cd]
+ ! : | + ! : 1781 mux::pane::Pane::get_lines_with_hyperlinks_applied::hff30c44a90cdc6bd (in wezterm-gui) + 465 [0x10c65fca1]
+ ! : | + ! : | 1685 mux::pane::LogicalLine::apply_hyperlink_rules::h3585934823209923 (in wezterm-gui) + 168 [0x10c657338]
+ ! : | + ! : | + 1681 termwiz::surface::line::Line::split_off::hf83226fbdea49e1b (in wezterm-gui) + 219 [0x10cb729eb]
+ ! : | + ! : | + ! 1681 _platform_memmove$VARIANT$Haswell (in libsystem_platform.dylib) + 41 [0x7fff67971929]
+ ! : | + ! : | + 4 termwiz::surface::line::Line::split_off::hf83226fbdea49e1b (in wezterm-gui) + 82 [0x10cb72962]
with some line numbers if it helps
(lldb) bt
* thread #5, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
* frame #0: 0x00007fff67971929 libsystem_platform.dylib`_platform_memmove$VARIANT$Haswell + 41
frame #1: 0x0000000100babd7b wezterm-gui`termwiz::surface::line::Line::split_off::h7492205f4f66e2c9 [inlined] core::intrinsics::copy_nonoverlapping::h733a9de1abffc2cd at intrinsics.rs:1861:14 [opt]
frame #2: 0x0000000100babd69 wezterm-gui`termwiz::surface::line::Line::split_off::h7492205f4f66e2c9 [inlined] alloc::vec::Vec$LT$T$C$A$GT$::split_off::h026f7728400d357d at mod.rs:1720 [opt]
frame #3: 0x0000000100babcb4 wezterm-gui`termwiz::surface::line::Line::split_off::h7492205f4f66e2c9 at line.rs:239 [opt]
frame #4: 0x000000010068f638 wezterm-gui`mux::pane::LogicalLine::apply_hyperlink_rules::hc065afedbbe694f6 at pane.rs:133:29 [opt]
frame #5: 0x0000000100698011 wezterm-gui`mux::pane::Pane::get_lines_with_hyperlinks_applied::he4c77880887c8e7e at pane.rs:247:13 [opt]
frame #6: 0x0000000100082557 wezterm-gui`wezterm_gui::termwindow::render::_$LT$impl$u20$wezterm_gui..termwindow..TermWindow$GT$::paint_opengl_pass::hf440a88e7994aff8 [inlined] wezterm_gui::termwindow::render::_$LT$impl$u20$wezterm_gui..termwindow..TermWindow$GT$::paint_pane_opengl::ha9c94bbdecd9b363 at render.rs:182:35 [opt]
frame #7: 0x0000000100082384 wezterm-gui`wezterm_gui::termwindow::render::_$LT$impl$u20$wezterm_gui..termwindow..TermWindow$GT$::paint_opengl_pass::hf440a88e7994aff8 at render.rs:629 [opt]
frame #8: 0x000000010008ff49 wezterm-gui`_$LT$wezterm_gui..termwindow..TermWindow$u20$as$u20$window..WindowCallbacks$GT$::paint::hf466aab6f1e0525f [inlined] wezterm_gui::termwindow::render::_$LT$impl$u20$wezterm_gui..termwindow..TermWindow$GT$::paint_impl::h04d9321cb6d1bd44 at render.rs:94:19 [opt]
frame #9: 0x000000010008f814 wezterm-gui`_$LT$wezterm_gui..termwindow..TermWindow$u20$as$u20$window..WindowCallbacks$GT$::paint::hf466aab6f1e0525f at mod.rs:384 [opt]
frame #10: 0x000000010076d846 wezterm-gui`window::os::macos::window::WindowView::draw_rect::hb21fddf9f4d9f4ca at window.rs:1885:17 [opt]
Thanks; the source info was helpful because I was too lazy to figure out how to get an auth token to recreate the same json output(!). I've pushed a speculative fix that constrains the length of the un-and-re-wrapped lines in the region of the code that was hot in the profile.
@wez sweet, I'll confirm the fix on Monday.
I'll close this in the meantime, but if you find that it still isn't right, please re-open it!
@wez it works now, thanks! very happy with wezterm.
I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.
Describe the bug
Writing extremely long lines to the console makes the console unusable even after the writes are complete. I'm assuming it's the url highlighter, see the profile below. Though the terminal had been running for a few weeks and has a few tables open, this also happens in a fresh instance with a single tab. In both cases the heaviest frame on the stack is
mux::pane::Pane::get_lines_with_hyperlinks_applied
. The same problem does not occur when piping the same document throughjq
.Environment (please complete the following information):
To Reproduce
curl -H "Authorization: bearer <use a real token>" https://api.github.com/graphql
this prints out a ~1.5MB json file as a single line to the console. obviously not very useful :-)
Configuration
Expected behavior
wezterm to be usable without killing the process.
Additional context