help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to debug "Debugger entered--Lisp error: (void-function nil)"


From: Tim X
Subject: Re: How to debug "Debugger entered--Lisp error: (void-function nil)"
Date: Wed, 14 Mar 2007 18:06:43 +1100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.95 (gnu/linux)

address@hidden writes:

> Hi,
>
> I am using "GNU Emacs 22.0.92.1 (i686-pc-linux-gnu, X toolkit)"
> and run VM (view mail) in it, but the error comes also with
> 21.4.1. 
>
> Whenever I enable debug-on-error I get a backtrace with the
> following content:
>
> ,------------------------------------------
> | Debugger entered--Lisp error: (void-function nil)
> |  (nil)
> `------------------------------------------
>
> How can I debug this to find the source of this problem?
>
> It also happens most of the time when I single step in edebug
> mode which makes edebug practically useless.  When running with
> debug-on-error set to nil I do not see the error.
>
> Also it seems to be there already for some time as I found other
> references when googling for <<<emacs debugger entered--Lisp error:
> "(void-function nil)">>>, e.g. http://tinyurl.com/yv6t2j!
>
> Thanks,
> Robert

Normally you will see this error when emacs is trying to execute a symbol which
it believes is a function (i.e. because it is the first element in a list). A
common cause is some config setting where you have a list and have forgotten to
quote it. For example,

(setq x (nil "fred" 1))

where the intention is to set x to the value of the list (nil "fred" 1).
However, the list is not quoted, so emacs tries to execute the function 'nil'
with the arguements "fred" and 1. The correct way to do this is

(setq x '(nil "fred" 1))

or 

(setq x (list nil "fred" 1)

What you need to do is track down the init error in your .vm file. Normally,
the backtrace will show the call stack, but what you have copied appears to
just be the last (top) element in the stack. With the rest of the call stack
you can usually narrow down the search as it will show you what emacs was doing
prior to trying to call the void function. 

I'd suggest going through your VM config and comment out everything and then
try adding each value back, one at a time until you get the error again. 

To give you confidence it will work, I'm running VM under emacs 22. I've not
had any problems except a couple of weeks ago when a change to emacs 22 caused
problems with compiling vm (an issue with new emacs approach to printing data
structures and fixed easily once I was pointed to the solution). You should
also note that you can get some unexpecttd/odd behavior/errors if you have some
emacs code compiled with emacs 21 and you try to run it under emacs 22 (though
code compiled with emacs 22 is more likely to cause issues for emacs 21). I run
different source trees for emacs 21 and emacs 22 for this reason. 

HTH

Tim

-- 
tcross (at) rapttech dot com dot au


reply via email to

[Prev in Thread] Current Thread [Next in Thread]