Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

medium-large NA matrices hang emacs #1307

Open
r2evans opened this issue Dec 16, 2024 · 4 comments
Open

medium-large NA matrices hang emacs #1307

r2evans opened this issue Dec 16, 2024 · 4 comments

Comments

@r2evans
Copy link
Contributor

r2evans commented Dec 16, 2024

I just transitioned to macos, and matrices that worked fine in linux/windows now bring emacs to a crawl.

The first time it happened, I was ablt to get a crash report (or Sample in macos-speak?) of the process, and while rather large, I'm hoping that it means something to one or more of you.

Large "Sample" of hung emacs/ess process
Analysis of sampling Emacs-arm64-11 (pid 5250) every 1 millisecond
Process:         Emacs-arm64-11 [5250]
Path:            /Applications/Emacs.app/Contents/MacOS/Emacs-arm64-11
Load Address:    0x100bf0000
Identifier:      org.gnu.Emacs
Version:         Version 29.4 (9.0)
Code Type:       ARM64
Platform:        macOS
Parent Process:  launchd [1]

Date/Time:       2024-12-15 20:29:06.992 -0500
Launch Time:     2024-12-14 07:50:21.754 -0500
OS Version:      macOS 15.2 (24C101)
Report Version:  7
Analysis Tool:   /usr/bin/sample

Physical footprint:         137.4M
Physical footprint (peak):  177.0M
Idle exit:                  untracked
----

