Eric M. Ludlam | 7 Dec 17:20 2008

Re: nil classes, like in: eieiomt-method-list(semanticdb-synchronize 0 nil)

Hi,

 I tried calling the same functions, such as:

(ede-object-keybindings nil)

or

 (semanticdb-synchronize-table nil)

and got no errors.  I looked through the eieio code, and as far as I
can tell, the values passed in are all ok.

The stacks, in fact, look suspicious, as it just says:

>Debugger entered: nil

which, as far as I can tell, is not an error.

The times when I do see errors in the code pointed to by your stacks
is when I load EIEIO twice, or if I byte-compile EIEIO in an Emacs
that already has an EIEIO loaded.

I checked in some changes to EIEIO with a little more doc, and error
checks around that spot, but also put code at the top to prevent
double loading of EIEIO.  Perhaps that will detect some setup issue
you may have.

As far as 'nil' being an issue, it turns out that nil is ok.  It is a
reasonable end condition.  Nils associated with static methods (the key
of 0) is fine too.

The "mt" of "eieiomt" means it is navigating a method tree, so it
scans through the inheritance hierarchy looking for methods to call,
and eventually you get to nil (no parent).

I googled for eieiomt-method-list, and saw quite a few stacks, as you
suggest there are.  If I run the code suggested in the stack with the
current version of EIEIO, such as:

(ede-project-root nil)

it correctly tells me:

(no-method-definition ede-project-root (nil))

which seems like a reasonable error exposing some problem in the code
using eieio.

As I don't get these errors, if such things persist, I can help you
debug them.  A start is to eval-defun eieiomt-method-list.  (Put the
cursor in the function, and use C-M-x).

The stack should then provide more information of the insides of
eieiomt-method-list, but you will find everything becomes very very
slow.

Thanks
Eric

>>> Daniel Clemente <dcl441-bugs <at> yahoo.com> seems to think that:
>Hi,
>  I'm getting following error:
>
>---------------
>Debugger entered: nil
>  eieiomt-method-list(semanticdb-synchronize 0 nil)
>  (setq lambdas (cons tlambdas lambdas) keys (cons method-static keys) primarymethodlist
(eieiomt-method-list method method-static mclass))
>...
>---------------
>
>  with CEDET from yesterday's CVS. I attach the full backtrace in a
>file. What I did was just opening a file (jabber-core.el), but similar
>errors happen continuously. For instance this one:
>
>-------------
>Debugger entered: nil
>  eieiomt-method-list(ede-object-keybindings 0 nil)
>  eieio-generic-call(ede-object-keybindings (nil))
>  ede-object-keybindings(nil)
>...
>-------------
>
>
>  It's not the first time I got a class=nil in eieiomt-method-list. I
>don't know if that's supposed to happen. So:
>
>1.  Could you please add some documentation to eieiomt-method-list
>which says whether receiving a nil class is part of the normal
>behaviour or not?
>
>2.  Since it seems that more people have had similar problems with nil
>classes coming here, could the error be catched and an error message
>be shown instead? In this way you can get a message asking to report
>the bug, instead of the debugger popping out all the time.
>
>
>  Thanks,
>
>Daniel
>
>

--

-- 
          Eric Ludlam:                       eric <at> siege-engine.com
   Siege: www.siege-engine.com          Emacs: http://cedet.sourceforge.net

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/

Gmane