unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
@ 2008-09-07 11:36 Ian Miller
  0 siblings, 0 replies; 12+ messages in thread
From: Ian Miller @ 2008-09-07 11:36 UTC (permalink / raw)
  To: emacs-pretest-bug



Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the emacs-pretest-bug@gnu.org
mailing list.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:

Whenever I select "File->New Frame" (C-x 5 2) a new frame does not
appear and I receive the message "Variable binding depth exceeds
max-specpdl-size". 

This seems to be caused by any use of custom-set-faces in the
.emacs file. When I remove the custom-set-faces code from .emacs, the
bug does not occur. 

Example custom-set-faces in .emacs that causes the bug:

     (custom-set-faces
      ;; custom-set-faces was added by Custom.
      ;; If you edit it by hand, you could mess it up, so be careful.
      ;; Your init file should contain only one such instance.
      ;; If there is more than one, they won't work right.
      '(default ((t (:stipple nil :background "DarkSlateGray"
     :foreground "wheat" :inverse-video nil :box nil :strike-through
     nil :overline nil :underline nil :slant normal :weight normal
     :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))))

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
    `bt full' and `xbacktrace'.
If you would like to further debug the crash, please read the file
/usr/share/emacs/23.0.60/etc/DEBUG for instructions.


In GNU Emacs 23.0.60.1 (x86_64-redhat-linux-gnu, GTK+ Version 2.12.11)
 of 2008-08-01 on x86-1
Windowing system distributor `The X.Org Foundation', version
 11.0.10499905
configured using `configure  '--build=x86_64-redhat-linux-gnu'
 '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu'
 '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr'
 '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc'
 '--datadir=/usr/share' '--includedir=/usr/include'
 '--libdir=/usr/lib64' '--libexecdir=/usr/libexec'
 '--localstatedir=/var' '--sharedstatedir=/usr/com'
 '--mandir=/usr/share/man' '--infodir=/usr/share/info'
 'build_alias=x86_64-redhat-linux-gnu'
 'host_alias=x86_64-redhat-linux-gnu'
 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-DMAIL_USE_LOCKF -O2
 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
 --param=ssp-buffer-size=4 -m64 -mtune=generic''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_GB.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  show-paren-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <menu-bar> <file> 
<make-frame> M-x r e p o <tab> r <tab> <return>

Recent messages:
Loading /usr/share/emacs/site-lisp/site-start.d/igrep-init.el
(source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/muse-init.el
(source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/php-mode-init.el
(source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/po-mode-init.el
(source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/rpm-spec-mode-init.el
(source)...done
Loading gnus...done
Loading paren...done
For information about GNU Emacs and the GNU system, type C-h C-a.
display-color-cells: Variable binding depth exceeds max-specpdl-size
Making completion list...






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
@ 2008-09-07 14:23 martin rudalics
  2008-09-07 16:56 ` Ian Miller
  0 siblings, 1 reply; 12+ messages in thread
From: martin rudalics @ 2008-09-07 14:23 UTC (permalink / raw)
  To: 911; +Cc: Ian Miller

 > Example custom-set-faces in .emacs that causes the bug:
 >
 >      (custom-set-faces
 >       ;; custom-set-faces was added by Custom.
 >       ;; If you edit it by hand, you could mess it up, so be careful.
 >       ;; Your init file should contain only one such instance.
 >       ;; If there is more than one, they won't work right.
 >       '(default ((t (:stipple nil :background "DarkSlateGray"
 >      :foreground "wheat" :inverse-video nil :box nil :strike-through
 >      nil :overline nil :underline nil :slant normal :weight normal
 >      :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))))

Can you reproduce the bug with an .emacs that contains just this form
and nothing else?

 > display-color-cells: Variable binding depth exceeds max-specpdl-size

Does this occur in `x-display-color-cells'?

martin







^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-07 14:23 bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size) martin rudalics
@ 2008-09-07 16:56 ` Ian Miller
  2008-09-07 18:47   ` martin rudalics
  0 siblings, 1 reply; 12+ messages in thread
From: Ian Miller @ 2008-09-07 16:56 UTC (permalink / raw)
  To: martin rudalics; +Cc: 911

On Sun, Sep 07, 2008 at 04:23:42PM +0200, martin rudalics wrote:
> > Example custom-set-faces in .emacs that causes the bug:
> >
> >      (custom-set-faces
> >       ;; custom-set-faces was added by Custom.
> >       ;; If you edit it by hand, you could mess it up, so be careful.
> >       ;; Your init file should contain only one such instance.
> >       ;; If there is more than one, they won't work right.
> >       '(default ((t (:stipple nil :background "DarkSlateGray"
> >      :foreground "wheat" :inverse-video nil :box nil :strike-through
> >      nil :overline nil :underline nil :slant normal :weight normal
> >      :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))))
>
> Can you reproduce the bug with an .emacs that contains just this form
> and nothing else?

