[Python-mode] [ python-mode-Bugs-1215039 ] eat 100% CPU when "Force full reparse"

SourceForge.net noreply at sourceforge.net
Mon Nov 13 23:22:36 CET 2006


Bugs item #1215039, was opened at 2005-06-04 20:16
Message generated for change (Comment added) made by shreddd
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=581349&aid=1215039&group_id=86916

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Shixin Zeng (pupilzeng)
Assigned to: Skip Montanaro (montanaro)
Summary: eat 100% CPU when "Force full reparse" 

Initial Comment:
it seems to come into a infinite loop, and I can't do
anything but Ctrl+C to end emacs and all my datas were
lost.
It ocurred every time I type M-/ for code completion.
my emacs is 23.0.0.1, checkout from the branch
unicode-2 on April, 2, 2005



----------------------------------------------------------------------

Comment By: Shreyas (shreddd)
Date: 2006-11-13 14:22

Message:
Logged In: YES 
user_id=1644594

Looks like there is a workaround for this problem:

http://www.emacswiki.org/cgi-bin/wiki?action=browse;diff=2;id=CollectionOfEmacsDevelopmentEnvironmentTools

Basically, CEDET is broken wrt python autocompletion. In the
file cedet-dir/semantic/wisent/wisent-python.el, comment out
the line:

    (add-hook 'python-mode-hook #'wisent-python-default-setup)

Everything worked great after that




----------------------------------------------------------------------

Comment By: Todd DeLuca (todddeluca)
Date: 2006-06-07 11:17

Message:
Logged In: YES 
user_id=1321242

