all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: 911@emacsbugs.donarmstrong.com
Cc: Ian Miller <ian@soroban.fastmail.fm>
Subject: bug#911: 23.0.60; custom-set-faces causes "New Frame" to fail (max-specpdl-size)
Date: Sun, 21 Sep 2008 20:30:36 +0200	[thread overview]
Message-ID: <48D692CC.8020103@gmx.at> (raw)
In-Reply-To: <20080919195533.GA27756@baso.home>

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







  parent reply	other threads:[~2008-09-21 18:30 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-09-07 11:36 Ian Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48D692CC.8020103@gmx.at \
    --to=rudalics@gmx.at \
    --cc=911@emacsbugs.donarmstrong.com \
    --cc=ian@soroban.fastmail.fm \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.