emacs para colgar la función jit-lock

emacs para colgar la función jit-lock

La función jit-lock consume demasiada CPU y cuelga mi emacs con frecuencia. ¿Alguien ha encontrado el mismo problema? ¿Cómo solucionar esto?

El sistema operativo es archlinux x64, CPU intel i7 4790, 16 GB de RAM. Solo se ejecuta emacs, excepto los servicios del sistema.

¡Gracias!

El informe del perfilador da esto:

- redisplay_internal (C function)                                2728  90%
 - jit-lock-function                                             2724  89%
  - jit-lock-fontify-now                                         2724  89%
   - jit-lock--run-functions                                     2724  89%
    - run-hook-wrapped                                           2724  89%
     - #<compiled 0x40f2001>                                     2724  89%
      - font-lock-fontify-region                                 2724  89%
       - c-font-lock-fontify-region                              2724  89%
        - font-lock-default-fontify-region                       2716  89%
         - font-lock-fontify-keywords-region                     2712  89%
          - c-font-lock-declarations                             1932  63%
           - c-find-decl-spots                                   1912  63%
            - #<compiled 0x22af545>                              1148  37%
             - c-get-fontification-context                        732  24%
              - c-looking-at-or-maybe-in-bracelist                504  16%
               + c-backward-token-2                               472  15%
              - c-back-over-member-initializers                   108   3%
               + c-back-over-compound-identifier                   56   1%
               + c-parse-state                                     32   1%
                 c-backward-sws                                     8   0%
              + c-back-over-compound-identifier                    68   2%
              + c-backward-token-2                                 16   0%
                c-backward-sws                                      4   0%
             + c-forward-decl-or-cast-1                           240   7%
             + c-forward-label                                     60   1%
             + c-backward-token-2                                  16   0%
             + c-backward-sws                                      12   0%
             + c-font-lock-single-decl                              8   0%
               c-syntactic-re-search-forward                        4   0%
            + c-bs-at-toplevel-p                                  672  22%
            + c-beginning-of-macro                                 28   0%
              c-forward-sws                                         8   0%
              c-backward-token-2                                    4   0%
            c-font-lock-<>-arglists                               304  10%
          + #<compiled 0x22b6359>                                  92   3%
            #<compiled 0x22b6381>                                  68   2%
            #<compiled 0x22b5fbd>                                  32   1%
            #<compiled 0x22b62b9>                                  32   1%
            #<compiled 0x22b625d>                                  28   0%
            #<compiled 0x22b62fd>                                  28   0%
            #<compiled 0x22b631d>                                  28   0%
            #<compiled 0x22b63d5>                                   8   0%
          + c-font-lock-enclosing-decls                             4   0%
            c-font-lock-enum-body                                   4   0%
            #<compiled 0x22b6669>                                   4   0%
           font-lock-fontify-syntactically-region                   4   0%
        + c-before-context-fl-expand-region                         8   0%

Respuesta1

Su señal con el dedo está un poco equivocada: el 89% del tiempo se dedica a jit-lock-functionpero todo este tiempo también se dedica a c-font-lock-fontify-region(llamado indirectamente desde jit-lock-function).

Entonces su problema es con c-font-lock en lugar de con jit-lock.

Informe esto como un error a través de M-x report-emacs-bug. Probablemente querrás dar detalles sobre el contenido del búfer en el que aparece (supongo que es un archivo C++).

Si esto es con un Emacs anterior a 26.3, probablemente valga la pena probarlo con Emacs-26.3 antes de informar el error, ya que el rendimiento del bloqueo de fuentes en modo C++ ha experimentado mejoras periódicas a lo largo de los años.

información relacionada