Call graph:
    2137 Thread_1318082   DispatchQueue_1: com.apple.main-thread  (serial)
    + 2137 start  (in dyld) + 2840  [0x19c558274]
    +   2137 main  (in Emacs-arm64-11) + 4184  [0x100ca6d14]
    +     2137 Frecursive_edit  (in Emacs-arm64-11) + 232  [0x100ca8fd4]
    +       2137 recursive_edit_1  (in Emacs-arm64-11) + 216  [0x100ca8b94]
    +         2137 command_loop  (in Emacs-arm64-11) + 308  [0x100ca8d50]
    +           2137 internal_catch  (in Emacs-arm64-11) + 80  [0x100d2f2bc]
    +             2137 command_loop_2  (in Emacs-arm64-11) + 52  [0x100ca96d4]
    +               2137 internal_condition_case  (in Emacs-arm64-11) + 92  [0x100d2f8b0]
    +                 2137 command_loop_1  (in Emacs-arm64-11) + 696  [0x100ca99ac]
    +                   2137 read_key_sequence  (in Emacs-arm64-11) + 880  [0x100caa7c8]
    +                     2137 read_char  (in Emacs-arm64-11) + 3580  [0x100cacff0]
    +                       2137 sit_for  (in Emacs-arm64-11) + 120  [0x100bf8114]
    +                         2137 swallow_events  (in Emacs-arm64-11) + 40  [0x100cadbd0]
    +                           2137 get_input_pending  (in Emacs-arm64-11) + 120  [0x100cb00d4]
    +                             2137 readable_events  (in Emacs-arm64-11) + 28  [0x100cae8b4]
    +                               2137 timer_check  (in Emacs-arm64-11) + 132  [0x100cb0178]
    +                                 2137 timer_check_2  (in Emacs-arm64-11) + 820  [0x100cb0504]
    +                                   2137 call1  (in Emacs-arm64-11) + 44  [0x100cac154]
    +                                     2137 Ffuncall  (in Emacs-arm64-11) + 176  [0x100d2ee60]
    +                                       2137 funcall_general  (in Emacs-arm64-11) + 336  [0x100d319dc]
    +                                         2137 funcall_lambda  (in Emacs-arm64-11) + 204  [0x100d31d08]
    +                                           2137 fetch_and_exec_byte_code  (in Emacs-arm64-11) + 76  [0x100d34214]
    +                                             2137 exec_byte_code  (in Emacs-arm64-11) + 2260  [0x100d6be90]
    +                                               2137 funcall_subr  (in Emacs-arm64-11) + 100  [0x100d31a8c]
    +                                                 2137 Fapply  (in Emacs-arm64-11) + 128  [0x100d3117c]
    +                                                   2137 Ffuncall  (in Emacs-arm64-11) + 176  [0x100d2ee60]
    +                                                     2137 funcall_general  (in Emacs-arm64-11) + 56  [0x100d318c4]
    +                                                       2137 funcall_lambda  (in Emacs-arm64-11) + 652  [0x100d31ec8]
    +                                                         2137 Fprogn  (in Emacs-arm64-11) + 72  [0x100d2d4c4]
    +                                                           2137 eval_sub  (in Emacs-arm64-11) + 584  [0x100d2cef4]
    +                                                             2137 Flet  (in Emacs-arm64-11) + 576  [0x100d2ea5c]
    +                                                               2137 Fprogn  (in Emacs-arm64-11) + 72  [0x100d2d4c4]
    +                                                                 2137 eval_sub  (in Emacs-arm64-11) + 948  [0x100d2d060]
    +                                                                   2137 eval_sub  (in Emacs-arm64-11) + 584  [0x100d2cef4]
    +                                                                     2137 Fif  (in Emacs-arm64-11) + 64  [0x100d2d470]
    +                                                                       2137 eval_sub  (in Emacs-arm64-11) + 584  [0x100d2cef4]
    +                                                                         2137 Fprogn  (in Emacs-arm64-11) + 72  [0x100d2d4c4]
    +                                                                           2137 eval_sub  (in Emacs-arm64-11) + 948  [0x100d2d060]
    +                                                                             2137 eval_sub  (in Emacs-arm64-11) + 584  [0x100d2cef4]
    +                                                                               2137 Fsave_current_buffer  (in Emacs-arm64-11) + 36  [0x100d2203c]
    +                                                                                 2137 Fprogn  (in Emacs-arm64-11) + 72  [0x100d2d4c4]
    +                                                                                   2137 eval_sub  (in Emacs-arm64-11) + 584  [0x100d2cef4]
    +                                                                                     2137 Fif  (in Emacs-arm64-11) + 52  [0x100d2d464]
    +                                                                                       2137 Fprogn  (in Emacs-arm64-11) + 72  [0x100d2d4c4]
    +                                                                                         2137 eval_sub  (in Emacs-arm64-11) + 584  [0x100d2cef4]
    +                                                                                           2137 Fredisplay  (in Emacs-arm64-11) + 152  [0x100bf844c]
    +                                                                                             2137 redisplay_preserve_echo_area  (in Emacs-arm64-11) + 84  [0x100c1e9ac]
    +                                                                                               2135 redisplay_internal  (in Emacs-arm64-11) + 3892  [0x100c1b294]
    +                                                                                               ! 2135 redisplay_windows  (in Emacs-arm64-11) + 96  [0x100c3cb7c]
    +                                                                                               !   2135 redisplay_windows  (in Emacs-arm64-11) + 184  [0x100c3cbd4]
    +                                                                                               !     2135 internal_condition_case_1  (in Emacs-arm64-11) + 96  [0x100d2f934]
    +                                                                                               !       2135 redisplay_window_0  (in Emacs-arm64-11) + 44  [0x100c3d874]
    +                                                                                               !         1329 redisplay_window  (in Emacs-arm64-11) + 6216  [0x100c3f0cc]
    +                                                                                               !         : 670 try_window  (in Emacs-arm64-11) + 240  [0x100c1f6e4]
    +                                                                                               !         : | 652 display_line  (in Emacs-arm64-11) + 908  [0x100c1fce4]
    +                                                                                               !         : | + 649 get_next_display_element  (in Emacs-arm64-11) + 128  [0x100c0e480]
    +                                                                                               !         : | + ! 648 next_element_from_buffer  (in Emacs-arm64-11) + 236  [0x100c35af8]
    +                                                                                               !         : | + ! : 600 handle_stop  (in Emacs-arm64-11) + 368  [0x100c32e8c]
    +                                                                                               !         : | + ! : | 592 compute_stop_pos  (in Emacs-arm64-11) + 944  [0x100c337e4]
    +                                                                                               !         : | + ! : | + 567 composition_compute_stop_pos  (in Emacs-arm64-11) + 244  [0x100d94eb4]
    +                                                                                               !         : | + ! : | + ! 566 find_composition  (in Emacs-arm64-11) + 180  [0x100d93814]
    +                                                                                               !         : | + ! : | + ! : 458 Fnext_single_property_change  (in Emacs-arm64-11) + 216  [0x100d8f184]
    +                                                                                               !         : | + ! : | + ! : | 450 textget  (in Emacs-arm64-11) + 16  [0x100d8b87c]
    +                                                                                               !         : | + ! : | + ! : | + 132 lookup_char_property  (in Emacs-arm64-11) + 248  [0x100d8b97c]
    +                                                                                               !         : | + ! : | + ! : | + ! 30 Fassq  (in Emacs-arm64-11) + 236  [0x100d39828]
    +                                                                                               !         : | + ! : | + ! : | + ! : 17 CHECK_LIST_END  (in Emacs-arm64-11) + 20  [0x100d35930]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 7 NILP  (in Emacs-arm64-11) + 24  [0x100d35b38]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 4 builtin_lisp_symbol  (in Emacs-arm64-11) + 0,28  [0x100d35688,0x100d356a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 3 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d356a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : | +   3 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d42320]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 6 NILP  (in Emacs-arm64-11) + 36  [0x100d35b44]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 4 BASE_EQ  (in Emacs-arm64-11) + 20  [0x100d358fc]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + ! 4 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 2 BASE_EQ  (in Emacs-arm64-11) + 32  [0x100d35908]
    +                                                                                               !         : | + ! : | + ! : | + ! : | +   2 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 4 BASE_EQ  (in Emacs-arm64-11) + 44  [0x100d35914]
    +                                                                                               !         : | + ! : | + ! : | + ! : 6 CHECK_LIST_END  (in Emacs-arm64-11) + 32  [0x100d3593c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 4 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d356a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 4 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d42320]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 2 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d356a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : 4 NILP  (in Emacs-arm64-11) + 40  [0x100d35b48]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 CHECK_LIST_END  (in Emacs-arm64-11) + 48  [0x100d3594c]
    +                                                                                               !         : | + ! : | + ! : | + ! :   3 CHECK_TYPE  (in Emacs-arm64-11) + 0  [0x100d3b774]
    +                                                                                               !         : | + ! : | + ! : | + ! 17 Fassq  (in Emacs-arm64-11) + 40  [0x100d39764]
    +                                                                                               !         : | + ! : | + ! : | + ! : 8 CONSP  (in Emacs-arm64-11) + 16  [0x100d35890]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 8 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d42304]
    +                                                                                               !         : | + ! : | + ! : | + ! : |   8 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! : 6 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d42314]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 CONSP  (in Emacs-arm64-11) + 16  [0x100d35890]
    +                                                                                               !         : | + ! : | + ! : | + ! 14 Fassq  (in Emacs-arm64-11) + 128  [0x100d397bc]
    +                                                                                               !         : | + ! : | + ! : | + ! : 9 XCAR  (in Emacs-arm64-11) + 12  [0x100d37fd0]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 6 XCONS  (in Emacs-arm64-11) + 12  [0x100d42370]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 6 XLP  (in Emacs-arm64-11) + 0  [0x100d4231c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 3 XCONS  (in Emacs-arm64-11) + 16  [0x100d42374]
    +                                                                                               !         : | + ! : | + ! : | + ! : 5 XCAR  (in Emacs-arm64-11) + 16,12  [0x100d37fd4,0x100d37fd0]
    +                                                                                               !         : | + ! : | + ! : | + ! 13 Fassq  (in Emacs-arm64-11) + 76  [0x100d39788]
    +                                                                                               !         : | + ! : | + ! : | + ! : 12 XCDR  (in Emacs-arm64-11) + 12  [0x100d358a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 10 XCONS  (in Emacs-arm64-11) + 12  [0x100d42370]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 10 XLP  (in Emacs-arm64-11) + 0  [0x100d4231c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 2 XCONS  (in Emacs-arm64-11) + 16  [0x100d42374]
    +                                                                                               !         : | + ! : | + ! : | + ! : 1 XCDR  (in Emacs-arm64-11) + 16  [0x100d358a8]
    +                                                                                               !         : | + ! : | + ! : | + ! 12 Fassq  (in Emacs-arm64-11) + 136  [0x100d397c4]
    +                                                                                               !         : | + ! : | + ! : | + ! : 5 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d42314]
    +                                                                                               !         : | + ! : | + ! : | + ! : 4 CONSP  (in Emacs-arm64-11) + 16  [0x100d35890]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 2 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d42304]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 2 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 2 TAGGEDP  (in Emacs-arm64-11) + 0  [0x100d422f0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 CONSP  (in Emacs-arm64-11) + 16  [0x100d35890]
    +                                                                                               !         : | + ! : | + ! : | + ! 10 Fassq  (in Emacs-arm64-11) + 148  [0x100d397d0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 9 XCAR  (in Emacs-arm64-11) + 12  [0x100d37fd0]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 5 XCONS  (in Emacs-arm64-11) + 16  [0x100d42374]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 4 XCONS  (in Emacs-arm64-11) + 12  [0x100d42370]
    +                                                                                               !         : | + ! : | + ! : | + ! : |   4 XLP  (in Emacs-arm64-11) + 0  [0x100d4231c]
    +                                                                                               !         : | + ! : | + ! : | + ! : 1 XCAR  (in Emacs-arm64-11) + 16  [0x100d37fd4]
    +                                                                                               !         : | + ! : | + ! : | + ! 8 Fassq  (in Emacs-arm64-11) + 116  [0x100d397b0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 CONSP  (in Emacs-arm64-11) + 16  [0x100d35890]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 3 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d42304]
    +                                                                                               !         : | + ! : | + ! : | + ! : |   3 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 CONSP  (in Emacs-arm64-11) + 16  [0x100d35890]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d42314]
    +                                                                                               !         : | + ! : | + ! : | + ! 8 Fassq  (in Emacs-arm64-11) + 156  [0x100d397d8]
    +                                                                                               !         : | + ! : | + ! : | + ! : 6 EQ  (in Emacs-arm64-11) + 40,64  [0x100d355b4,0x100d355cc]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 EQ  (in Emacs-arm64-11) + 28  [0x100d355a8]
    +                                                                                               !         : | + ! : | + ! : | + ! :   2 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! 7 Fassq  (in Emacs-arm64-11) + 76,104,...  [0x100d39788,0x100d397a4,...]
    +                                                                                               !         : | + ! : | + ! : | + ! 4 Fassq  (in Emacs-arm64-11) + 104  [0x100d397a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 BASE_EQ  (in Emacs-arm64-11) + 20  [0x100d358fc]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 2 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 BASE_EQ  (in Emacs-arm64-11) + 32  [0x100d35908]
    +                                                                                               !         : | + ! : | + ! : | + ! :   2 XLI  (in Emacs-arm64-11) + 0  [0x100d42250]
    +                                                                                               !         : | + ! : | + ! : | + ! 4 Fassq  (in Emacs-arm64-11) + 244  [0x100d39830]
    +                                                                                               !         : | + ! : | + ! : | + ! : 4 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d356a4]
    +                                                                                               !         : | + ! : | + ! : | + ! :   4 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d42320]
    +                                                                                               !         : | + ! : | + ! : | + ! 3 EQ  (in Emacs-arm64-11) + 244  [0x100d35680]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 CHECK_LIST_END  (in Emacs-arm64-11) + 52  [0x100d35950]
    +                                                                                               !         : | + ! : | + ! : | + 57 lookup_char_property  (in Emacs-arm64-11) + 204  [0x100d8b950]
    +                                                                                               !         : | + ! : | + ! : | + ! 46 Fcdr  (in Emacs-arm64-11) + 12  [0x100d17044]
    +                                                                                               !         : | + ! : | + ! : | + ! : 23 CDR  (in Emacs-arm64-11) + 20  [0x100d17060]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 13 CONSP  (in Emacs-arm64-11) + 16  [0x100d1672c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 8 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d1e22c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + ! 8 XLI  (in Emacs-arm64-11) + 0  [0x100d1e1a8]
    +                                                                                               !         : | + ! : | + ! : | + ! : | + 5 TAGGEDP  (in Emacs-arm64-11) + 0,20  [0x100d1e218,0x100d1e22c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 6 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d1e23c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 4 CONSP  (in Emacs-arm64-11) + 0,16  [0x100d1671c,0x100d1672c]
    +                                                                                               !         : | + ! : | + ! : | + ! : 23 CDR  (in Emacs-arm64-11) + 32  [0x100d1706c]
    +                                                                                               !         : | + ! : | + ! : | + ! :   16 XCDR  (in Emacs-arm64-11) + 16,12  [0x100d18440,0x100d1843c]
    +                                                                                               !         : | + ! : | + ! : | + ! :   7 XCDR  (in Emacs-arm64-11) + 12  [0x100d1843c]
    +                                                                                               !         : | + ! : | + ! : | + ! :     7 XCONS  (in Emacs-arm64-11) + 12  [0x100d171a8]
    +                                                                                               !         : | + ! : | + ! : | + ! :       7 XLP  (in Emacs-arm64-11) + 0  [0x100d18858]
    +                                                                                               !         : | + ! : | + ! : | + ! 8 CDR  (in Emacs-arm64-11) + 60  [0x100d17088]
    +                                                                                               !         : | + ! : | + ! : | + ! 3 Fcdr  (in Emacs-arm64-11) + 12  [0x100d17044]
    +                                                                                               !         : | + ! : | + ! : | + 37 lookup_char_property  (in Emacs-arm64-11) + 64,216,...  [0x100d8b8c4,0x100d8b95c,...]
    +                                                                                               !         : | + ! : | + ! : | + 34 lookup_char_property  (in Emacs-arm64-11) + 212  [0x100d8b958]
    +                                                                                               !         : | + ! : | + ! : | + ! 18 CONSP  (in Emacs-arm64-11) + 16  [0x100d8ba48]
    +                                                                                               !         : | + ! : | + ! : | + ! : 16 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d8d188]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 16 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 TAGGEDP  (in Emacs-arm64-11) + 0  [0x100d8d174]
    +                                                                                               !         : | + ! : | + ! : | + ! 11 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d8d198]
    +                                                                                               !         : | + ! : | + ! : | + ! 5 CONSP  (in Emacs-arm64-11) + 16  [0x100d8ba48]
    +                                                                                               !         : | + ! : | + ! : | + 29 lookup_char_property  (in Emacs-arm64-11) + 88  [0x100d8b8dc]
    +                                                                                               !         : | + ! : | + ! : | + ! 16 EQ  (in Emacs-arm64-11) + 28  [0x100d8ba84]
    +                                                                                               !         : | + ! : | + ! : | + ! : 16 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 7 EQ  (in Emacs-arm64-11) + 64,40  [0x100d8baa8,0x100d8ba90]
    +                                                                                               !         : | + ! : | + ! : | + ! 6 EQ  (in Emacs-arm64-11) + 40  [0x100d8ba90]
    +                                                                                               !         : | + ! : | + ! : | + !   6 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + 27 lookup_char_property  (in Emacs-arm64-11) + 140  [0x100d8b910]
    +                                                                                               !         : | + ! : | + ! : | + ! 12 EQ  (in Emacs-arm64-11) + 28  [0x100d8ba84]
    +                                                                                               !         : | + ! : | + ! : | + ! : 12 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 10 EQ  (in Emacs-arm64-11) + 40  [0x100d8ba90]
    +                                                                                               !         : | + ! : | + ! : | + ! : 10 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 5 EQ  (in Emacs-arm64-11) + 40,64  [0x100d8ba90,0x100d8baa8]
    +                                                                                               !         : | + ! : | + ! : | + 19 lookup_char_property  (in Emacs-arm64-11) + 364  [0x100d8b9f0]
    +                                                                                               !         : | + ! : | + ! : | + ! 12 NILP  (in Emacs-arm64-11) + 36  [0x100d8a20c]
    +                                                                                               !         : | + ! : | + ! : | + ! : 9 BASE_EQ  (in Emacs-arm64-11) + 20  [0x100d8d1dc]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 9 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 BASE_EQ  (in Emacs-arm64-11) + 32  [0x100d8d1e8]
    +                                                                                               !         : | + ! : | + ! : | + ! :   3 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 5 NILP  (in Emacs-arm64-11) + 24  [0x100d8a200]
    +                                                                                               !         : | + ! : | + ! : | + ! : 4 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! : 1 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! :   1 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d8dcec]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 BASE_EQ  (in Emacs-arm64-11) + 44  [0x100d8d1f4]
    +                                                                                               !         : | + ! : | + ! : | + 18 EQ  (in Emacs-arm64-11) + 244  [0x100d8bb5c]
    +                                                                                               !         : | + ! : | + ! : | + 18 lookup_char_property  (in Emacs-arm64-11) + 224  [0x100d8b964]
    +                                                                                               !         : | + ! : | + ! : | + ! 9 NILP  (in Emacs-arm64-11) + 24  [0x100d8a200]
    +                                                                                               !         : | + ! : | + ! : | + ! : 5 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 5 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d8dcec]
    +                                                                                               !         : | + ! : | + ! : | + ! : 4 builtin_lisp_symbol  (in Emacs-arm64-11) + 0,28  [0x100d8b62c,0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! 5 NILP  (in Emacs-arm64-11) + 36  [0x100d8a20c]
    +                                                                                               !         : | + ! : | + ! : | + ! : 4 BASE_EQ  (in Emacs-arm64-11) + 20  [0x100d8d1dc]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 4 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 1 BASE_EQ  (in Emacs-arm64-11) + 32  [0x100d8d1e8]
    +                                                                                               !         : | + ! : | + ! : | + ! :   1 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 BASE_EQ  (in Emacs-arm64-11) + 44  [0x100d8d1f4]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 NILP  (in Emacs-arm64-11) + 0  [0x100d8a1e8]
    +                                                                                               !         : | + ! : | + ! : | + 14 lookup_char_property  (in Emacs-arm64-11) + 128  [0x100d8b904]
    +                                                                                               !         : | + ! : | + ! : | + ! 9 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! : 9 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d8dcec]
    +                                                                                               !         : | + ! : | + ! : | + ! 5 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + 13 lookup_char_property  (in Emacs-arm64-11) + 200  [0x100d8b94c]
    +                                                                                               !         : | + ! : | + ! : | + ! 11 XCDR  (in Emacs-arm64-11) + 12  [0x100d8bb70]
    +                                                                                               !         : | + ! : | + ! : | + ! : 9 XCONS  (in Emacs-arm64-11) + 12  [0x100d8de0c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 9 XLP  (in Emacs-arm64-11) + 0  [0x100d8d1a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 XCONS  (in Emacs-arm64-11) + 16  [0x100d8de10]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 XCDR  (in Emacs-arm64-11) + 16  [0x100d8bb74]
    +                                                                                               !         : | + ! : | + ! : | + 13 lookup_char_property  (in Emacs-arm64-11) + 256  [0x100d8b984]
    +                                                                                               !         : | + ! : | + ! : | + ! 7 NILP  (in Emacs-arm64-11) + 24  [0x100d8a200]
    +                                                                                               !         : | + ! : | + ! : | + ! : 6 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 6 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d8dcec]
    +                                                                                               !         : | + ! : | + ! : | + ! : 1 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! 4 NILP  (in Emacs-arm64-11) + 36  [0x100d8a20c]
    +                                                                                               !         : | + ! : | + ! : | + ! : 3 BASE_EQ  (in Emacs-arm64-11) + 32  [0x100d8d1e8]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 3 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 1 BASE_EQ  (in Emacs-arm64-11) + 20  [0x100d8d1dc]
    +                                                                                               !         : | + ! : | + ! : | + ! :   1 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 BASE_EQ  (in Emacs-arm64-11) + 44  [0x100d8d1f4]
    +                                                                                               !         : | + ! : | + ! : | + 12 lookup_char_property  (in Emacs-arm64-11) + 72  [0x100d8b8cc]
    +                                                                                               !         : | + ! : | + ! : | + ! 11 XCAR  (in Emacs-arm64-11) + 12  [0x100d8ba5c]
    +                                                                                               !         : | + ! : | + ! : | + ! : 6 XCONS  (in Emacs-arm64-11) + 12  [0x100d8de0c]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 6 XLP  (in Emacs-arm64-11) + 0  [0x100d8d1a4]
    +                                                                                               !         : | + ! : | + ! : | + ! : 5 XCONS  (in Emacs-arm64-11) + 16,0  [0x100d8de10,0x100d8de00]
    +                                                                                               !         : | + ! : | + ! : | + ! 1 XCAR  (in Emacs-arm64-11) + 16  [0x100d8ba60]
    +                                                                                               !         : | + ! : | + ! : | + 11 lookup_char_property  (in Emacs-arm64-11) + 56  [0x100d8b8bc]
    +                                                                                               !         : | + ! : | + ! : | + ! 7 CONSP  (in Emacs-arm64-11) + 16  [0x100d8ba48]
    +                                                                                               !         : | + ! : | + ! : | + ! : 5 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d8d188]
    +                                                                                               !         : | + ! : | + ! : | + ! : | 5 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 TAGGEDP  (in Emacs-arm64-11) + 0  [0x100d8d174]
    +                                                                                               !         : | + ! : | + ! : | + ! 3 CONSP  (in Emacs-arm64-11) + 16  [0x100d8ba48]
    +                                                                                               !         : | + ! : | + ! : | + ! 1 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d8d198]
    +                                                                                               !         : | + ! : | + ! : | + 6 lookup_char_property  (in Emacs-arm64-11) + 380  [0x100d8ba00]
    +                                                                                               !         : | + ! : | + ! : | + ! 3 TAGGEDP  (in Emacs-arm64-11) + 36  [0x100d8d198]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 CONSP  (in Emacs-arm64-11) + 16  [0x100d8ba48]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 TAGGEDP  (in Emacs-arm64-11) + 20  [0x100d8d188]
    +                                                                                               !         : | + ! : | + ! : | + ! :   2 XLI  (in Emacs-arm64-11) + 0  [0x100d8d1a0]
    +                                                                                               !         : | + ! : | + ! : | + ! 1 CONSP  (in Emacs-arm64-11) + 16  [0x100d8ba48]
    +                                                                                               !         : | + ! : | + ! : | + 5 NILP  (in Emacs-arm64-11) + 40  [0x100d8a210]
    +                                                                                               !         : | + ! : | + ! : | + 3 lookup_char_property  (in Emacs-arm64-11) + 44  [0x100d8b8b0]
    +                                                                                               !         : | + ! : | + ! : | + ! 2 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + ! : 2 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d8dcec]
    +                                                                                               !         : | + ! : | + ! : | + ! 1 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8b648]
    +                                                                                               !         : | + ! : | + ! : | + 2 Fassq  (in Emacs-arm64-11) + 268  [0x100d39848]
    +                                                                                               !         : | + ! : | + ! : | 6 lookup_char_property  (in Emacs-arm64-11) + 428  [0x100d8ba30]
    +                                                                                               !         : | + ! : | + ! : | 2 textget  (in Emacs-arm64-11) + 16  [0x100d8b87c]
    +                                                                                               !         : | + ! : | + ! : 59 Fnext_single_property_change  (in Emacs-arm64-11) + 196  [0x100d8f170]
    +                                                                                               !         : | + ! : | + ! : | 59 next_interval  (in Emacs-arm64-11) + 60,96,...  [0x100d8a9c8,0x100d8a9ec,...]
    +                                                                                               !         : | + ! : | + ! : 22 Fnext_single_property_change  (in Emacs-arm64-11) + 240  [0x100d8f19c]
    +                                                                                               !         : | + ! : | + ! : | 15 NILP  (in Emacs-arm64-11) + 36  [0x100d8e4d0]
    +                                                                                               !         : | + ! : | + ! : | + 8 BASE_EQ  (in Emacs-arm64-11) + 20  [0x100d9010c]
    +                                                                                               !         : | + ! : | + ! : | + ! 8 XLI  (in Emacs-arm64-11) + 0  [0x100d925e4]
    +                                                                                               !         : | + ! : | + ! : | + 7 BASE_EQ  (in Emacs-arm64-11) + 32  [0x100d90118]
    +                                                                                               !         : | + ! : | + ! : | +   7 XLI  (in Emacs-arm64-11) + 0  [0x100d925e4]
    +                                                                                               !         : | + ! : | + ! : | 7 NILP  (in Emacs-arm64-11) + 24  [0x100d8e4c4]
    +                                                                                               !         : | + ! : | + ! : |   4 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8e500]
    +                                                                                               !         : | + ! : | + ! : |   ! 4 make_lisp_symbol  (in Emacs-arm64-11) + 0  [0x100d926e4]
    +                                                                                               !         : | + ! : | + ! : |   3 builtin_lisp_symbol  (in Emacs-arm64-11) + 28  [0x100d8e500]
    +                                                                                               !         : | + ! : | + ! : 8 Fnext_single_property_change  (in Emacs-arm64-11) + 228  [0x100d8f190]
    +                                                                                               !         : | + ! : | + ! : | 4 EQ  (in Emacs-arm64-11) + 40  [0x100d8e194]
    +                                                                                               !         : | + ! : | + ! : | + 4 XLI  (in Emacs-arm64-11) + 0  [0x100d925e4]
    +                                                                                               !         : | + ! : | + ! : | 3 EQ  (in Emacs-arm64-11) + 28  [0x100d8e188]
    +                                                                                               !         : | + ! : | + ! : | + 3 XLI  (in Emacs-arm64-11) + 0  [0x100d925e4]
