GNU bug report logs - #38569
27.0.50; Certain emoji crashes with "X protocol error: BadLength"

Previous Next

Package: emacs;

Reported by: Robert Cochran <robert-emacs <at> cochranmail.com>

Date: Wed, 11 Dec 2019 23:42:01 UTC

Severity: normal

Merged with 38788

Found in version 27.0.50

Fixed in version 27.1

Done: Robert Pluim <rpluim <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 38569 in the body.
You can then email your comments to 38569 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Wed, 11 Dec 2019 23:42:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Robert Cochran <robert-emacs <at> cochranmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 11 Dec 2019 23:42:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Robert Cochran <robert-emacs <at> cochranmail.com>
To: bug-gnu-emacs <at> gnu.org
Cc: Shelvacu <shelvacu <at> gmail.com>
Subject: 27.0.50; Certain emoji crashes with "X protocol error: BadLength"
Date: Wed, 11 Dec 2019 15:41:30 -0800
[Message part 1 (text/plain, inline)]
-----

Open the attached file with a GUI frame. The Emacs process immediately
crashes with

X protocol error: BadLength (poly request too large or internal Xlib
length error) on protocol request 138

This happens to be a development version, but I was initially made aware
of this by a friend (CC'd) who uses his distro's stock Emacs package, so this
has been an issue for some time.

This probably isn't a duplicate of 37895 / 37786 , as the fix listed as
committed - "Fixed by adding "Noto Color Emoji" to face-ignored-fonts
instead" - is definitely applied here (I can see it in the list when I
do "C-h v face-ignored-fonts RET"), so there's something else at play in
this situation.

I tried to run Emacs in GDB, but I couldn't get 'bt full' or
'xbacktrace' to spit out anything that looked remotely useful. I've
probably just managed to mess it up. If it's needed, I'll try again for
more useful output.

-----


In GNU Emacs 27.0.50 (build 1, x86_64-redhat-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2019-12-11 built on SoraLaptop
Repository revision: bad2532f664e11e5b32c1194f2274ba2d1f0116b
Repository branch: master
Windowing system distributor 'Fedora Project', version 11.0.12006000
System Description: Fedora 31 (Workstation Edition)

Recent messages:
Loading gnus...done
Loading paren...done
Loading /home/Sora/.emacs.d/customize.el (source)...done
Packages that are not available: 3 (the rest is already installed), maybe you need to ‘M-x package-refresh-contents’
Loading /home/Sora/quicklisp/slime-helper.el (source)...done
Starting Emacs daemon.
Package cl is deprecated
Package tls is deprecated
When done with this frame, type C-x 5 0
Making completion list...

Configured using:
 'configure --prefix=/home/Sora/local --with-dbus --with-gif --with-jpeg
 --with-png --with-tiff --with-xft --with-xpm --with-x-toolkit=athena
 --with-gpm=no --with-modules --with-gnutls --with-gconf
 --with-imagemagick --with-rsvg --with-libotf --with-m17n_flt
 build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu
 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Werror=format-security
 -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
 --param=ssp-buffer-size=4 -grecord-gcc-switches
 -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
 LDFLAGS=-Wl,-z,relro
 PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GCONF GSETTINGS
GLIB NOTIFY INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS
LIBSYSTEMD PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  global-auto-complete-mode: t
  auto-complete-mode: t
  paredit-mode: t
  whitespace-mode: t
  show-paren-mode: t
  display-time-mode: t
  display-battery-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  tab-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/Sora/local/share/emacs/27.0.50/lisp/misc hides /home/Sora/.emacs.d/local-lisp/misc

Features:
(shadow sort mail-extr gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime
smime dig emacsbug sendmail server slime-fancy slime-trace-dialog
slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree slime-scratch slime-presentations bridge
slime-macrostep macrostep slime-mdot-fu slime-enclosing-context
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl elp slime-parse slime
flymake-proc flymake warnings lisp-mnt gud apropos compile etags
fileloop xref project arc-mode archive-mode hyperspec thingatpt cl
slime-autoloads org-element avl-tree generator ol-eww ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnir gnus-sum url url-proxy url-privacy
url-expand url-methods url-history mailcap shr url-cookie url-domsuf
url-util svg xml dom gnus-group gnus-undo gnus-start gnus-cloud nnimap
nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int
gnus-range message rmc rfc822 mml mml-sec epa derived epg epg-config
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader gnus-win ol-docview doc-view jka-compr image-mode exif dired
dired-loaddefs ol-bibtex bibtex ol-bbdb ol-w3m org ob ob-tangle ob-ref
ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint
org-pcomplete pcomplete comint ansi-color org-list org-faces
org-entities noutline outline easy-mmode org-version ob-emacs-lisp
ob-core ob-eval org-table ol org-keys org-compat advice org-macs
org-loaddefs format-spec cal-menu calendar cal-loaddefs firestorm-notes
ace-window avy ring auto-complete-config auto-complete popup
paredit-menu paredit edmacro kmacro sora-misc eval-and-point-to
interactify-count-lines lisp-family maybe-gnu-c cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ispell-email ispell rotate-split ert pp ewoc debug backtrace find-func
tls gnutls puny whitespace deeper-blue-theme cl-extra help-mode paren
gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search time-date mail-utils mm-util mail-prsvr wid-edit
time battery cus-start cus-load custom-helpers sora-detect tex-site info
package easymenu browse-url url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 331138 15778)
 (symbols 48 31534 1)
 (strings 32 100724 3715)
 (string-bytes 1 3418300)
 (vectors 16 41168)
 (vector-slots 8 488792 24278)
 (floats 8 317 26)
 (intervals 56 470 0)
 (buffers 1000 15))

