diff options
Diffstat (limited to 'etc/PROBLEMS')
-rw-r--r-- | etc/PROBLEMS | 106 |
1 files changed, 77 insertions, 29 deletions
diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 49dada970bb..bc814169b79 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -718,6 +718,20 @@ the following variables: tex-font-script-display (how much to lower/raise); tex-suscript-height-ratio (how much smaller than normal); tex-suscript-height-minimum (minimum height). +** Screen refresh is slow when there are special characters for which no suitable font is available + +If the display is too slow in refreshing when you scroll to a new +region, or when you edit the buffer, it might be due to the fact that +some characters cannot be displayed in the default font, and Emacs is +spending too much time in looking for a suitable font to display them. + +You can suspect this if you have several characters that are displayed +as small rectangles containing a hexadecimal code inside. + +The solution is to install the appropriate fonts on your machine. For +instance if you are editing a text with a lot of math symbols, then +installing a font like 'Symbola' should solve this problem. + * Internationalization problems ** M-{ does not work on a Spanish PC keyboard. @@ -909,6 +923,21 @@ into Meta. This is because of the great importance of Meta in Emacs. ** Window-manager and toolkit-related problems +*** Emacs built with GTK+ toolkit produces corrupted display on HiDPI screen + +This can happen if you set GDK_SCALE=2 in the environment or in your +'.xinitrc' file. (This setting is usually accompanied by +GDK_DPI_SCALE=0.5.) Emacs can not support these settings correctly, +as it doesn't use GTK+ exclusively. The result is that sometimes +widgets like the scroll bar are displayed incorrectly, and frames +could be displayed "cropped" to only part of the stuff that should be +displayed. + +The workaround is to explicitly disable these settings when invoking +Emacs, for example (from a Posix shell prompt): + + $ GDK_SCALE=1 GDK_DPI_SCALE=1 emacs + *** Metacity: Resizing Emacs or ALT-Tab causes X to be unresponsive. This happens sometimes when using Metacity. Resizing Emacs or ALT-Tab:bing @@ -2561,51 +2590,70 @@ See <URL:http://debbugs.gnu.org/327>, <URL:http://debbugs.gnu.org/821>. ** Dumping -*** Segfault during 'make bootstrap' under the Linux kernel. +*** Segfault during 'make' -In Red Hat Linux kernels, "Exec-shield" functionality is enabled by -default, which creates a different memory layout that can break the -emacs dumper. Emacs tries to handle this at build time, but if this -fails, the following instructions may be useful. +If Emacs segfaults when 'make' executes one of these commands: -Exec-shield is enabled on your system if + LC_ALL=C ./temacs -batch -l loadup bootstrap + LC_ALL=C ./temacs -batch -l loadup dump - cat /proc/sys/kernel/exec-shield +the problem may be due to inadequate workarounds for address space +layout randomization (ASLR), an operating system feature that +randomizes the virtual address space of a process. ASLR is commonly +enabled in Linux and NetBSD kernels, and is intended to deter exploits +of pointer-related bugs in applications. If ASLR is enabled, the +command: -prints a value other than 0. (Please read your system documentation -for more details on Exec-shield and associated commands.) + cat /proc/sys/kernel/randomize_va_space # GNU/Linux + sysctl security.pax.aslr.global # NetBSD -Additionally, Linux kernel versions since 2.6.12 randomize the virtual -address space of a process by default. If this feature is enabled on -your system, then +outputs a nonzero value. - cat /proc/sys/kernel/randomize_va_space +These segfaults should not occur on most modern systems, because the +Emacs build procedure uses the command 'setfattr' or 'paxctl' to mark +the Emacs executable as requiring non-randomized address space, and +Emacs uses the 'personality' system call to disable address space +randomization when dumping. However, older kernels may not support +'setfattr', 'paxctl', or 'personality', and newer Linux kernels have a +secure computing mode (seccomp) that can be configured to disable the +'personality' call. -prints a value other than 0. +It may be possible to work around the 'personality' problem in a newer +Linux kernel by configuring seccomp to allow the 'personality' call. +For example, if you are building Emacs under Docker, you can run the +Docker container with a security profile that allows 'personality' by +using Docker's --security-opt option with an appropriate profile; see +<https://docs.docker.com/engine/security/seccomp/>. -When these features are enabled, building Emacs may segfault during -the execution of this command: +To work around the ASLR problem in either an older or a newer kernel, +you can temporarily disable the feature while building Emacs. On +GNU/Linux you can do so using the following command (as root). - ./temacs --batch --load loadup [dump|bootstrap] + echo 0 > /proc/sys/kernel/randomize_va_space -To work around this problem, you can temporarily disable these -features while building Emacs. You can do so using the following -commands (as root). Remember to re-enable them when you are done, -by echoing the original values back to the files. +You can re-enable the feature when you are done, by echoing the +original value back to the file. NetBSD uses a different command, +e.g., 'sysctl -w security.pax.aslr.global=0'. - echo 0 > /proc/sys/kernel/exec-shield - echo 0 > /proc/sys/kernel/randomize_va_space +Alternatively, you can try using the 'setarch' command when building +temacs like this, where -R disables address space randomization: -Or, on x86, you can try using the 'setarch' command when running -temacs, like this: + setarch $(uname -m) -R make - setarch i386 -R ./temacs --batch --load loadup [dump|bootstrap] +ASLR is not the only problem that can break Emacs dumping. Another +issue is that in Red Hat Linux kernels, Exec-shield is enabled by +default, and this creates a different memory layout. Emacs should +handle this at build time, but if this fails the following +instructions may be useful. Exec-shield is enabled on your system if -or + cat /proc/sys/kernel/exec-shield + +prints a nonzero value. You can temporarily disable it as follows: - setarch i386 -R make + echo 0 > /proc/sys/kernel/exec-shield -(The -R option disables address space randomization.) +As with randomize_va_space, you can re-enable Exec-shield when you are +done, by echoing the original value back to the file. *** temacs prints "Pure Lisp storage exhausted". |