Menu

#31 eat 100% CPU when "Force full reparse"

open
None
5
2005-06-07
2005-06-05
Shixin Zeng
No

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

Discussion

  • Skip Montanaro

    Skip Montanaro - 2005-06-05

    Logged In: YES
    user_id=44345

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

     
  • Skip Montanaro

    Skip Montanaro - 2005-06-07
    • assigned_to: nobody --> montanaro
     
  • Skip Montanaro

    Skip Montanaro - 2005-06-07

    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.

     
  • Shixin Zeng

    Shixin Zeng - 2005-06-09

    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

     
  • Shixin Zeng

    Shixin Zeng - 2005-06-09

    Logged In: YES
    user_id=1143754

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

     
  • Skip Montanaro

    Skip Montanaro - 2005-06-09

    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.

     
  • Shixin Zeng

    Shixin Zeng - 2005-06-09

    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.

     
  • Todd DeLuca

    Todd DeLuca - 2005-07-30

    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 $

     
  • Todd DeLuca

    Todd DeLuca - 2005-07-30

    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

     
  • Mike

    Mike - 2005-12-07

    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.

     
  • Anonymous

    Anonymous - 2005-12-15

    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

     
  • Todd DeLuca

    Todd DeLuca - 2006-06-07

    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

     
  • Shreyas

    Shreyas - 2006-11-13

    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

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.