Thanks,
-- 
~Robert Cochran

[allowed-emojis-crashes-emacs_472a99ce5e.txt (text/plain, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Thu, 12 Dec 2019 08:51:02 GMT) Full text and rfc822 format available.

Message #8 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Robert Cochran <robert-emacs <at> cochranmail.com>
Cc: Shelvacu <shelvacu <at> gmail.com>, 38569 <at> debbugs.gnu.org
Subject: Re: bug#38569: 27.0.50; Certain emoji crashes with "X protocol
 error: BadLength"
Date: Thu, 12 Dec 2019 09:50:08 +0100
>>>>> On Wed, 11 Dec 2019 15:41:30 -0800, Robert Cochran <robert-emacs <at> cochranmail.com> said:

    Robert> -----

    Robert> Open the attached file with a GUI frame. The Emacs process immediately
    Robert> crashes with

    Robert> X protocol error: BadLength (poly request too large or internal Xlib
    Robert> length error) on protocol request 138

<sigh> Luckily all this goes away when you build --with-cairo, which
should become the default in the next couple of years.

    Robert> This happens to be a development version, but I was initially made aware
    Robert> of this by a friend (CC'd) who uses his distro's stock Emacs package, so this
    Robert> has been an issue for some time.

    Robert> This probably isn't a duplicate of 37895 / 37786 , as the fix listed as
    Robert> committed - "Fixed by adding "Noto Color Emoji" to face-ignored-fonts
    Robert> instead" - is definitely applied here (I can see it in the list when I
    Robert> do "C-h v face-ignored-fonts RET"), so there's something else at play in
    Robert> this situation.

I canʼt reproduce this on my Fedora31 installation. Probably I donʼt
have the same fonts installed as you.

    Robert> I tried to run Emacs in GDB, but I couldn't get 'bt full' or
    Robert> 'xbacktrace' to spit out anything that looked remotely useful. I've
    Robert> probably just managed to mess it up. If it's needed, I'll try again for
    Robert> more useful output.

In this kind of situation it helps to run emacs in synchronous
mode. From etc/DEBUG:

    For X protocol errors related to displaying unusual characters or to
    font-related customizations, try invoking Emacs like this:

      XFT_DEBUG=16 emacs -xrm "emacs.synchronous: true"

That XFT_DEBUG should end up telling us what the last font was that Emacs
tried, which is usually the culprit.

Robert




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Thu, 12 Dec 2019 21:36:01 GMT) Full text and rfc822 format available.

Message #11 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Robert Cochran <robert <at> cochranmail.com>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: Shelvacu <shelvacu <at> gmail.com>, 38569 <at> debbugs.gnu.org,
 Robert Cochran <robert-emacs <at> cochranmail.com>
Subject: Re: bug#38569: 27.0.50; Certain emoji crashes with "X protocol
 error: BadLength"
Date: Thu, 12 Dec 2019 13:34:46 -0800
Robert Pluim <rpluim <at> gmail.com> writes:

> <sigh> Luckily all this goes away when you build --with-cairo, which
> should become the default in the next couple of years.

I'm running an Emacs regularly updated from master, so I might as well
start doing this, if only to help in catching issues in other
places. Thanks for the pointer.