Yes. The bug is still present even when .emacs consists of only the above.

> > display-color-cells: Variable binding depth exceeds max-specpdl-size
>
> Does this occur in `x-display-color-cells'?

I'm not quite sure what you mean by this... but I can evaluate
(x-display-color-cells) in the scratch buffer without any apparent error?

  (x-display-color-cells)
  1677721







^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-07 16:56 ` Ian Miller
@ 2008-09-07 18:47   ` martin rudalics
  2008-09-07 23:42     ` Ian Miller
  0 siblings, 1 reply; 12+ messages in thread
From: martin rudalics @ 2008-09-07 18:47 UTC (permalink / raw)
  To: Ian Miller; +Cc: 911

 >> Can you reproduce the bug with an .emacs that contains just this form
 >> and nothing else?
 >
 > Yes. The bug is still present even when .emacs consists of only the above.

And it happens when you evaluate that form in *scratch*?  I'm asking
because I can't reproduce it here.  Maybe you should also try with a
more recent checkout.

 > I'm not quite sure what you mean by this... but I can evaluate
 > (x-display-color-cells) in the scratch buffer without any apparent error?
 >
 >   (x-display-color-cells)
 >   1677721

I wondered what precisely in `display-color-cells' could trigger the
Variable binding depth exceeds max-specpdl-size.  Can you debug
`display-color-cells'?

martin






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-07 18:47   ` martin rudalics
@ 2008-09-07 23:42     ` Ian Miller
  2008-09-08 13:29       ` martin rudalics
  0 siblings, 1 reply; 12+ messages in thread
From: Ian Miller @ 2008-09-07 23:42 UTC (permalink / raw)
  To: martin rudalics; +Cc: 911

On Sun, Sep 07, 2008 at 08:47:40PM +0200, martin rudalics wrote:
>
> And it happens when you evaluate that form in *scratch*?  I'm asking
> because I can't reproduce it here.  Maybe you should also try with a
> more recent checkout.

If I delete .emacs, and then evaluate the form in *scratch* then the
same symptoms occur. 

If however, I first create a new frame, and then evaluate the form in
that new frame, then the symptoms only occur in the frame in which I
evaluated the form but I am able to create new frames (with the
new font colours) from every other frame, including the original. 

I have tried this with the latest sources from CVS and get the same
results. 

> I wondered what precisely in `display-color-cells' could trigger the
> Variable binding depth exceeds max-specpdl-size.  Can you debug
> `display-color-cells'?

This is what I get if I toggle-debug-on-error 
(I hope this is useful?):

Debugger entered--Lisp error: (error "Variable binding depth exceeds max-specpdl-size")
  framep-on-display(#<frame emacs@baso 0xed2800>)
  display-color-cells(#<frame emacs@baso 0xed2800>)
  face-spec-set-match-display(((min-colors 88) (class color)) #<frame emacs@baso 0xed2800>)
  face-spec-choose((((... ...) (:foreground "white" :background "blue1")) ((...) (:foreground "white" :background "blue")) (t (:slant italic))) #<frame emacs@baso 0xed2800>)
  face-spec-match-p(custom-themed (((... ...) (:foreground "white" :background "blue1")) ((...) (:foreground "white" :background "blue")) (t (:slant italic))) #<frame emacs@baso 0xed2800>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
  set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
  face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
  face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
  frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
  x-create-frame-with-faces(nil)
  make-frame()
  make-frame-command()
  call-interactively(make-frame-command nil nil)






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-07 23:42     ` Ian Miller
@ 2008-09-08 13:29       ` martin rudalics
  2008-09-14 13:50         ` martin rudalics
  0 siblings, 1 reply; 12+ messages in thread
