Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python.exe crashes or hangs on help() modules when bad modules found #54269

Closed
devplayer mannequin opened this issue Oct 10, 2010 · 19 comments
Closed

python.exe crashes or hangs on help() modules when bad modules found #54269

devplayer mannequin opened this issue Oct 10, 2010 · 19 comments
Labels
stdlib Python modules in the Lib dir type-crash A hard crash of the interpreter, possibly with a core dump

Comments

@devplayer
Copy link
Mannequin

devplayer mannequin commented Oct 10, 2010

BPO 10060
Nosy @terryjreedy, @vstinner, @merwok, @bitdancer, @serhiy-storchaka
Files
  • python_help_modules_help_dialog.png: Hidden prompt window.
  • unnamed
  • python_exe_help()_modules_app_modal_popup_window_behind_main_window_a.png
  • 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 = None
    closed_at = <Date 2013-06-30.05:34:25.534>
    created_at = <Date 2010-10-10.02:03:45.036>
    labels = ['library', 'type-crash']
    title = 'python.exe crashes or hangs on help() modules when bad modules found'
    updated_at = <Date 2013-06-30.05:34:25.528>
    user = 'https://bugs.python.org/devplayer'

    bugs.python.org fields:

    activity = <Date 2013-06-30.05:34:25.528>
    actor = 'terry.reedy'
    assignee = 'none'
    closed = True
    closed_date = <Date 2013-06-30.05:34:25.534>
    closer = 'terry.reedy'
    components = ['Library (Lib)']
    creation = <Date 2010-10-10.02:03:45.036>
    creator = 'devplayer'
    dependencies = []
    files = ['19421', '20245', '21805']
    hgrepos = []
    issue_num = 10060
    keywords = []
    message_count = 19.0
    messages = ['118298', '118301', '118362', '118380', '118397', '118822', '119345', '119955', '120007', '125149', '125150', '125151', '125168', '125242', '134571', '134594', '134608', '134609', '192061']
    nosy_count = 6.0
    nosy_names = ['terry.reedy', 'vstinner', 'eric.araujo', 'r.david.murray', 'devplayer', 'serhiy.storchaka']
    pr_nums = []
    priority = 'normal'
    resolution = 'wont fix'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'crash'
    url = 'https://bugs.python.org/issue10060'
    versions = ['Python 2.7']

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Oct 10, 2010

    2010-10-10 python.exe crashes or hangs on help() modules
    when bad modules found

    #######################################################################
    SUMMARY

    The python.exe command line interpreter crashes or hangs when
    typing first >>>help() then >modules and a corrupt module is found.

    Python 2.7 WinXP SP3 see version details in OUTPUT sections
    #######################################################################
    EXPLANATION

    # -----------------------
    I have a workaround as a user. However it appears to be a bug
    from previous Python versions, 2.5 and 2.6 from what I've seen
    through Google and other help() module tickets.

    The workaround is simply remove the corrupt package.

    # -----------------------
    I've noticed when there is a corrupt package on my PC in the
    Q:\Python27\Lib\site-packages folder that seems to cause
    a problem when issuing >>>help() then >modules in Python.

    Python command line interperter doesn't gracefully exit the
    assertion, it crashes or hangs.

    When entering python.exe, idle.exe or pycrust.bat (runs pycrust.py),
    typing help(), then typing modules, the help routine runs most of
    the "search-for-packages" routine fine (see OUTPUT SECTION below)
    and seems to find all the installed modules but when it's
    finished it does the following:

    • python.exe either crashes, or puts up a help> prompt window and
      then drops to the DOS command prompt as seen below.

      MS window error:
      python.exe has encountered a problem and needs to clos.
      We are sorry for the inconvienience
      AppName: python.exe
      AppVer: 0.0.0.0
      ModName: unknown
      ModVer: 0.0.0.0
      Offset: 00a20fdf

    • IDLE.py doesn't crash but after the >>>help() >modules it shows
      the errors in .py files

    • PyCrust.py runs the >>>help() > modules it then shows errors
      in .py files, it then crashes

    In my case you will note the problem occurs on my install of the
    pythonwin package. On my system pythonwin will work until I exit.

    I installed a new version pythonwin just after installing Python 2.7.
    The pythonwin version always crashed on exit since it was installed.
    The old pythonwin was deinstalled before installation of the new.

    However, having a corrupt installed package shouldn't crash python.

    pythonwin version: pywin32 build214

    # -----------------------
    Something of note:
    All my development, including Python 2.7 installation and
    packages and projects are on my Q: drive, which is
    a mapped drive pointing to a sub-folder on a
    networked-shared folder in WinXP.

    Actual Folder:
        D:\SUBST_DRIVES\DRIVE_Q_DEVELOPMENT
    Net-shared Folder:
       \\Mycomp\D$\Subst_drives
    Mapped Folder:
        Q: = \\Mycomp\D$\Subst_drives\DRIVE_Q_DEVELOPMENT
    
    Although not directly used by the user (me) I also have 
    subst'd drives attached to sub-folders of:
    D:\SUBST_DRIVES\DRIVE_Q_DEVELOPMENT
    such as:
    U: = D:\SUBST_DRIVES\DRIVE_Q_DEVELOPMENT\Projects\Python27\current
    
    I only mention this in case the >>>help() >modules routine, 
    while seeking modules, can traverse folder structure attached 
    to soft and hard link combos, symbolic links and junction points 
    or whether they have an effect on traversing the folder structure 
    while searching for packages.
    

    However, I went directly to the folder holding python.exe
    at D:\SUBST_DRIVES\DRIVE_Q_DEVELOPMENT\Python27\python.exe
    When doing help() modules .\python.exe crashed at the end of
    executing "modules" as well.

    # -----------------------
    So far, I personally have not come across any other issues
    with my installation and python programs and demo code run
    with Python 2.7 except the previously noted exiting-of-pythonwin

    # -----------------------
    Further details and output from running help() modules below for each
    of python.exe, pycrust and idle.

    #######################################################################
    OUTPUT
    (3 Sections for 3 programs packaged with Python distribution)
    #######################################################################
    #######################################################################
    #######################################################################
    SECTION 1 OF 3
    python.exe
    #----------------------------------------------------------------------

    Q:\Projects\Python27>python.exe
    Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> help()

    Welcome to Python 2.7! This is the online help utility.

    If this is your first time using Python, you should definitely check out
    the tutorial on the Internet at http://docs.python.org/tutorial/.

    Enter the name of any module, keyword, or topic to get help on writing
    Python programs and using Python modules. To quit this help utility and
    return to the interpreter, just type "quit".

    To get a list of available modules, keywords, or topics, type "modules",
    "keywords", or "topics". Each module also comes with a one-line summary
    of what it does; to list the modules whose summaries contain a given word
    such as "spam", type "modules spam".

    help> modules

    Please wait a moment while I gather a list of all available modules...

    AutoComplete _threading_local itertools sspi
    AutoCompleteWindow _tkinter json sspicon
    AutoExpand _warnings keybindingDialog stat
    BaseHTTPServer _weakref keyword statvfs
    Bastion _weakrefset lib string
    Bindings _win32sysloader lib2to3 stringold
    CGIHTTPServer _winreg linecache stringprep
    CallTipWindow _winxptheme locale strop
    CallTips abc logging struct
    Canvas aboutDialog macosxSupport subprocess
    ClassBrowser adodbapi macpath sunau
    CodeContext afxres macurl2path sunaudio
    ColorDelegator aifc mailbox symbol
    ConfigParser antigravity mailcap symtable
    Cookie anydbm markupbase sys
    CreateBatchFiles app marshal sysconfig
    CreateMacScripts argparse math tabbedpages
    Debugger array md5 tabnanny
    Delegator ast media tarfile
    Dialog asynchat mhlib telnetlib
    DocXMLRPCServer asyncore mimetools tempfile
    EditorWindow atexit mimetypes test
    Enums audiodev mimify testcode
    FileDialog audioop mmap tests
    FileList base64 mmapfile text
    FixTk bdb mmsystem textView
    FormatParagraph binascii modulefinder textwrap
    GrepDialog binhex msilib this
    HTMLParser bisect msvcrt thread
    HyperParser bsddb multifile threading
    ID_NS bz2 multiprocessing time
    IOBinding cPickle mutex timeit
    IdleHistory cProfile netbios timer
    MOCK_WX cStringIO netrc tkColorChooser
    MimeWriter calendar new tkCommonDialog
    MultiCall cgi nntplib tkFileDialog
    MultiStatusBar cgitb nt tkFont
    ObjectBrowser chunk ntpath tkMessageBox
    ObjectListView clock ntsecuritycon tkSimpleDialog
    OutputWindow cmath nturl2path toaiff
    ParenMatch cmd numbers token
    PathBrowser code odbc tokenize
    Percolator codecs opcode trace
    PyParse codeop operator traceback
    PyShell collections optparse ttk
    PythonOgreConfig colorsys os tty
    Queue com os2emxpath turtle
    RemoteDebugger commands parser types
    RemoteObjectBrowser commctrl pdb unicodedata
    ReplaceDialog compileall perfmon unittest
    ReportVersion compiler pickle urllib
    RstripExtension configDialog pickletools urllib2
    SampleFramework configHandler pipes urlparse
    ScriptBinding configHelpSourceEdit pkgutil user
    ScrolledList configSectionNameDialog platform utils
    ScrolledText contextlib plistlib uu
    SearchDialog convert_to_PANP popen2 uuid
    SearchDialogBase cookielib poplib warnings
    SearchEngine copy posixfile wave
    SimpleDialog copy_reg posixpath weakref
    SimpleHTTPServer core pprint webbrowser
    SimpleXMLRPCServer csv profile whichdb
    SocketServer ctypes pstats win2kras
    StackViewer curses pty win32api
    StringIO datetime pub win32clipboard
    Tix dbhash pubsub win32com
    Tkconstants dbi pubsub1 win32con
    Tkdnd dde pubsubconf win32console
    Tkinter decimal py_compile win32cred
    ToolTip difflib pyclbr win32crypt
    TreeWidget dircache pycrust_c win32cryptcon
    UndoDelegator dis pycrust_gdir win32event
    UserDict distutils pydoc win32evtlog
    UserList doctest pydoc_data win32evtlogutil
    UserString dprint pyexpat win32file
    WidgetRedirector dumbdbm pyglet win32gui
    WindowList dummy_thread pythoncom win32gui_struct
    ZoomHeight dummy_threading pythonstartup win32help
    _LWPCookieJar dynOptionMenuWidget pywin win32inet
    _MozillaCookieJar email pywin32_postinstall win32inetcon
    __builtin__ encodings pywin32_testutil win32job
    __future__ errno pywintypes win32lz
    _abcoll event quopri win32net
    _ast exceptions random win32netcon
    _autosetuppubsubv1 filecmp rasutil win32pdh
    _bisect fileinput re win32pdhquery
    _bsddb fnmatch regcheck win32pdhutil
    _codecs font regutil win32pipe
    _codecs_cn formatter repr win32print
    _codecs_hk fpformat resource win32process
    _codecs_iso2022 fractions rexec win32profile
    _codecs_jp ftplib rfc822 win32ras
    _codecs_kr functools rlcompleter win32rcparser
    _codecs_tw future_builtins robotparser win32security
    _collections gc rpc win32service
    _csv genericpath run win32serviceutil
    _ctypes getopt runpy win32timezone
    _ctypes_test getpass sched win32trace
    _elementtree gettext select win32traceutil
    _functools gl servicemanager win32transaction
    _hashlib glob sets win32ts
    _heapq graphics setup win32ui
    _hotshot gzip setuparg1 win32uiole
    _io hashlib setupkwargs win32verstamp
    _json heapq setupv1 win32wnet
    _locale hmac setupv2 window
    _lsprof hotshot sgmllib winerror
    _md5 htmlentitydefs sha winioctlcon
    _msi htmllib shelve winnt
    _multibytecodec httplib shlex winperf
    _multiprocessing idle shutil winsound
    _pyio idlelib signal winxpgui
    _random idlever singletonmixin winxptheme
    _sha ihooks site wsgiref
    _sha256 image smtpd wx
    _sha512 imageop smtplib wxPython
    _socket imaplib sndhdr wxversion
    _sqlite3 imghdr socket xdrlib
    _sre imp sprite xml
    _ssl importlib sqlite3 xmllib
    _strptime imputil sre xmlrpclib
    _struct info sre_compile xxsubtype
    _subprocess inspect sre_constants zipfile
    _symtable io sre_parse zipimport
    _testcapi isapi ssl zlib

    Enter any module name to get more help. Or, type "modules spam" to search
    for modules whose descriptions contain the word "spam".

    Q:\Projects\Python27>

    #----------------------------------------------------------------------
    WHAT YOU SEE ABOVE a copy and past:
    python.exe either crashes, or puts up a help> prompt window and then
    drops to the DOS command prompt as seen above without indicating
    there was a corrupt package.

    #######################################################################
    #######################################################################
    #######################################################################
    SECTION 2 OF 3
    IDLE
    #----------------------------------------------------------------------

    Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.

    >> help()

    Welcome to Python 2.7! This is the online help utility.

    If this is your first time using Python, you should definitely check out
    the tutorial on the Internet at http://docs.python.org/tutorial/.

    Enter the name of any module, keyword, or topic to get help on writing
    Python programs and using Python modules. To quit this help utility and
    return to the interpreter, just type "quit".

    To get a list of available modules, keywords, or topics, type "modules",
    "keywords", or "topics". Each module also comes with a one-line summary
    of what it does; to list the modules whose summaries contain a given word
    such as "spam", type "modules spam".

    help> modules

    Please wait a moment while I gather a list of all available modules...

    AutoComplete _threading_local itertools sspi
    AutoCompleteWindow _tkinter json sspicon
    AutoExpand _warnings keybindingDialog stat
    BaseHTTPServer _weakref keyword statvfs
    Bastion _weakrefset lib string
    Bindings _win32sysloader lib2to3 stringold
    CGIHTTPServer _winreg linecache stringprep
    CallTipWindow _winxptheme locale strop
    CallTips abc logging struct
    Canvas aboutDialog macosxSupport subprocess
    ClassBrowser adodbapi macpath sunau
    CodeContext afxres macurl2path sunaudio
    ColorDelegator aifc mailbox symbol
    ConfigParser antigravity mailcap symtable
    Cookie anydbm markupbase sys
    CreateBatchFiles app marshal sysconfig
    CreateMacScripts argparse math tabbedpages
    Debugger array md5 tabnanny
    Delegator ast media tarfile
    Dialog asynchat mhlib telnetlib
    DocXMLRPCServer asyncore mimetools tempfile
    EditorWindow atexit mimetypes test
    Enums audiodev mimify testcode
    FileDialog audioop mmap tests
    FileList base64 mmapfile text
    FixTk bdb mmsystem textView
    FormatParagraph binascii modulefinder textwrap
    GrepDialog binhex msilib this
    HTMLParser bisect msvcrt thread
    HyperParser bsddb multifile threading
    ID_NS bz2 multiprocessing time
    IOBinding cPickle mutex timeit
    IdleHistory cProfile netbios timer
    MOCK_WX cStringIO netrc tkColorChooser
    MimeWriter calendar new tkCommonDialog
    MultiCall cgi nntplib tkFileDialog
    MultiStatusBar cgitb nt tkFont
    ObjectBrowser chunk ntpath tkMessageBox
    ObjectListView clock ntsecuritycon tkSimpleDialog
    OutputWindow cmath nturl2path toaiff
    ParenMatch cmd numbers token
    PathBrowser code odbc tokenize
    Percolator codecs opcode trace
    PyParse codeop operator traceback
    PyShell collections optparse ttk
    PythonOgreConfig colorsys os tty
    Queue com os2emxpath turtle
    RemoteDebugger commands parser types
    RemoteObjectBrowser commctrl pdb unicodedata
    ReplaceDialog compileall perfmon unittest
    ReportVersion compiler pickle urllib
    RstripExtension configDialog pickletools urllib2
    SampleFramework configHandler pipes urlparse
    ScriptBinding configHelpSourceEdit pkgutil user
    ScrolledList configSectionNameDialog platform utils
    ScrolledText contextlib plistlib uu
    SearchDialog convert_to_PANP popen2 uuid
    SearchDialogBase cookielib poplib warnings
    SearchEngine copy posixfile wave
    SimpleDialog copy_reg posixpath weakref
    SimpleHTTPServer core pprint webbrowser
    SimpleXMLRPCServer csv profile whichdb
    SocketServer ctypes pstats win2kras
    StackViewer curses pty win32api
    StringIO datetime pub win32clipboard
    Tix dbhash pubsub win32com
    Tkconstants dbi pubsub1 win32con
    Tkdnd dde pubsubconf win32console
    Tkinter decimal py_compile win32cred
    ToolTip difflib pyclbr win32crypt
    TreeWidget dircache pycrust_c win32cryptcon
    UndoDelegator dis pycrust_gdir win32event
    UserDict distutils pydoc win32evtlog
    UserList doctest pydoc_data win32evtlogutil
    UserString dprint pyexpat win32file
    WidgetRedirector dumbdbm pyglet win32gui
    WindowList dummy_thread pythoncom win32gui_struct
    ZoomHeight dummy_threading pythonstartup win32help
    _LWPCookieJar dynOptionMenuWidget pywin win32inet
    _MozillaCookieJar email pywin32_postinstall win32inetcon
    __builtin__ encodings pywin32_testutil win32job
    __future__ errno pywintypes win32lz
    _abcoll event quopri win32net
    _ast exceptions random win32netcon
    _autosetuppubsubv1 filecmp rasutil win32pdh
    _bisect fileinput re win32pdhquery
    _bsddb fnmatch regcheck win32pdhutil
    _codecs font regutil win32pipe
    _codecs_cn formatter repr win32print
    _codecs_hk fpformat resource win32process
    _codecs_iso2022 fractions rexec win32profile
    _codecs_jp ftplib rfc822 win32ras
    _codecs_kr functools rlcompleter win32rcparser
    _codecs_tw future_builtins robotparser win32security
    _collections gc rpc win32service
    _csv genericpath run win32serviceutil
    _ctypes getopt runpy win32timezone
    _ctypes_test getpass sched win32trace
    _elementtree gettext select win32traceutil
    _functools gl servicemanager win32transaction
    _hashlib glob sets win32ts
    _heapq graphics setup win32ui
    _hotshot gzip setuparg1 win32uiole
    _io hashlib setupkwargs win32verstamp
    _json heapq setupv1 win32wnet
    _locale hmac setupv2 window
    _lsprof hotshot sgmllib winerror
    _md5 htmlentitydefs sha winioctlcon
    _msi htmllib shelve winnt
    _multibytecodec httplib shlex winperf
    _multiprocessing idle shutil winsound
    _pyio idlelib signal winxpgui
    _random idlever singletonmixin winxptheme
    _sha ihooks site wsgiref
    _sha256 image smtpd wx
    _sha512 imageop smtplib wxPython
    _socket imaplib sndhdr wxversion
    _sqlite3 imghdr socket xdrlib
    _sre imp sprite xml
    _ssl importlib sqlite3 xmllib
    _strptime imputil sre xmlrpclib
    _struct info sre_compile xxsubtype
    _subprocess inspect sre_constants zipfile
    _symtable io sre_parse zipimport
    _testcapi isapi ssl zlib

    Enter any module name to get more help. Or, type "modules spam" to search
    for modules whose descriptions contain the word "spam".

    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        help()
      File "Q:\Python27\lib\site.py", line 453, in __call__
        return pydoc.help(*args, **kwds)
      File "Q:\Python27\lib\pydoc.py", line 1723, in __call__
        self.interact()
      File "Q:\Python27\lib\pydoc.py", line 1735, in interact
        request = self.getline('help> ')
      File "Q:\Python27\lib\pydoc.py", line 1746, in getline
        return raw_input(prompt)
      File "Q:\Python27\Lib\site-packages\pythonwin\pywin\framework\app.py", line 367, in Win32RawInput
        ret=dialog.GetSimpleInput(prompt)
      File "Q:\Python27\Lib\site-packages\pythonwin\pywin\mfc\dialog.py", line 223, in GetSimpleInput
        if title is None: title=win32ui.GetMainFrame().GetWindowText()
    error: The frame does not exist
    >>> 

    #----------------------------------------------------------------------
    IDLE doesn't crash

    #######################################################################
    #######################################################################
    #######################################################################
    SECTION 3 OF 3
    PyCrust
    #----------------------------------------------------------------------

    PyCrust 0.9.8 - The Flakiest Python Shell
    Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    Startup script executed: C:\Documents and Settings\User\Application Data\pycrust\startup
    help()

    Welcome to Python 2.7! This is the online help utility.

    If this is your first time using Python, you should definitely check out
    the tutorial on the Internet at http://docs.python.org/tutorial/.

    Enter the name of any module, keyword, or topic to get help on writing
    Python programs and using Python modules. To quit this help utility and
    return to the interpreter, just type "quit".

    To get a list of available modules, keywords, or topics, type "modules",
    "keywords", or "topics". Each module also comes with a one-line summary
    of what it does; to list the modules whose summaries contain a given word
    such as "spam", type "modules spam".

    help> modules

    Please wait a moment while I gather a list of all available modules...

    AutoComplete _threading_local itertools sspi
    AutoCompleteWindow _tkinter json sspicon
    AutoExpand _warnings keybindingDialog stat
    BaseHTTPServer _weakref keyword statvfs
    Bastion _weakrefset lib string
    Bindings _win32sysloader lib2to3 stringold
    CGIHTTPServer _winreg linecache stringprep
    CallTipWindow _winxptheme locale strop
    CallTips abc logging struct
    Canvas aboutDialog macosxSupport subprocess
    ClassBrowser adodbapi macpath sunau
    CodeContext afxres macurl2path sunaudio
    ColorDelegator aifc mailbox symbol
    ConfigParser antigravity mailcap symtable
    Cookie anydbm markupbase sys
    CreateBatchFiles app marshal sysconfig
    CreateMacScripts argparse math tabbedpages
    Debugger array md5 tabnanny
    Delegator ast media tarfile
    Dialog asynchat mhlib telnetlib
    DocXMLRPCServer asyncore mimetools tempfile
    EditorWindow atexit mimetypes test
    Enums audiodev mimify testcode
    FileDialog audioop mmap tests
    FileList base64 mmapfile text
    FixTk bdb mmsystem textView
    FormatParagraph binascii modulefinder textwrap
    GrepDialog binhex msilib this
    HTMLParser bisect msvcrt thread
    HyperParser bsddb multifile threading
    ID_NS bz2 multiprocessing time
    IOBinding cPickle mutex timeit
    IdleHistory cProfile netbios timer
    MOCK_WX cStringIO netrc tkColorChooser
    MimeWriter calendar new tkCommonDialog
    MultiCall cgi nntplib tkFileDialog
    MultiStatusBar cgitb nt tkFont
    ObjectBrowser chunk ntpath tkMessageBox
    ObjectListView clock ntsecuritycon tkSimpleDialog
    OutputWindow cmath nturl2path toaiff
    ParenMatch cmd numbers token
    PathBrowser code odbc tokenize
    Percolator codecs opcode trace
    PyParse codeop operator traceback
    PyShell collections optparse ttk
    PythonOgreConfig colorsys os tty
    Queue com os2emxpath turtle
    RemoteDebugger commands parser types
    RemoteObjectBrowser commctrl pdb unicodedata
    ReplaceDialog compileall perfmon unittest
    ReportVersion compiler pickle urllib
    RstripExtension configDialog pickletools urllib2
    SampleFramework configHandler pipes urlparse
    ScriptBinding configHelpSourceEdit pkgutil user
    ScrolledList configSectionNameDialog platform utils
    ScrolledText contextlib plistlib uu
    SearchDialog convert_to_PANP popen2 uuid
    SearchDialogBase cookielib poplib warnings
    SearchEngine copy posixfile wave
    SimpleDialog copy_reg posixpath weakref
    SimpleHTTPServer core pprint webbrowser
    SimpleXMLRPCServer csv profile whichdb
    SocketServer ctypes pstats win2kras
    StackViewer curses pty win32api
    StringIO datetime pub win32clipboard
    Tix dbhash pubsub win32com
    Tkconstants dbi pubsub1 win32con
    Tkdnd dde pubsubconf win32console
    Tkinter decimal py_compile win32cred
    ToolTip difflib pyclbr win32crypt
    TreeWidget dircache pycrust_c win32cryptcon
    UndoDelegator dis pycrust_gdir win32event
    UserDict distutils pydoc win32evtlog
    UserList doctest pydoc_data win32evtlogutil
    UserString dprint pyexpat win32file
    WidgetRedirector dumbdbm pyglet win32gui
    WindowList dummy_thread pythoncom win32gui_struct
    ZoomHeight dummy_threading pythonstartup win32help
    _LWPCookieJar dynOptionMenuWidget pywin win32inet
    _MozillaCookieJar email pywin32_postinstall win32inetcon
    __builtin__ encodings pywin32_testutil win32job
    __future__ errno pywintypes win32lz
    _abcoll event quopri win32net
    _ast exceptions random win32netcon
    _autosetuppubsubv1 filecmp rasutil win32pdh
    _bisect fileinput re win32pdhquery
    _bsddb fnmatch regcheck win32pdhutil
    _codecs font regutil win32pipe
    _codecs_cn formatter repr win32print
    _codecs_hk fpformat resource win32process
    _codecs_iso2022 fractions rexec win32profile
    _codecs_jp ftplib rfc822 win32ras
    _codecs_kr functools rlcompleter win32rcparser
    _codecs_tw future_builtins robotparser win32security
    _collections gc rpc win32service
    _csv genericpath run win32serviceutil
    _ctypes getopt runpy win32timezone
    _ctypes_test getpass sched win32trace
    _elementtree gettext select win32traceutil
    _functools gl servicemanager win32transaction
    _hashlib glob sets win32ts
    _heapq graphics setup win32ui
    _hotshot gzip setuparg1 win32uiole
    _io hashlib setupkwargs win32verstamp
    _json heapq setupv1 win32wnet
    _locale hmac setupv2 window
    _lsprof hotshot sgmllib winerror
    _md5 htmlentitydefs sha winioctlcon
    _msi htmllib shelve winnt
    _multibytecodec httplib shlex winperf
    _multiprocessing idle shutil winsound
    _pyio idlelib signal winxpgui
    _random idlever singletonmixin winxptheme
    _sha ihooks site wsgiref
    _sha256 image smtpd wx
    _sha512 imageop smtplib wxPython
    _socket imaplib sndhdr wxversion
    _sqlite3 imghdr socket xdrlib
    _sre imp sprite xml
    _ssl importlib sqlite3 xmllib
    _strptime imputil sre xmlrpclib
    _struct info sre_compile xxsubtype
    _subprocess inspect sre_constants zipfile
    _symtable io sre_parse zipimport
    _testcapi isapi ssl zlib

    Enter any module name to get more help. Or, type "modules spam" to search
    for modules whose descriptions contain the word "spam".

    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "Q:\Python27\lib\site.py", line 453, in __call__
        return pydoc.help(*args, **kwds)
      File "Q:\Python27\lib\pydoc.py", line 1723, in __call__
        self.interact()
      File "Q:\Python27\lib\pydoc.py", line 1735, in interact
        request = self.getline('help> ')
      File "Q:\Python27\lib\pydoc.py", line 1746, in getline
        return raw_input(prompt)
      File "Q:\Python27\Lib\site-packages\pythonwin\pywin\framework\app.py", line 367, in Win32RawInput
        ret=dialog.GetSimpleInput(prompt)
      File "Q:\Python27\Lib\site-packages\pythonwin\pywin\mfc\dialog.py", line 223, in GetSimpleInput
        if title is None: title=win32ui.GetMainFrame().GetWindowText()
    error: The frame does not exist

    #----------------------------------------------------------------------
    Then after doing anything in PyCrust it crashes

    #######################################################################
    #######################################################################
    #######################################################################

    @devplayer devplayer mannequin added topic-IDLE type-crash A hard crash of the interpreter, possibly with a core dump labels Oct 10, 2010
    @bitdancer
    Copy link
    Member

    There isn't much that Python can do if there is a sufficiently broken C-based module in sys.path. All you report about the problematic module is that it is 'bad' or 'corrupt'. Can you give more information about what makes it bad?

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Oct 11, 2010

    I believe that a 3rd party package is corrupt. Whether it is or not I don't know. However whether or not a package is corrupt or not is not what I am reporting as a bug.

    I am reporting that python.exe crashes when I do help() modules.

    In GUI wrappers around python.exe, such as idle and pycrust, I get more information to the problem then when just in python.exe command line interpreter. As per the first post the errors I get in pycrust and idle are:
    ...
    File "Q:\Python27\Lib\site-packages\pythonwin\pywin\framework\app.py", line 367, in Win32RawInput
    ret=dialog.GetSimpleInput(prompt)
    File "Q:\Python27\Lib\site-packages\pythonwin\pywin\mfc\dialog.py", line 223, in GetSimpleInput
    if title is None: title=win32ui.GetMainFrame().GetWindowText()
    error: The frame does not exist

    To be honest the meaning of these errors is beyond my expertise, or lack of thereof. I attempted to give as much info on what I experienced with running python.exe help() modules as I saw.

    If there is a direction you can point me to that I can gather more information then what I've already given, I'll give that a go as well.

    Other pointers to reported problems of a similar nature:
    http://mail.python.org/pipermail/pythonmac-sig/2008-November/020712.html
    https://bugs.launchpad.net/ubuntu/+source/python2.5/+bug/137210

    Again this is not a report of a corrupt package.

    It is a report of python.exe crashing using commands considered part of Python.exe; that being help() then modules.

    An external library may be the cause or may not. But if it is an external library that is corrupt I would hope python.exe would not fail because of it, but instead just either ignore the package or report an error. Another reason why I think python.exe shouldn't crash because of external library integrity is what if there is a file or some such thing in one's Python path that looks like and smells like a Python module/package but isn't? Should python.exe fail because of such a file?

    I do not know the structure of a Python package or whether pythonwin on my PC is corrupt. However I imaging that if a fake package can be made so that IT is corrupt (perhaps make a missing file) that testing would be relatively easy.

    Sorry I don't have more information for you. But hearing from others who have tried their python.exe help() modules works or fails would be a start.

    @bitdancer
    Copy link
    Member

    What I am saying is that if an extension module (one that provides non-python code in a load module) is corrupt, then it can totally screw up Python's internal bookkeeping, and there is nothing Python can do to protect itself against that.

    If the "corrupt" module in question is pure Python, then you are correct, 'help' should not fail. If, however, the corrupt module is not pure Python, then there may be nothing that can be done by Python to prevent the failure.

    Can you reproduce the problem using a pure Python 'corrupt' module?

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Oct 12, 2010

    On Mon, Oct 11, 2010 at 1:43 PM, R. David Murray <report@bugs.python.org>wrote:
    R. David Murray <rdmurray@bitdance.com> added the comment:
    Can you reproduce the problem using a pure Python 'corrupt' module?
    ----------

    When in python.exe, and you type help() then modules, aren't you really
    asking for packages?
    I don't know how to make a package let alone a corrupt one.

    If help() modules is in fact looking for just a Python module file with
    extension _.py in lib\site-packages I don't know what Python help() modules
    looks for in that source code _.py file to be considered a module worth
    reporting back to the user. Certain module attributes?

    I do not know enough atm about how PythonWin is packaged. I'll look into it
    but I'm a newbie here and hopes for well informed facts on PythonWin may be
    ... well leave it at that.

    Perhaps an idea here too: If python.exe help() modules crashes when it
    passes control to a module or package that is not pure Python (source code
    or byte code) but some kind of C SWIG thing, then perhaps to make python.exe
    more robust it should simulate what idle does, as idle does not crash and it
    reports error when finished with calling python.exe help() modules.

    In other words, perhaps the Python interpreter can call an external routine
    (another program) that behaves like help() modules, perhaps using something
    like os.system() or subprocess.Popen(). Call it help.py or help.exe or
    something. If help.exe returns, all is good. If help crashes just like
    Python did at least Python can handle the crashing of help.exe gracefully.
    This idea is purely with the interest to make python.exe more robust.

    @terryjreedy
    Copy link
    Member

    The unnamed quasi-html file loaded with msg118397 was a unless, essentially unreadable duplicate of that message, hence removed.

    @merwok
    Copy link
    Member

    merwok commented Oct 21, 2010

    There are half a dozen duplicate bugs of this one, with various suggestions on each. They should be summed up and linked. I should be able to do it this week-end if no-one does it first.

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Oct 30, 2010

    Another thing I've noticed that makes the issue more complicated (or perhaps less complicated depending on your view).

    When running the python.exe at the DOS prompt (in a window on WinXP), then issuing the help() then modules commands, python.exe seems to hang at times, when it doesn't crash. However this apparent hang sometimes seems to be related to the attached "help" child window/dialog popup instantating with "focus" behind the DOS window. This popup with the focus (and behind it's parent window and being modal) prevents the mouse from moving the DOS window (holding the running python.exe) from being moved. The -sometimes- solution to this "apparent" hang is ALT-TAB back to the DOS window which will put the help-modal-dialog on top of said DOS window (which is running Python).

    @terryjreedy
    Copy link
    Member

    Éric, go ahead and consolidate to one issue if you can get to it.
    Do the other issues shows problems with 3.1 or 3.2 also? I wonder because I have never seen the box in the posted .png and wonder if that is a new 'feature' with 2.7 and possibly 3.2 that was not in 3.1 and possibly the cause. Has anyone posted a 'corrupt module' that reliably reproduces the problem? It is hard to investigate when 'help> modules' works just fine, as it does on my 3.1.2 install.

    'Dev': your original post is way too long. The welcome message and module lists could have been snipped to one line plus ellipsis. Example:

    >> help()

    Welcome ....
    [snip]

    help> modules

    Please wait....
    [snip]

    and continue with traceback.

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Jan 3, 2011

    import win32ui
    from win32ui import GetMainFrame
    
    dir(win32ui.GetMainFrame)
    ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
    
    dir(GetMainFrame)
    ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

    Is this normal? I'd expect at least GetWindowText() in the dir().

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Jan 3, 2011

    from GetMainFrame import GetWindowText
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    ImportError: No module named GetMainFrame

    Also, I installed from the MS-Windows installer file:
    pywin32-214.win32-py2.7.exe

    not from "pywin32-214.zip" which I think is the source distrobution.

    I've tried reinstallation but I get the same results.

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Jan 3, 2011

    Oh I am running on an Intel Pentium 4 3.2GHz/3.2Ghz.
    Windows XP Pro SP3 32 bit
    So I presume I should not have used the AMD 64 versions of course.

    http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/

    @bitdancer
    Copy link
    Member

    Dev: I have no idea how what you just posted relates to the subject of this issue. Could you clarify please?

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Jan 3, 2011

    It was suggested that a corrupt package would be where I'm experiencing the
    lockup or crash of python.exe when issuing help() and then "modules". And
    that if I or someone could verify that a corrupt package has this effect by
    creating a corrupt package. I have not figured out how to make a package let
    a lone a corrupt one. I think the following traceback points to my pywin32
    being corrupt. Although I've downloaded that package from sourceforge more
    then twice and reinstalled that package.

    I included the information in the previous posts in case it helps in the
    following mannger;
    I expect others here in this forum are likely to have pywin32 version 214
    installed. They could compare what I get from the traceback (returned when
    using help() modules) the "dir(win32ui.GetMainFrame)" with what they have.
    So that if they get something different with their dir(win32ui.GetmainFrame)
    then we at least are more sure of where this issue is occuring.

    Why does python.exe help() fail when an object, in this case win32ui, in the
    traceback does not have a certain attribute, GetMainframe?

    The dir() outputs in my previous posts show an object pywin32 package
    doesn't have all the expected member attributes. It calls
    win32ui.GetMainFrame.GetWindowText() method which doesn't exist.

    Why would help() fail on that?
    I'm no expert but I figured the information could help point someone in the
    right direction.

    BTW I've created a ticket in the pywin32 at sourceforge.net. - Because I
    only suspect it's a corrupt package, I'm not sure and thought others there
    would be able to tell me if it's the distro file or my installation.

    Traceback reprinted:

    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "Q:\Python27\lib\site.py", line 453, in __call__
        return pydoc.help(*args, **kwds)
      File "Q:\Python27\lib\pydoc.py", line 1723, in __call__
        self.interact()
      File "Q:\Python27\lib\pydoc.py", line 1735, in interact
        request = self.getline('help> ')
      File "Q:\Python27\lib\pydoc.py", line 1746, in getline
        return raw_input(prompt)
      File "Q:\Python27\Lib\site-packages\pythonwin\pywin\framework\app.py",
    line 367, in Win32RawInput
        ret=dialog.GetSimpleInput(prompt)
      File "Q:\Python27\Lib\site-packages\pythonwin\pywin\mfc\dialog.py", line
    223, in GetSimpleInput
        if title is None: title=win32ui.GetMainFrame().GetWindowText()
    error: The frame does not exist

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Apr 27, 2011

    mhammond added a recent note at:

    python.exe help() modules crashes - ID: 3150027
    https://sourceforge.net/tracker/?func=detail&aid=3150027&group_id=78018&atid=551954

    Scroll down below the detail and click the "Comments" link. View the note from mhammond's on 4/24/2011.

    Although this note will likely solve my particular problem, I suspect it does not directly solve "any corrput package" that would cause "python.exe" "help()" "modules" to crash or "appear to crash" (i.e. the modal popup appearing behind it's parent window).

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Apr 27, 2011

    What about this application modal popup window appearing behind the DOS window? (See attached) That popup window may only need to have a system style flag to push it to the top of the window z-order stack.

    What causes that popup to appear? Is it Python source code or compiled C code built into python.exe?

    There is a MS-Windows win32 function called SetForegroundWindow() that may be the issue if it's not Python source code.
    Maybe this URL might shed some light on the popup issue?

    http://stackoverflow.com/questions/3772233/win32-setforegroundwindow-unreliable

    I am grasping for straws here.

    Perhaps the python.exe app crashes in the cmd.exe window because of attempts to do something with the cmd.exe window while the app modal popup windows is behind it?

    As per my previous post is seems mhammond has a solution for his pythonwin package causing python.exe-help()-modules to crash. (If that's the case) it still doesn't address "other" packages having the same ability to crash python.exe, IDLE and other interactive interpreters thru help()-modules.

    @devplayer
    Copy link
    Mannequin Author

    devplayer mannequin commented Apr 27, 2011

    Just delete the previous message... please.

    @terryjreedy
    Copy link
    Member

    (Note: the word is 'separate', 2 e's and 2 a's, not 'seperate')
    (Note: We already know that using unbound unquoted names does not work. Please do not waste our time telling us the obvious.)
    (Note: I am removing IDLE because this does not seem to be an IDLE issue but a help() issue. I marked 'Library' because 'help' is installed by the site module.)

    Help is not built in to python.exe. It is added to builtins when the site module is imported. That import can be suppressed with the '-S' startup option. It is strictly intended for interactive use.

    I do not see this as much of a security issue. Crashing apps and especially servers should not be an issue because neither should be using help. Anyway, I should think that a hacker that can install a broken C extension could do much worse things.

    Help has three modes.

    1. the direct response mode of help(ob)
    2. the direct response mode of help(somestring), where help looks to see if it recognizes somestring before returning help for str.
      help('modules') works fine.
    3. the mini-interpreter mode of help(). People can run the mini-interpreter in a separate interactive instance of the interpreter if they wish. I do not think this needs to be done automatically.

    I am inclined to close this issue as I do not see any action needed by Cpython developers. Contrary to your assertion, running corrupt C-coded extensions *does* crash the process, and I do not think there is much we can do about it, as C lacks try:...except:. Certainly, there is no promise to guard against such. In my view, removing a corrupt package is an answer, not a workaround!

    @terryjreedy terryjreedy added stdlib Python modules in the Lib dir and removed topic-IDLE labels Apr 27, 2011
    @terryjreedy
    Copy link
    Member

    This issue still seems to be about bad extension modules crashing CPython and we cannot fix that.

    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    stdlib Python modules in the Lib dir type-crash A hard crash of the interpreter, possibly with a core dump
    Projects
    None yet
    Development

    No branches or pull requests

    4 participants