>     Robert> This happens to be a development version, but I was initially made aware
>     Robert> of this by a friend (CC'd) who uses his distro's stock Emacs package, so this
>     Robert> has been an issue for some time.
>
>     Robert> This probably isn't a duplicate of 37895 / 37786 , as the fix listed as
>     Robert> committed - "Fixed by adding "Noto Color Emoji" to face-ignored-fonts
>     Robert> instead" - is definitely applied here (I can see it in the list when I
>     Robert> do "C-h v face-ignored-fonts RET"), so there's something else at play in
>     Robert> this situation.
>
> I canʼt reproduce this on my Fedora31 installation. Probably I donʼt
> have the same fonts installed as you.
>
>     Robert> I tried to run Emacs in GDB, but I couldn't get 'bt full' or
>     Robert> 'xbacktrace' to spit out anything that looked remotely useful. I've
>     Robert> probably just managed to mess it up. If it's needed, I'll try again for
>     Robert> more useful output.
>
> In this kind of situation it helps to run emacs in synchronous
> mode. From etc/DEBUG:
>
>     For X protocol errors related to displaying unusual characters or to
>     font-related customizations, try invoking Emacs like this:
>
>       XFT_DEBUG=16 emacs -xrm "emacs.synchronous: true"
>
> That XFT_DEBUG should end up telling us what the last font was that Emacs
> tried, which is usually the culprit.
>

So I did that, and indeed, I can see the culprit font on my system. I
have another color emoji font installed on my system, "Emoji One"
according to the Gnome font viewer. It lives in
'/usr/share/fonts/eosrei-emojione/emojione-android.ttf', and is provided
by the eosrei-emojione-fonts package on my system. Strangely, repoquery
doesn't show that any of my installed packages depend on it, so I have
no clue when or why it got pulled in.

The easier thing is to add another exception to face-ignored-fonts, but
at this point it'd be a better idea to deal with it at the font renderer
level. IMO it's not scalable for the solution to be "ok, also add this
font to the exception list", especially as frequently as Emacs has
releases.

Also, Shelvacu's problem was solved by manually adding Noto Color Emoji
to the face-ignored-fonts list. IIRC his Emacs is 26.x?

Thanks for the prompt reply on this, btw.

Cheers,
-- 
~Robert Cochran




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Fri, 13 Dec 2019 06:51:01 GMT) Full text and rfc822 format available.

Message #14 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Robert Cochran <robert <at> cochranmail.com>
Cc: shelvacu <at> gmail.com, rpluim <at> gmail.com, robert-emacs <at> cochranmail.com,
 38569 <at> debbugs.gnu.org
Subject: Re: bug#38569: 27.0.50;
 Certain emoji crashes with "X protocol error: BadLength"
Date: Fri, 13 Dec 2019 08:50:04 +0200
> From: Robert Cochran <robert <at> cochranmail.com>
> Date: Thu, 12 Dec 2019 13:34:46 -0800
> Cc: Shelvacu <shelvacu <at> gmail.com>, 38569 <at> debbugs.gnu.org,
>  Robert Cochran <robert-emacs <at> cochranmail.com>
> 
> The easier thing is to add another exception to face-ignored-fonts, but
> at this point it'd be a better idea to deal with it at the font renderer
> level. IMO it's not scalable for the solution to be "ok, also add this
> font to the exception list", especially as frequently as Emacs has
> releases.

The problem is that AFAIR the "font renderer" that is to blame in this
case is XFT, and it doesn't seem to be actively maintained lately.
(Robert Pluim will correct me if I'm wrong.)  That's why we are using
the face-ignored-fonts workaround.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Fri, 13 Dec 2019 09:02:01 GMT) Full text and rfc822 format available.

Message #17 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Robert Cochran <robert <at> cochranmail.com>, shelvacu <at> gmail.com,
 38569 <at> debbugs.gnu.org, robert-emacs <at> cochranmail.com
Subject: Re: bug#38569: 27.0.50; Certain emoji crashes with "X protocol
 error: BadLength"