...

(truncated for github comment length)

GNU Emacs 29.4 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build 21G646)) of 2024-08-02
ess-version:  [elpa: 20241127.1620] (loaded from /Users/r2/.emacs.d/elpa/ess-20241127.1620/)

It's not a large matrix. In fact, while this works just fine

`colnames<-`(matrix(1, nr=269, nc=26), LETTERS)

This causes emacs/ess to crawl (or nearly-hang):

`colnames<-`(matrix(NA, nr=269, nc=26), LETTERS)

The presence of column names isn't critical but seems to make it slightly worse (so try without the \colnames<-`` and it should still slow down for you).

On a ubuntu-24.04 box, doing the same thing does produce very-slightly-difference responsiveness (the NA code is very slightly sluggish) but nowhere near as bad as this. I hope the fact that something can be observed in linux helps troubleshoot this, though I never though to mention it before I switched to macos.

Thanks!

@r2evans r2evans changed the title medium-large matrices hang emacs medium-large NA matrices hang emacs Dec 16, 2024
@vspinu
Copy link
Member

vspinu commented Dec 18, 2024

I think we need a general solution for this. Any large text should be elided with an optional incremental expansion. WDYT?

@r2evans
Copy link
Contributor Author

r2evans commented Jan 8, 2025

Not sure what you mean by "optional incremental expansion".