From: martin rudalics @ 2008-09-08 13:29 UTC (permalink / raw)
  To: Ian Miller; +Cc: 911

 > This is what I get if I toggle-debug-on-error
 > (I hope this is useful?):
 >
 > Debugger entered--Lisp error: (error "Variable binding depth exceeds max-specpdl-size")
 >   framep-on-display(#<frame emacs@baso 0xed2800>)
 >   display-color-cells(#<frame emacs@baso 0xed2800>)
 >   face-spec-set-match-display(((min-colors 88) (class color)) #<frame emacs@baso 0xed2800>)
 >   face-spec-choose((((... ...) (:foreground "white" :background "blue1")) ((...) (:foreground "white" :background "blue")) (t (:slant italic))) #<frame emacs@baso 0xed2800>)
 >   face-spec-match-p(custom-themed (((... ...) (:foreground "white" :background "blue1")) ((...) (:foreground "white" :background "blue")) (t (:slant italic))) #<frame emacs@baso 0xed2800>)
 >   frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
 >   internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
 >   set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
 >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
 >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
 >   frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
 >   internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
 >   set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
 >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
 >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
 >   frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
[...]
 >   internal-set-lisp-face-attribute(default :background "#ffffff" #<frame emacs@baso 0x10107a0>)
 >   set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "#ffffff")
 >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))
 >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
 >   frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
 >   internal-set-lisp-face-attribute(default :background "DarkSlateGray" #<frame emacs@baso 0x10107a0>)
 >   set-face-attribute(default #<frame emacs@baso 0x10107a0> :background "DarkSlateGray")
 >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 121 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
 >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
 >   frame-set-background-mode(#<frame emacs@baso 0x10107a0>)
 >   x-create-frame-with-faces(nil)
 >   make-frame()
 >   make-frame-command()
 >   call-interactively(make-frame-command nil nil)

IIUC it has entered infinite recursion where `frame-set-background-mode'
is entered over and over again.  Somehow alternating between a "#ffffff"
and "DarkSlateGray" background, very interesting.

But I don't really understand where this happens :-(

martin







^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-08 13:29       ` martin rudalics
@ 2008-09-14 13:50         ` martin rudalics
  2008-09-16 12:11           ` Ian Miller
  0 siblings, 1 reply; 12+ messages in thread
From: martin rudalics @ 2008-09-14 13:50 UTC (permalink / raw)
  To: 911; +Cc: Ian Miller

Ian,

I can't reproduce this here.  Could your try to edebug the functions
`face-spec-set-2' and `face-spec-recalc' to find out why (or better how)
in the trace

 >  >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple
 > nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box
 > nil :strike-through nil :overline nil :underline nil :slant normal
 > :weight normal :height 90 :width normal :foundry "unknown" :family
 > "DejaVu Sans Mono")))
 >  >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
[...]
 >  >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple
 > nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil
 > :box nil :strike-through nil :overline nil :underline nil :slant normal
 > :weight normal :height 121 :width normal :foundry "unknown" :family
 > "DejaVu Sans Mono"))))
 >  >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)

the function `face-spec-set-2' is called alternately with different
backgrounds.  That is, edebug these two functions, call C-x 5 2 or
whatever you have to make a new frame, and tell me whether

(1) `face-spec-recalc' in one and the same call invokes
     `face-spec-set-2' at least twice (where an invocation should cause
     `face-spec-set-2' to really call `set-face-attributes'), or