Date: Fri, 13 Dec 2019 10:01:16 +0100
>>>>> On Fri, 13 Dec 2019 08:50:04 +0200, Eli Zaretskii <eliz <at> gnu.org> said:

    >> From: Robert Cochran <robert <at> cochranmail.com>
    >> Date: Thu, 12 Dec 2019 13:34:46 -0800
    >> Cc: Shelvacu <shelvacu <at> gmail.com>, 38569 <at> debbugs.gnu.org,
    >> Robert Cochran <robert-emacs <at> cochranmail.com>
    >> 
    >> The easier thing is to add another exception to face-ignored-fonts, but
    >> at this point it'd be a better idea to deal with it at the font renderer
    >> level. IMO it's not scalable for the solution to be "ok, also add this
    >> font to the exception list", especially as frequently as Emacs has
    >> releases.

    Eli> The problem is that AFAIR the "font renderer" that is to blame in this
    Eli> case is XFT, and it doesn't seem to be actively maintained lately.
    Eli> (Robert Pluim will correct me if I'm wrong.)  That's why we are using
    Eli> the face-ignored-fonts workaround.

Thatʼs correct. The real solution is 'stop using XFT', but I donʼt
think we can require cairo just yet, much as Iʼd like to do so.

Eli, we could install my patch to filter out all colour fonts (see
<https://lists.gnu.org/archive/html/bug-gnu-emacs/2019-11/msg00409.html>),
that should reduce the amount of whack-a-mole required.

Robert




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Fri, 13 Dec 2019 09:16:01 GMT) Full text and rfc822 format available.

Message #20 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: robert <at> cochranmail.com, shelvacu <at> gmail.com, 38569 <at> debbugs.gnu.org,
 robert-emacs <at> cochranmail.com
Subject: Re: bug#38569: 27.0.50; Certain emoji crashes with "X protocol
 error: BadLength"
Date: Fri, 13 Dec 2019 11:14:51 +0200
> From: Robert Pluim <rpluim <at> gmail.com>
> Cc: Robert Cochran <robert <at> cochranmail.com>,  shelvacu <at> gmail.com,
>   robert-emacs <at> cochranmail.com,  38569 <at> debbugs.gnu.org
> Date: Fri, 13 Dec 2019 10:01:16 +0100
> 
>     Eli> The problem is that AFAIR the "font renderer" that is to blame in this
>     Eli> case is XFT, and it doesn't seem to be actively maintained lately.
>     Eli> (Robert Pluim will correct me if I'm wrong.)  That's why we are using
>     Eli> the face-ignored-fonts workaround.
> 
> Thatʼs correct. The real solution is 'stop using XFT', but I donʼt
> think we can require cairo just yet, much as Iʼd like to do so.
> 
> Eli, we could install my patch to filter out all colour fonts (see
> <https://lists.gnu.org/archive/html/bug-gnu-emacs/2019-11/msg00409.html>),
> that should reduce the amount of whack-a-mole required.

I guess that's okay to install, given the problems, thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Fri, 13 Dec 2019 09:21:02 GMT) Full text and rfc822 format available.

Message #23 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: rpluim <at> gmail.com
Cc: robert <at> cochranmail.com, shelvacu <at> gmail.com, 38569 <at> debbugs.gnu.org,
 robert-emacs <at> cochranmail.com
Subject: Re: bug#38569: 27.0.50;
 Certain emoji crashes with "X protocol error: BadLength"
Date: Fri, 13 Dec 2019 11:20:12 +0200
> Date: Fri, 13 Dec 2019 11:14:51 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: robert <at> cochranmail.com, shelvacu <at> gmail.com, 38569 <at> debbugs.gnu.org,
>  robert-emacs <at> cochranmail.com
> 
> > Eli, we could install my patch to filter out all colour fonts (see
> > <https://lists.gnu.org/archive/html/bug-gnu-emacs/2019-11/msg00409.html>),
> > that should reduce the amount of whack-a-mole required.
> 
> I guess that's okay to install, given the problems, thanks.

Perhaps also add something to NEWS, to the effect that
xft-ignore-color-fonts now ignores more color fonts, and if the user
wants to set that to nil, they might need to add certain emoji fonts
to face-ignored-fonts in order to prevent crashes.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#38569; Package emacs. (Fri, 13 Dec 2019 09:44:01 GMT) Full text and rfc822 format available.

Message #26 received at 38569 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: robert <at> cochranmail.com, shelvacu <at> gmail.com, 38569 <at> debbugs.gnu.org,
 robert-emacs <at> cochranmail.com
Subject: Re: bug#38569: 27.0.50; Certain emoji crashes with "X protocol
 error: BadLength"
Date: Fri, 13 Dec 2019 10:43:22 +0100
>>>>> On Fri, 13 Dec 2019 11:20:12 +0200, Eli Zaretskii <eliz <at> gnu.org> said:

    Eli> Perhaps also add something to NEWS, to the effect that
    Eli> xft-ignore-color-fonts now ignores more color fonts, and if the user
    Eli> wants to set that to nil, they might need to add certain emoji fonts
    Eli> to face-ignored-fonts in order to prevent crashes.

I thought we didnʼt mention bug fixes in NEWS? :-)

Iʼll cook something up this weekend.

Robert




Merged 38569 38788. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Thu, 02 Jan 2020 00:12:02 GMT) Full text and rfc822 format available.

bug marked as fixed in version 27.1, send any further explanations to 38569 <at> debbugs.gnu.org and Robert Cochran <robert-emacs <at> cochranmail.com> Request was from Robert Pluim <rpluim <at> gmail.com> to control <at> debbugs.gnu.org. (Mon, 06 Jan 2020 15:15:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 04 Feb 2020 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 54 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.