7 Dec 2008 17:20
Re: nil classes, like in: eieiomt-method-list(semanticdb-synchronize 0 nil)
Eric M. Ludlam <eric <at> siege-engine.com>
2008-12-07 16:20:41 GMT
2008-12-07 16:20:41 GMT
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/
RSS Feed