(2) `face-spec-recalc' is called at least twice when making a new frame.

Please complain immediately whem my recipe is unclear.

Thanks in advance, martin.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-14 13:50         ` martin rudalics
@ 2008-09-16 12:11           ` Ian Miller
  2008-09-16 12:50             ` martin rudalics
  0 siblings, 1 reply; 12+ messages in thread
From: Ian Miller @ 2008-09-16 12:11 UTC (permalink / raw)
  To: martin rudalics; +Cc: 911

On Sun, Sep 14, 2008 at 03:50:05PM +0200, martin rudalics wrote:
> Ian,
>
> I can't reproduce this here.  Could your try to edebug the functions
> `face-spec-set-2' and `face-spec-recalc' to find out why (or better how)
> in the trace
>
> >  >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t :stipple
> > nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box
> > nil :strike-through nil :overline nil :underline nil :slant normal
> > :weight normal :height 90 :width normal :foundry "unknown" :family
> > "DejaVu Sans Mono")))
> >  >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
> [...]
> >  >   face-spec-set-2(default #<frame emacs@baso 0x10107a0> ((t (:stipple
> > nil :background "DarkSlateGray" :foreground "wheat" :inverse-video nil
> > :box nil :strike-through nil :overline nil :underline nil :slant normal
> > :weight normal :height 121 :width normal :foundry "unknown" :family
> > "DejaVu Sans Mono"))))
> >  >   face-spec-recalc(default #<frame emacs@baso 0x10107a0>)
>
> the function `face-spec-set-2' is called alternately with different
> backgrounds.  That is, edebug these two functions, call C-x 5 2 or
> whatever you have to make a new frame, and tell me whether

Martin,

When I tried to instrument those two functions, there was no problem
with face-spec-recalc, but face-spec-set-2 refused to instrument
with the following complaint:

edebug-syntax-error: Invalid read syntax: "Expected lambda expression"

(defun face-spec-set-2 (face frame spec)
  "Set the face attributes of FACE on FRAME according to SPEC."
  (let* ((attrs (face-spec-choose spec frame)))
    (while attrs
      (let ((attribute (car attrs))
          (value (car (cdr attrs))))
	  ;; Support some old-style attribute names and values.
	  (case attribute
	    (:bold (setq attribute :weight value (if value 'bold
  'normal)))
    (:italic (setq attribute :slant value (if value 'italic 'normal)))
      ((:foreground :background)
       ^
       this is the cursor marking the syntax error    

> (1) `face-spec-recalc' in one and the same call invokes
>     `face-spec-set-2' at least twice (where an invocation should cause
>     `face-spec-set-2' to really call `set-face-attributes'), or
>
> (2) `face-spec-recalc' is called at least twice when making a new frame.

When I edebug face-spec-recalc and attempt to create a new frame, each
time I press 'T' to Trace Fast the function appears to be re-entered,
and this appears to go on indefinitely?

Additionally a frame *is* created now, but it does not appear
automatically on the screen - however, it can be accessed via the
Buffers->Frames menu, and it does not use the colour scheme specified
in .emacs.

Also, when edebug reaches face-spec-recalc, I get the following
console message with each subsequent step of edebug (sorry, I don't
know if this is relevant, I am a complete novice when it comes to
emacs debugging!): 

(emacs:21944): Gtk-CRITICAL **: gtk_box_pack_start: assertion
`child->parent ==NULL' failed

