Skip to content

IDLE crash on startup with typo in config-keys.cfg #55646

Closed

Description

@GeorgeDhoore
BPO 11437
Nosy @terryjreedy, @ned-deily, @serwy, @asvetlov
Files
  • config-keys.cfg: File that crashes IDLE in interpreter mode
  • issue11437.patch
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/terryjreedy'
    closed_at = None
    created_at = <Date 2011-03-08.00:13:57.851>
    labels = ['3.7', 'expert-IDLE', 'type-bug', 'expert-tkinter']
    title = 'IDLE crash on startup with typo in config-keys.cfg'
    updated_at = <Date 2017-09-28.06:58:52.142>
    user = 'https://bugs.python.org/GeorgeDhoore'

    bugs.python.org fields:

    activity = <Date 2017-09-28.06:58:52.142>
    actor = 'taleinat'
    assignee = 'terry.reedy'
    closed = False
    closed_date = None
    closer = None
    components = ['IDLE', 'Tkinter']
    creation = <Date 2011-03-08.00:13:57.851>
    creator = 'George.Dhoore'
    dependencies = []
    files = ['21039', '24351']
    hgrepos = []
    issue_num = 11437
    keywords = ['patch']
    message_count = 18.0
    messages = ['130301', '130387', '151993', '151994', '152187', '157095', '157098', '157206', '157208', '157211', '157213', '157215', '220093', '220107', '220391', '226890', '280685', '297253']
    nosy_count = 6.0
    nosy_names = ['terry.reedy', 'ned.deily', 'roger.serwy', 'asvetlov', 'George.Dhoore', 'Saimadhav.Heblikar']
    pr_nums = []
    priority = 'normal'
    resolution = None
    stage = 'patch review'
    status = 'open'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue11437'
    versions = ['Python 3.6', 'Python 3.7']

    Linked PRs

    Activity

    1. GeorgeDhoore commented on Mar 8, 2011

      GeorgeDhooremannequin
      MannequinAuthor

      If the user makes a typo when setting a custom keybind (in this case "<Alt-Key-up>" instead of "<Alt-Key-Up>") IDLE will silently crash. From the command-line the error shows as:

      Traceback (most recent call last):
        File "C:\Python32\Lib\idlelib\idle.py", line 11, in <module>
          idlelib.PyShell.main()
        File "C:\Python32\Lib\idlelib\PyShell.py", line 1388, in main
          shell = flist.open_shell()
        File "C:\Python32\Lib\idlelib\PyShell.py", line 277, in open_shell
          self.pyshell = PyShell(self)
        File "C:\Python32\Lib\idlelib\PyShell.py", line 856, in __init__
          self.history = self.History(self.text)
        File "C:\Python32\Lib\idlelib\IdleHistory.py", line 12, in __init__
          text.bind("<<history-previous>>", self.history_prev)
        File "C:\Python32\Lib\idlelib\MultiCall.py", line 332, in bind
          self.__binders[triplet[1]].bind(triplet, func)
        File "C:\Python32\Lib\idlelib\MultiCall.py", line 213, in bind
          seq, handler)))
        File "C:\Python32\Lib\tkinter\__init__.py", line 977, in bind
          return self._bind(('bind', self._w), sequence, func, add)
        File "C:\Python32\Lib\tkinter\__init__.py", line 932, in _bind
          self.tk.call(what + (sequence, cmd))
      _tkinter.TclError: bad event type or keysym "up"

      This is doubly confusing as case sensitivity seems to be applied at random in config-keys.cfg.

      Expected behavior:
      Ideally case sensitivity shouldn't matter in config-keys.cfg and if there is an error in the config syntax, that particular line should be ignored and the rest of the file tried. If IDLE is still able to start, some user friendly error should be displayed indicating the problem line.

    2. added
      type-bugAn unexpected behavior, bug, or error
      and removed
      type-crashA hard crash of the interpreter, possibly with a core dump
      on Mar 8, 2011
    3. terryjreedy commented on Mar 9, 2011

      @terryjreedy
      Member

      I presume 'silently' means when starting with an icon or shortcut, so that there is no window left to contain the traceback.

      The standard key customization is by clicking, which makes errors impossible. How did you get the error? By using the "Advanced Key Binding Entry" button, which warns "These bindings will not be checked for validity!"? Or by directly editing the a file in its undocumented location (which is unknown to me)? [Question: why is either alternative
      needed?]

      Case sensitivity is a feature of string comparison. In this case, it is done by tcl and beyond our control. Adding validity checking where now disclaimed would be a possible feature request.

      Assuming the binding is done within a loop, it would be reasonable to wrap the failing call with try...except TclError: display message "When binding key '...' to action '...', tcl reports error <emsg>".

      Can you submit a patch?

    4. terryjreedy commented on Jan 26, 2012

      @terryjreedy
      Member

      bpo-13864 is a duplicate, where I mentioned the remedy of deleting the bad file.

      This is similar to bpo-5707, but I am not sure if exactly the same.
      The patch there fixed one problem but not the bad key binding problem.

    5. terryjreedy commented on Jan 26, 2012

      @terryjreedy
      Member

      bpo-13071 is another duplicate closed in favor of this.

    6. serwy commented on Jan 28, 2012

      serwymannequin
      Mannequin

      Attached is a patch against 3.3a0 to validate the active key set in the configuration handler. It validates each key binding and then presents a dialog with a list of incorrect keys if there are any.

      In developing this patch I found that IDLE calls GetCurrentKeySet multiple times during initialization of an EditorWindow or a PyShell, once for each extension loaded. This inefficiency leads to long start times for IDLE.

    7. self-assigned this
      on Mar 14, 2012
    8. asvetlov commented on Mar 29, 2012

      @asvetlov
      Contributor

      Roger, can you help me?

      What steps should I do to reproduce the issue? Pushing config from George.Dhoore into ~/.idlerc does nothing. IDLE starts fine as usual.

    9. serwy commented on Mar 29, 2012

      serwymannequin
      Mannequin

      Andrew, after placing config-keys.cfg into .idlerc, launch IDLE and change the key map to Xip's keyset. You'll get a traceback on the terminal when you click ok.

    10. asvetlov commented on Mar 31, 2012

      @asvetlov
      Contributor

      I reproduced the bug.

      Roger Serwy, your patch looks working, but can you describe:

      1. Why do you need self.known_invalid list?
      2. Why do you always extend that list (known_invalid variable is
        just shared alias for self.known_invalid member, not list copy).

      I'm a bit confusing with that logic.

    11. serwy commented on Mar 31, 2012

      serwymannequin
      Mannequin

      Without the known_invalid list, each call to GetCurrentKeySet would cause an error message to appear. The effect of keeping track of these bad key bindings is that the user receives a notification only once about a particular bad key binding. (The present architecture in IDLE calls GetCurrentKeySet too many times during initialization.)

      The known_invalid list gets extended with any newly found invalid key bindings. Also, these newly found invalid keys generates an error message. This can occur again if the user modifies the key map with the configuration dialog.

      Perhaps using a set instead of a list would make the code clearer.

    12. 13 remaining items

    13. added
      stdlibStandard Library Python modules in the Lib/ directory
      on Nov 23, 2023
    14. removed
      stdlibStandard Library Python modules in the Lib/ directory
      on Jan 15, 2026
    15. added a commit that references this issue on Jul 1, 2026
    16. added a commit that references this issue on Jul 2, 2026
    17. added 2 commits that reference this issue on Jul 2, 2026
    18. moved this to In Progress in IDLE Issueson Aug 7, 2026
    19. added
      type-crashA hard crash of the interpreter, possibly with a core dump
      on Aug 7, 2026
    20. added 3 commits that reference this issue on Sep 25, 2026
    21. added a commit that references this issue on Sep 28, 2026
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    Labels

    topic-IDLEtopic-tkintertype-bugAn unexpected behavior, bug, or errortype-crashA hard crash of the interpreter, possibly with a core dump

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions