GNU bug report logs - #31978
26.1.50; "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular structure being printed"

Previous Next

Package: emacs;

Reported by: Tom Tromey <tom <at> tromey.com>

Date: Tue, 26 Jun 2018 14:25:02 UTC

Severity: normal

Merged with 36149

Found in versions 26.1, 26.1.50

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

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 31978 in the body.
You can then email your comments to 31978 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#31978; Package emacs. (Tue, 26 Jun 2018 14:25:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Tom Tromey <tom <at> tromey.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 26 Jun 2018 14:25:02 GMT) Full text and rfc822 format available.

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

From: Tom Tromey <tom <at> tromey.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Tue, 26 Jun 2018 08:23:59 -0600
I am using Gnus in Emacs 26.

When I "s" in the *Group* buffer, I sometimes get this error:

eieio-override-prin1: Apparently circular structure being printed

I got it again today, so I enabled debug-on-error and got this stack
trace.

I can't always reproduce this, but once gnus gets into this state it
seems to be stuck.  Last time, IIRC, I worked around it by removing the
registry and killing Emacs.


Debugger entered--Lisp error: (error "Apparently circular structure being printed")
  prin1(#<hash-table eql 4/100 0x2229a85>)
  eieio-override-prin1(#<hash-table eql 4/100 0x14cafc5>)
  #f(compiled-function (this &optional comment) "Write object THIS out to the current stream.\nThis writes out the vector version of this object.  Complex and recursive\nobject are discouraged from being written.\n  If optional COMMENT is non-nil, include comments when outputting\nthis object." #<bytecode 0x56a7ed>)(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  apply(#f(compiled-function (this &optional comment) "Write object THIS out to the current stream.\nThis writes out the vector version of this object.  Complex and recursive\nobject are discouraged from being written.\n  If optional COMMENT is non-nil, include comments when outputting\nthis object." #<bytecode 0x56a7ed>) (#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT"))
  #f(compiled-function (&rest cnm-args) #<bytecode 0x2229a79>)(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  #f(compiled-function (cl--cnm this &optional comment) "Write persistent object THIS out to the current stream.\nOptional argument COMMENT is a header line comment." #<bytecode 0x151f105>)(#f(compiled-function (&rest cnm-args) #<bytecode 0x2229a79>) #<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  apply(#f(compiled-function (cl--cnm this &optional comment) "Write persistent object THIS out to the current stream.\nOptional argument COMMENT is a header line comment." #<bytecode 0x151f105>) #f(compiled-function (&rest cnm-args) #<bytecode 0x2229a79>) (#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT"))
  #f(compiled-function (&rest args) #<bytecode 0xf219c9>)(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  apply(#f(compiled-function (&rest args) #<bytecode 0xf219c9>) #<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  object-write(#<registry-db registry-db> ";; EIEIO PERSISTENT OBJECT")
  #f(compiled-function (this &optional file) "Save persistent object THIS to disk.\nOptional argument FILE overrides the file name specified in the object\ninstance." #<bytecode 0x151f179>)(#<registry-db registry-db> "~/.gnus.registry.eieio")
  apply(#f(compiled-function (this &optional file) "Save persistent object THIS to disk.\nOptional argument FILE overrides the file name specified in the object\ninstance." #<bytecode 0x151f179>) #<registry-db registry-db> "~/.gnus.registry.eieio")
  eieio-persistent-save(#<registry-db registry-db> "~/.gnus.registry.eieio")
  gnus-registry-save()
  run-hooks(gnus-save-newsrc-hook)
  apply(run-hooks gnus-save-newsrc-hook)
  gnus-run-hooks(gnus-save-newsrc-hook)
  gnus-save-newsrc-file(nil)
  gnus-group-save-newsrc(nil)
  funcall-interactively(gnus-group-save-newsrc nil)
  call-interactively(gnus-group-save-newsrc nil nil)
  command-execute(gnus-group-save-newsrc)






In GNU Emacs 26.1.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
 of 2018-06-25 built on pokyo
Repository revision: 826e8d1f12b014617c8899936730a740a09fefb1
Windowing system distributor 'Fedora Project', version 11.0.11906000
System Description:	Fedora release 28 (Twenty Eight)

Recent messages:
Expiring articles...done
Save the BBDB now? (y or n) y
 
Saving file /home/tromey/DotEmacs/.bbdb...
Wrote /home/tromey/DotEmacs/.bbdb
Saving Gnus registry (918 entries) to ~/.gnus.registry.eieio...
eieio-override-prin1: Apparently circular structure being printed
Quit
C-z C-g is undefined
s runs the command gnus-group-save-newsrc
Quit
Configured using:
 'configure --prefix=/home/tromey/Emacs/install --with-modules'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  diff-auto-refine-mode: t
  gnus-topic-mode: t
  gnus-undo-mode: t
  shell-dirtrack-mode: t
  which-function-mode: t
  erc-services-mode: t
  erc-networks-mode: t
  savehist-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/26.1.50/lisp/play/bubbles

Features:
(shadow add-log emacsbug url-http url url-proxy url-privacy url-history
url-auth url-cookie url-domsuf url-gw url-expand url-methods mailalias
bbdb-sc supercite regi mail-hist nnir flow-fill bbdb-gui bbdb-hooks
bbdb-rmail rmailsum vc-mtn vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs sort gnus-cite smiley shr-color shr svg dom
browse-url mm-archive gnus-async gnus-bcklg qp gnus-ml disp-table
misearch multi-isearch gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus
bbdb-snarf mail-extr bbdb-com network-stream nsm starttls gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache
gnus-registry registry eieio-base gnus-art mm-uu mml2015 mm-view
mml-smime smime dig mailcap gnus-sum gnus-group gnus-undo smtpmail
sendmail gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7
netrc nnoo gnus-spec gnus-int gnus-range message rmc puny rfc822 mml
mml-sec epa derived epg mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr
elec-pair flyspell ispell diminish appt diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs tramp tramp-compat tramp-loaddefs
trampver ucs-normalize shell pcomplete parse-time which-func imenu
autorevert filenotify desktop frameset cus-start cus-load git-link
url-util erc-track erc-notify erc-desktop-notifications erc-match
erc-services erc-networks notifications dbus xml erc-hl-nicks easy-mmode
color erc-button erc-fill erc-stamp wid-edit erc-goodies erc erc-backend
erc-compat format-spec thingatpt pp dired-aux dired-x dired
dired-loaddefs warnings advice vc-dir ewoc vc vc-dispatcher flycheck
cl-extra json map find-func help-mode rx subr-x dash cc-styles cc-align
cc-engine cc-vars cc-defs bbdb cl timezone ange-ftp comint ansi-color
ring server savehist finder-inf bbdb-autoloads lisppaste-autoloads
pydoc-info-autoloads info-look info package easymenu epg-config
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib time-date mule-util 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 menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 minibuffer 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 dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 1316874 39038)
 (symbols 48 104412 2)
 (miscs 40 24587 955)
 (strings 32 344935 31498)
 (string-bytes 1 8232441)
 (vectors 16 122264)
 (vector-slots 8 2433340 238614)
 (floats 8 462 909)
 (intervals 56 1649 596)
 (buffers 992 35))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Tue, 26 Jun 2018 15:35:01 GMT) Full text and rfc822 format available.

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

From: Eric Abrahamsen <eric <at> ericabrahamsen.net>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Tue, 26 Jun 2018 08:31:00 -0700
Tom Tromey <tom <at> tromey.com> writes:

> I am using Gnus in Emacs 26.

Would you mind cherry-picking or otherwise applying the patch in
ffbb4e8d54, and see if that solves the problem? I think it probably
will.

Thanks,
Eric





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Sat, 25 May 2019 09:09:02 GMT) Full text and rfc822 format available.

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

From: Tim Landscheidt <tim <at> tim-landscheidt.de>
To: Eric Abrahamsen <eric <at> ericabrahamsen.net>
Cc: 31978 <at> debbugs.gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Sat, 25 May 2019 09:08:47 +0000
Eric Abrahamsen <eric <at> ericabrahamsen.net> wrote:

>> I am using Gnus in Emacs 26.

> Would you mind cherry-picking or otherwise applying the patch in
> ffbb4e8d54, and see if that solves the problem? I think it probably
> will.

As I ran into this issue today (with Emacs 26.1): To apply
the patch, is it sufficient to redefine
eieio-persistent-validate/fix-slot-value in the running in-
stance, or do I need to do something more?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Sat, 25 May 2019 19:52:01 GMT) Full text and rfc822 format available.

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

From: Eric Abrahamsen <eric <at> ericabrahamsen.net>
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Sat, 25 May 2019 12:50:48 -0700
Tim Landscheidt <tim <at> tim-landscheidt.de> writes:

> Eric Abrahamsen <eric <at> ericabrahamsen.net> wrote:
>
>>> I am using Gnus in Emacs 26.
>
>> Would you mind cherry-picking or otherwise applying the patch in
>> ffbb4e8d54, and see if that solves the problem? I think it probably
>> will.
>
> As I ran into this issue today (with Emacs 26.1): To apply
> the patch, is it sufficient to redefine
> eieio-persistent-validate/fix-slot-value in the running in-
> stance, or do I need to do something more?

That would suffice, but it wouldn't guarantee that the fix was available
next time you start Emacs. For that, you'd want to make sure that the
code was changed in your Emacs codebase, and then run "make" or
otherwise ensure it was compiled in. Depends on how you run Emacs.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Mon, 03 Jun 2019 17:22:01 GMT) Full text and rfc822 format available.

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

From: Tim Landscheidt <tim <at> tim-landscheidt.de>
To: Eric Abrahamsen <eric <at> ericabrahamsen.net>
Cc: 31978 <at> debbugs.gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Mon, 03 Jun 2019 17:21:37 +0000
Eric Abrahamsen <eric <at> ericabrahamsen.net> wrote:

>>>> I am using Gnus in Emacs 26.

>>> Would you mind cherry-picking or otherwise applying the patch in
>>> ffbb4e8d54, and see if that solves the problem? I think it probably
>>> will.

>> As I ran into this issue today (with Emacs 26.1): To apply
>> the patch, is it sufficient to redefine
>> eieio-persistent-validate/fix-slot-value in the running in-
>> stance, or do I need to do something more?

> That would suffice, but it wouldn't guarantee that the fix was available
> next time you start Emacs. For that, you'd want to make sure that the
> code was changed in your Emacs codebase, and then run "make" or
> otherwise ensure it was compiled in. Depends on how you run Emacs.

I redefined eieio-persistent-validate/fix-slot-value as per
ffbb4e8d542df44ced5afd89221b0dfb234d8525 in Emacs 26.1, and
it did not solve this issue, still emitting:

| eieio-override-prin1: Apparently circular structure being printed

(and barring Gnus from exiting).

P. S.: The GNU Bug Tracker does not automatically send re-
       plies to other participants, so you need to manually
       "wide reply".




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Tue, 04 Jun 2019 19:09:01 GMT) Full text and rfc822 format available.

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

From: Eric Abrahamsen <eric <at> ericabrahamsen.net>
To: Tim Landscheidt <tim <at> tim-landscheidt.de>
Cc: 31978 <at> debbugs.gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Tue, 04 Jun 2019 12:08:25 -0700
Tim Landscheidt <tim <at> tim-landscheidt.de> writes:

> Eric Abrahamsen <eric <at> ericabrahamsen.net> wrote:
>
>>>>> I am using Gnus in Emacs 26.
>
>>>> Would you mind cherry-picking or otherwise applying the patch in
>>>> ffbb4e8d54, and see if that solves the problem? I think it probably
>>>> will.
>
>>> As I ran into this issue today (with Emacs 26.1): To apply
>>> the patch, is it sufficient to redefine
>>> eieio-persistent-validate/fix-slot-value in the running in-
>>> stance, or do I need to do something more?
>
>> That would suffice, but it wouldn't guarantee that the fix was available
>> next time you start Emacs. For that, you'd want to make sure that the
>> code was changed in your Emacs codebase, and then run "make" or
>> otherwise ensure it was compiled in. Depends on how you run Emacs.
>
> I redefined eieio-persistent-validate/fix-slot-value as per
> ffbb4e8d542df44ced5afd89221b0dfb234d8525 in Emacs 26.1, and
> it did not solve this issue, still emitting:
>
> | eieio-override-prin1: Apparently circular structure being printed
>
> (and barring Gnus from exiting).

Hmm, more things have been changed in this area since I worked on it --
is there any chance you could switch to 26.2? In particular, commit
5f01af6c8e almost certainly is involved.

> P. S.: The GNU Bug Tracker does not automatically send re-
>        plies to other participants, so you need to manually
>        "wide reply".

Yup, that was just an oversight.




Merged 31978 36149. Request was from Noam Postavsky <npostavs <at> gmail.com> to control <at> debbugs.gnu.org. (Sun, 09 Jun 2019 15:48:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Sat, 22 Jun 2019 13:39:01 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Eric Abrahamsen <eric <at> ericabrahamsen.net>
Cc: 31978 <at> debbugs.gnu.org, Tim Landscheidt <tim <at> tim-landscheidt.de>
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Sat, 22 Jun 2019 15:38:13 +0200
Eric Abrahamsen <eric <at> ericabrahamsen.net> writes:

>> | eieio-override-prin1: Apparently circular structure being printed
>>
>> (and barring Gnus from exiting).
>
> Hmm, more things have been changed in this area since I worked on it --
> is there any chance you could switch to 26.2? In particular, commit
> 5f01af6c8e almost certainly is involved.
>
>> P. S.: The GNU Bug Tracker does not automatically send re-
>>        plies to other participants, so you need to manually
>>        "wide reply".
>
> Yup, that was just an oversight.

Are you still seeing this issue when saving the Gnus registry?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Sun, 23 Jun 2019 18:07:01 GMT) Full text and rfc822 format available.

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

From: Tim Landscheidt <tim <at> tim-landscheidt.de>
To: Eric Abrahamsen <eric <at> ericabrahamsen.net>
Cc: Lars Ingebrigtsen <larsi <at> gnus.org>, 31978 <at> debbugs.gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Sun, 23 Jun 2019 18:06:01 +0000
Eric Abrahamsen <eric <at> ericabrahamsen.net> wrote:

>>>>>> I am using Gnus in Emacs 26.

>>>>> Would you mind cherry-picking or otherwise applying the patch in
>>>>> ffbb4e8d54, and see if that solves the problem? I think it probably
>>>>> will.

>>>> As I ran into this issue today (with Emacs 26.1): To apply
>>>> the patch, is it sufficient to redefine
>>>> eieio-persistent-validate/fix-slot-value in the running in-
>>>> stance, or do I need to do something more?

>>> That would suffice, but it wouldn't guarantee that the fix was available
>>> next time you start Emacs. For that, you'd want to make sure that the
>>> code was changed in your Emacs codebase, and then run "make" or
>>> otherwise ensure it was compiled in. Depends on how you run Emacs.

>> I redefined eieio-persistent-validate/fix-slot-value as per
>> ffbb4e8d542df44ced5afd89221b0dfb234d8525 in Emacs 26.1, and
>> it did not solve this issue, still emitting:

>> | eieio-override-prin1: Apparently circular structure being printed

>> (and barring Gnus from exiting).

> Hmm, more things have been changed in this area since I worked on it --
> is there any chance you could switch to 26.2? In particular, commit
> 5f01af6c8e almost certainly is involved.

> […]

I'm using my distribution-supplied Emacs and I don't want to
change anything major for my real-life setup (prior to my
distribution forcing me).

But the error made me think about why I had enabled the re-
gistry in the first place, and I didn't come up with a good
reason, so I disabled it and am no longer directly affected
by this bug (and have a few GBs of memory more, and Gnus
starts and quits in seconds instead of minutes :-)).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#31978; Package emacs. (Sun, 23 Jun 2019 18:15:02 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Tim Landscheidt <tim <at> tim-landscheidt.de>
Cc: Eric Abrahamsen <eric <at> ericabrahamsen.net>, 31978 <at> debbugs.gnu.org
Subject: Re: bug#31978: 26.1.50;
 "s" in gnus *Group* error: "eieio-override-prin1: Apparently circular
 structure being printed"
Date: Sun, 23 Jun 2019 20:14:17 +0200
Tim Landscheidt <tim <at> tim-landscheidt.de> writes:

> But the error made me think about why I had enabled the re-
> gistry in the first place, and I didn't come up with a good
> reason, so I disabled it and am no longer directly affected
> by this bug (and have a few GBs of memory more, and Gnus
> starts and quits in seconds instead of minutes :-)).

:-/

OK, I don't think we'll have more progress on this report, so I'm
closing it.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug closed, send any further explanations to 31978 <at> debbugs.gnu.org and Tom Tromey <tom <at> tromey.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 23 Jun 2019 18:15:03 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. (Mon, 22 Jul 2019 11:24:09 GMT) Full text and rfc822 format available.

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

Previous Next


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