cheers,
ian






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
  2008-09-16 12:11           ` Ian Miller
@ 2008-09-16 12:50             ` martin rudalics
       [not found]               ` <20080916141738.GA3025@baso.home>
  0 siblings, 1 reply; 12+ messages in thread
From: martin rudalics @ 2008-09-16 12:50 UTC (permalink / raw)
  To: Ian Miller; +Cc: 911

 > When I tried to instrument those two functions, there was no problem
 > with face-spec-recalc, but face-spec-set-2 refused to instrument
 > with the following complaint:
 >
 > edebug-syntax-error: Invalid read syntax: "Expected lambda expression"

Sorry.  Please append the code below at the end of your .emacs and send
me the contents of the *face-spec-set-2* buffer after the bug occurred.

Thanks, martin.

;;;; Code starts here
(require 'cl)
(require 'faces)

(defun face-spec-set-2 (face frame spec)
   "Set the face attributes of FACE on FRAME according to SPEC."
   (with-current-buffer (get-buffer-create "*face-spec-set-2*")
     (insert
      (format "face %s frame %s spec %s" face frame spec))
     (insert "\n"))
   (let* ((attrs (face-spec-choose spec frame)))
     (while attrs
       (let ((attribute (car attrs))
	    (value (car (cdr attrs))))
	;; Support some old-style attribute names and values.
	(case attribute
	  (:bold (setq attribute :weight value (if value 'bold 'normal)))
	  (:italic (setq attribute :slant value (if value 'italic 'normal)))
	  ((:foreground :background)
	   ;; Compatibility with 20.x.  Some bogus face specs seem to
	   ;; exist containing things like `:foreground nil'.
	   (if (null value) (setq value 'unspecified)))
	  (t (unless (assq attribute face-x-resources)
	       (setq attribute nil))))
	(when attribute
	  (set-face-attribute face frame attribute value)))
       (setq attrs (cdr (cdr attrs))))))
;;;; Code ends here







^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
       [not found]               ` <20080916141738.GA3025@baso.home>
@ 2008-09-16 14:54                 ` martin rudalics
       [not found]                 ` <48CFCA45.8050201@gmx.at>
  1 sibling, 0 replies; 12+ messages in thread
From: martin rudalics @ 2008-09-16 14:54 UTC (permalink / raw)
  To: Ian Miller; +Cc: 911

 >> Sorry.  Please append the code below at the end of your .emacs and send
 >> me the contents of the *face-spec-set-2* buffer after the bug occurred.
 >
 > Please see attached for contents of this buffer.

My bad.  When I tried this here it got me a buffer with a couple of
lines.  Yours is 600K :-( apologies to you and everyone on this list.

Please try again with the following (it should print only calls for the
default face and distinguish them according to where they are called in
`face-spec-recalc').  But please don't post it on the list this time if
it gets too large.

martin

;;;; Code starts here
(require 'cl)
(require 'faces)

(defvar face-counter 0)

(defun face-spec-recalc (face frame)
   "Reset the face attributes of FACE on FRAME according to its specs.
This applies the defface/custom spec first, then the custom theme specs,
then the override spec."
   (face-spec-reset-face face frame)
   (setq face-counter (1+ face-counter))
   (let ((face-sym (or (get face 'face-alias) face)))
     (or (get face 'customized-face)
	(get face 'saved-face)
	(progn
	  (when (eq face 'default)
	    (with-current-buffer (get-buffer-create "*face-spec-set-2*")
	      (insert
	       (format "%s-1 face %s frame %s spec %s\n" face-counter face frame spec))))
	  (face-spec-set-2 face frame (face-default-spec face))))
     (let ((theme-faces (reverse (get face-sym 'theme-face))))
       (dolist (spec theme-faces)
	(when (eq face 'default)
	  (with-current-buffer (get-buffer-create "*face-spec-set-2*")
	    (insert
	     (format "%s-2 face %s frame %s spec %s\n" face-counter face frame spec))))
	(face-spec-set-2 face frame (cadr spec))))
     (when (eq face 'default)
       (with-current-buffer (get-buffer-create "*face-spec-set-2*")
	(insert
	 (format "%s-3 face %s frame %s spec %s\n" face-counter face frame spec))))
     (face-spec-set-2 face frame (get face-sym 'face-override-spec))))
;;;; Code ends here






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
       [not found]                 ` <48CFCA45.8050201@gmx.at>
@ 2008-09-17 10:41                   ` Ian Miller
       [not found]                     ` <48D11231.3050707@gmx.at>
  0 siblings, 1 reply; 12+ messages in thread
From: Ian Miller @ 2008-09-17 10:41 UTC (permalink / raw)
  To: martin rudalics; +Cc: 911

On Tue, Sep 16, 2008 at 05:01:25PM +0200, martin rudalics wrote:
> Ahhh no ...
>
> The code below shouldn't get you any bugs because `spec' is undefined.
>

Martin, 

Sorry about the last post - my fault, I was in a hurry and didn't
check size.

Output from latest run here:

       http://emacs.fastmail.fm/face-spec-set-2.txt
	
cheers,
ian







^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
       [not found]                               ` <20080919195533.GA27756@baso.home>
@ 2008-09-21 18:30                                 ` martin rudalics
  0 siblings, 0 replies; 12+ messages in thread
From: martin rudalics @ 2008-09-21 18:30 UTC (permalink / raw)
  To: 911; +Cc: Ian Miller

Ian Miller has patiently continued to debug this and we finally came to
the conclusion that the following sequence of events leads to the error.

Ian uses

   (custom-set-faces
    '(default ((t (... :background "DarkSlateGray" ...)))))

When creating a new frame `frame-set-background-mode' gets called which
eventually calls `face-spec-recalc'.  The latter has this loop

       (dolist (spec theme-faces)
	(face-spec-set-2 face frame (cadr spec))))

which calls `face-spec-set-2' two times for the default face background,
one time for #ffffff and one time for DarkSlateGray.  `face-spec-set-2'
calls `set-face-attribute', which calls
`internal-set-lisp-face-attribute' which calls Fmodify_frame_parameters
which calls `frame-set-background-mode' again.  Now

(>= (apply '+ (color-values "DarkSlateGrey"))
     (* (apply '+ (color-values "white")) .6))

evaluates to nil while

(>= (apply '+ (color-values "#ffffff"))
     (* (apply '+ (color-values "white")) .6))

evaluates to t.  This means that `bg-mode' never equals `old-bg-mode'
but continuously alternates between 'light and 'dark, so
`frame-set-background-mode' will call `face-spec-recalc' thus sending
Emacs into a nasty loop.

Note that the looping behavior is due to the second call in the dolist
(that for DarkSlateGrey).  The first call (for #ffffff) terminates.

I'm not sure how to fix this because that looping has no specific entry
point.  In fact, Ian told me

 > Incidently, whilst testing I have found that the same bug does indeed
 > manifest itself elsewhere. Normally I have the toolbar disabled in my
 > .emacs, but after stripping everything out of .emacs for testing
 > purposes, I noticed that I get the following errors whenever I hover
 > over an icon in the toolbar:
 >
 >   Error while displaying tooltip: (error Variable binding depth exceeds
 >   max-specpdl-size)
 >   Read a directory, to operate on its files
 >   Error while displaying tooltip: (error Variable binding depth exceeds
 >   max-specpdl-size)
 >   Read an existing file into an Emacs buffer

which seems due to the fact that x_create_tip_frame calls
`modify-frame-parameters' ...

Anyone out there with good ideas for a fix?

martin







^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2008-09-21 18:30 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-07 14:23 bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size) martin rudalics
2008-09-07 16:56 ` Ian Miller
2008-09-07 18:47   ` martin rudalics
2008-09-07 23:42     ` Ian Miller
2008-09-08 13:29       ` martin rudalics
2008-09-14 13:50         ` martin rudalics
2008-09-16 12:11           ` Ian Miller
2008-09-16 12:50             ` martin rudalics
     [not found]               ` <20080916141738.GA3025@baso.home>
2008-09-16 14:54                 ` martin rudalics
     [not found]                 ` <48CFCA45.8050201@gmx.at>
2008-09-17 10:41                   ` Ian Miller
     [not found]                     ` <48D11231.3050707@gmx.at>
     [not found]                       ` <20080917153343.GA3925@baso.home>
     [not found]                         ` <48D12A4A.2010003@gmx.at>
     [not found]                           ` <20080919180120.GA22672@baso.home>
     [not found]                             ` <48D3F7B6.1050001@gmx.at>
     [not found]                               ` <20080919195533.GA27756@baso.home>
2008-09-21 18:30                                 ` martin rudalics
  -- strict thread matches above, loose matches on Subject: below --
2008-09-07 11:36 Ian Miller

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).