Based on the previous comment by thimo, I investigated the
"semantic" issue a little further.  On my system the
"semantic" stuff comes from the CEDET
(http://cedet.sourceforge.net/ and
http://cedet.sourceforge.net/semantic.shtml) site-lisp
packages being loaded.  One way to avoid loading these tools
is to run emacs with the --no-site-file option.  This fixes
the freezing that was occurring in the code example I
provided below.  These site packages are common to all
users, so I can not simply remove them from the system.  If
anyone has a more fine-grained way to do this, one that does
not remove all site-lisp packages, feel free to share.  

Cheers,
Todd DeLuca


----------------------------------------------------------------------

Comment By: Thimo Neubauer (thimo)
Date: 2005-12-15 01:56

Message:
Logged In: YES 
user_id=19572

As this bug bit me many times in the last days I've checked
with a friend if he experiences the same: in his emacs (also
Debian stable) there are no freezes. As he has no "semantic"
installed but I do I'd guess that it is the culprit.

BTW: the fixes in the patch mentioned on

  http://www.emacswiki.org/cgi-bin/wiki/PythonMode

did not cure this bug.

For reference: I'm using Emacs 21.4.1, python-mode 4.75,
semantic 1.0beta3b 

----------------------------------------------------------------------

Comment By: Mike (stormcoder)
Date: 2005-12-07 09:39

Message:
Logged In: YES 
user_id=446468

This occurs for me when there is a block (function, for, if,
etc) that doesn't have a blank new line after it. As soon as
the file is loaded, the CPU pegs and emacs freezes.

----------------------------------------------------------------------

Comment By: Todd DeLuca (todddeluca)
Date: 2005-07-30 10:03

Message:
Logged In: YES 
user_id=1321242

Ok, I've created a simple reproducible example.  The
following code consistently freezes if the last character in
the file is '1'.  If there is a newline following the '1',
then everything is fine.
if 1 < 2:
    # die here                                             
                                                           
                                        
    x = 1

It also freezes under the same condition if you replace the
if statement with a for i in range(10): loop.

The following file does NOT freeze even if the '1' is the
last character in the file:
x = 1

So perhaps it has something to do with the indentation. 
Everything seems to hinge on there being no characters
following the last line of code.  I tried putting spaces on
the end of the 'x = 1' line and it still froze with a 'Force
full reparse' message.  Sometimes the 'Force full reparse'
message is not displayed when it freezes, but I think that
detail is insignificant.

I hope these code snippets are helpful in debugging the
problem.  Thank y'all for producing and maintaining
python-mode.  Its coloring and indenting features have been
very helpful to me, and I get the feeling I'm just
scratching the surface.

Cheers,
Todd


----------------------------------------------------------------------

Comment By: Todd DeLuca (todddeluca)
Date: 2005-07-30 09:29

Message:
Logged In: YES 
user_id=1321242

I am having the same problem.  

It started happening around the time my box was upgraded to
the new Debian stable release, Sarge.  

I am using version 4.75 of python-mode.  

The problem manifests seemingly randomly for me.  It seems
to happen more with short python files.  I can not think of
a long or old (pre-upgrade to sarge) python file where I've
had this problem.  

I am not using M-/ (code completion).  The problem may
manifest when I hit return to go to a new line or when I hit
backspace to unindent out of a block that I've just ended.  

I am using gnu emacs version 21.4.1

I am forced to kill <pid> from a different terminal to close
my emacs, since I run it in the foreground of a terminal.

Any suggestions for how to fix this problem would be greatly
appreciated.  It makes it nearly impossible to use
python-mode when at any time emacs can freeze and loose all
of my work (since my last save.)  I'm sorry I have not been
able to reproduce the problem consistently yet.  If that is
helpful I will attempt to do so.

Best regards,
Todd DeLuca

P.S. some diagnostic info (a repeat of what was mentioned
above):
$ emacs --version 
GNU Emacs 21.4.1

from top command:
3440 td23      14   0 19336  18m 2900 R 99.9  0.5  16:05.32
emacs

python-mode version (from C-c C-v): version $Revision: 4.75 $


----------------------------------------------------------------------

Comment By: Shixin Zeng (pupilzeng)
Date: 2005-06-09 04:39

Message:
Logged In: YES 
user_id=1143754

M-: py-version RET
"$Revision 4.63 $"
I downloaded it from
http://sourceforge.net/projects/python-mode, whose version
was tagged as 1.0alpha
Where can I get the version 4.75?

I've tried write codes as you said:
a.foo = 12
a.  M-/ repeatly
First: "py"
Seconed: Force full parse and the problem occurred.

----------------------------------------------------------------------

Comment By: Skip Montanaro (montanaro)
Date: 2005-06-09 04:04

Message:
Logged In: YES 
user_id=44345

Hmmm...  It's been years and years since Python-mode 1.0alpha was
released, so I suspect you're looking in the wrong place for the version.  
We are currently at 4.75.  You can get the current python-mode version
by typing

    M-: py-version RET

When I hit M-/ at the place you indicated, it completes with "c12".
I have no idea why it chooses that completion, but it doesn't hang.
It's not obvious to me what it should expand in this context.  Did
you have something in mind?  If I change the code to

    ...
    a = A('abc')
    a.foo = 12
    a.

when I hit M-/ it properly expands to "a.foo" for me.

Please try upgrading your python-mode.

----------------------------------------------------------------------

Comment By: Shixin Zeng (pupilzeng)
Date: 2005-06-09 03:33

Message:
Logged In: YES 
user_id=1143754

When I'm editing C source files in cc-mode, the problem
doesn't occur

----------------------------------------------------------------------

Comment By: Shixin Zeng (pupilzeng)
Date: 2005-06-09 02:44

Message:
Logged In: YES 
user_id=1143754

OK, here's an example:
#!/usr/bin/python
class A:
        def __init__(self, name):
                 self.name = name

if __name__ == '__main__':
        a = A('abc')
        a.<------------- M-/ here, the bug can be reproduced

the python-mode is 1.0alpha

----------------------------------------------------------------------

Comment By: Skip Montanaro (montanaro)
Date: 2005-06-06 20:19

Message:
Logged In: YES 
user_id=44345

Can you provide an example Python file where this happens?  Given that
M-/ runs dabbrev-expand, I'm skeptical this has anything to do with
python-mode.


----------------------------------------------------------------------

Comment By: Skip Montanaro (montanaro)
Date: 2005-06-05 04:10

Message:
Logged In: YES 
user_id=44345

What version of python-mode.el are you using?


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=581349&aid=1215039&group_id=86916


More information about the Python-mode mailing list