@r2evans
Copy link
Contributor Author

r2evans commented Jan 17, 2025

This is more than just matrices/frames, it also slows down with large vectors.

Is there a way to benchmark this? Right now it's a perception, the best I can do is a video showing me typing 1 rapidly (three times) both normally and after a large NA vector slows it down. The time between keypresses is the same all three times, and the fact that (a) the output from the first 1 comes well after the third is entered, and (b) even echoing me typing them is delayed.

ess-lag.mp4

While the above is in a normal emacs/ess session, I've repeated it (same results) in emacs -q and first running:

(add-to-list 'load-path "~/.emacs.d/elpa/ess-20241127.1620/")
(require 'ess)
(require 'ess-site)

How is it best to "find" (profile?) where the slowdown is occurring?

@r2evans
Copy link
Contributor Author

r2evans commented Feb 4, 2025

At the risk of soundy needing ...

I recognize this is a macos-only thing, and it seems likely few if any of the devs on ESS are using macos. Or if some do use macs, this is likely "just me", reinforced by the fact that nobody else is complaining about this. I'd like to know how to better research this so that I can either find if/where it's happening, or provide better information here.

And please again, I recognize everybody here is doing volunteer coding and I've paid for nothing. I'm deeply appreciative, and would like to find a way to get to the bottom of this.

There are two aspects that I find interesting:

  • with a matrix of NAs, if there are no column names, I don't feel the slowdown, but adding column-names produces the lag;
  • once the NAs are off-screen, it becomes much less noticeable

I've rerun the demo using emacs -q.

ess-slowdown.mp4

With a quick profiler-start (cpu+mem), running the colnames/matrix expression, then profile-stop, I get a quick comparison.

Running with simply matrix(..) (i.e., no or minimal slowdown), I see

Image

Running the colnames/matrix combination that shows the significant slowdown, I get

Image

Comparing them side-by-side

 (no slowdown)          (slowdown)

4,221,679  77%      4,264,692  83% + command-execute                     
  777,677  14%        539,356  10% + inferior-ess-tracebug-output-filter
  372,356   6%        155,438   3% + redisplay_internal (C function)
   54,832   1%        121,472   2% + timer-event-handler
                        3,072   0% + jit-lock--antiblink-post-command
       24   0%             24   0% + eldoc-schedule-timer
        0   0%              0   0%   ...
*Memory-Profiler-Report*

       80  41%            138  45% + command-execute
       27  14%            123  40% + timer-event-handler
       42  21%             28   9% + inferior-ess-tracebug-output-filter
       35  18%             11   3% + ...
        7   3%              2   0% + redisplay_internal (C function)
*CPU-Profiler-Report*

I've repeated both (slowdown and no-slowdown) a few times, and timer-event-handler is almost always 2x in the slowdown side. I don't have reason to think it's a memory issue (I have 64GB of RAM), so I don't thinkn those numbers are as indicative, but I could be wrong.

Besides the built-in profilter-*, are there other tools that any of you use that would give better granularity? Perhaps elisp=benchmarks?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants