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

[2.7] test_tk: test_use() of test_tkinter.test_widgets randomly fails with "integer value too large to represent" on with AMD64 Windows8 3.5 #75038

Closed
vstinner opened this issue Jul 5, 2017 · 34 comments

Comments

@vstinner
Copy link
Member

vstinner commented Jul 5, 2017

BPO 30855
Nosy @terryjreedy, @pfmoore, @vstinner, @tjguk, @zware, @serhiy-storchaka, @zooba
PRs
  • [3.5] bpo-30855: Trying to fix test_use on Windows. #2585
  • [2.7] bpo-30855: Trying to fix test_use on Windows. #2586
  • bpo-30855: Fix winfo_id related Tkinter test on Windows. #4121
  • bpo-30855: Bump Tcl/Tk #4550
  • 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/zware'
    closed_at = <Date 2018-01-05.20:59:17.337>
    created_at = <Date 2017-07-05.12:18:47.605>
    labels = ['expert-tkinter', 'OS-windows']
    title = '[2.7] test_tk: test_use() of test_tkinter.test_widgets randomly fails with "integer value too large to represent" on with AMD64 Windows8 3.5'
    updated_at = <Date 2018-01-05.23:33:44.358>
    user = 'https://github.com/vstinner'

    bugs.python.org fields:

    activity = <Date 2018-01-05.23:33:44.358>
    actor = 'vstinner'
    assignee = 'zach.ware'
    closed = True
    closed_date = <Date 2018-01-05.20:59:17.337>
    closer = 'zach.ware'
    components = ['Tkinter', 'Windows']
    creation = <Date 2017-07-05.12:18:47.605>
    creator = 'vstinner'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 30855
    keywords = ['patch']
    message_count = 34.0
    messages = ['297727', '297728', '297729', '297730', '297731', '297737', '297754', '297757', '297815', '297819', '299839', '299840', '300135', '302022', '304968', '305010', '305011', '305029', '305916', '305919', '306156', '306575', '306576', '306578', '306683', '307012', '307020', '307040', '307042', '307044', '309525', '309526', '309527', '309531']
    nosy_count = 7.0
    nosy_names = ['terry.reedy', 'paul.moore', 'vstinner', 'tim.golden', 'zach.ware', 'serhiy.storchaka', 'steve.dower']
    pr_nums = ['2585', '2586', '4121', '4550']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = None
    url = 'https://bugs.python.org/issue30855'
    versions = ['Python 2.7']

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    http://buildbot.python.org/all/builders/AMD64%20Windows8%203.5/builds/323/steps/test/logs/stdio

    ======================================================================
    ERROR: test_use (tkinter.test.test_tkinter.test_widgets.ToplevelTest)
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "D:\buildarea\3.5.bolen-windows8\build\lib\tkinter\test\test_tkinter\test_widgets.py", line 95, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\3.5.bolen-windows8\build\lib\tkinter\test\test_tkinter\test_widgets.py", line 70, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\3.5.bolen-windows8\build\lib\tkinter\__init__.py", line 2191, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\3.5.bolen-windows8\build\lib\tkinter\__init__.py", line 2148, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    _tkinter.TclError: integer value too large to represent

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    This bug looks similar to bpo-25263.

    @vstinner vstinner changed the title test_use() of test_tkinter.test_widgets randomly fails with "integer value too large to represent" on with AMD64 Windows8 3.5 [3.5] test_tk: test_use() of test_tkinter.test_widgets randomly fails with "integer value too large to represent" on with AMD64 Windows8 3.5 Jul 5, 2017
    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    The compile step mentions Tk version 8.6.4.2:

    "tk-8.6.4.2 already exists, skipping."

    http://buildbot.python.org/all/builders/AMD64%20Windows8%203.5/builds/323/steps/compile/logs/stdio

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    It seems like the test never fails on 3.6, while 3.6 contains the fix b9d6724. Let's try to backport this change to 3.5 and 2.7 branches.

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    See also bpo-16840.

    @serhiy-storchaka
    Copy link
    Member

    Thank you for backporting the fix. Seems I just forgot about this.

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    Serhiy Storchaka added the comment:

    Thank you for backporting the fix. Seems I just forgot about this.

    The bug wasn't notice before since test_tk fails once, but then pass
    when run again... It fails randomly. But I noticed a warning on a
    build, and so saw the bug. More stable buildbots should help to catch
    more random bugs.

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 5, 2017

    New changeset c48a000 by Victor Stinner in branch '3.5':
    [3.5] bpo-30855: Trying to fix test_use on Windows. (bpo-2585)
    c48a000

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 6, 2017

    New changeset f6d6480 by Victor Stinner in branch '2.7':
    [2.7] bpo-30855: Trying to fix test_use on Windows. (bpo-2586)
    f6d6480

    @vstinner
    Copy link
    Member Author

    vstinner commented Jul 6, 2017

    I backported fixes to 2.7 and 3.5 branches. The test fails randomly, so I close the issue and hope that it doesn't come back.

    If it comes back on 3.5, we should now get the identifier which caused the failure. I will reopen the issue if the bug occurs again.

    @vstinner vstinner closed this as completed Jul 6, 2017
    @vstinner
    Copy link
    Member Author

    vstinner commented Aug 7, 2017

    The test failed on "AMD64 Windows8.1 Refleaks 2.7" buildbot:

    http://buildbot.python.org/all/builders/AMD64%20Windows8.1%20Refleaks%202.7/builds/60/steps/test/logs/stdio

    test_padx (test_tkinter.test_widgets.ToplevelTest) ... ok
    test_pady (test_tkinter.test_widgets.ToplevelTest) ... ok
    test_relief (test_tkinter.test_widgets.ToplevelTest) ... ok
    test_screen (test_tkinter.test_widgets.ToplevelTest) ... skipped 'No $DISPLAY set.'
    test_takefocus (test_tkinter.test_widgets.ToplevelTest) ... ok
    test_use (test_tkinter.test_widgets.ToplevelTest) ... ERROR
    test_visual (test_tkinter.test_widgets.ToplevelTest) ... ok
    test_width (test_tkinter.test_widgets.ToplevelTest) ... test test_tk failed -- Traceback (most recent call last):
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 92, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: expected integer but got "0xffffffff92b20298L"

    ok

    ======================================================================
    ERROR: test_use (test_tkinter.test_widgets.ToplevelTest)
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 92, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: expected integer but got "0xffffffff92b20298L"

    @vstinner vstinner reopened this Aug 7, 2017
    @vstinner
    Copy link
    Member Author

    vstinner commented Aug 7, 2017

    Oh, the test also failed on Python 3.5 (on "AMD64 Windows8.1 Refleaks 3.5" buildbot):

    http://buildbot.python.org/all/builders/AMD64%20Windows8.1%20Refleaks%203.5/builds/62/steps/test/logs/stdio

    ======================================================================
    ERROR: test_use (tkinter.test.test_tkinter.test_widgets.ToplevelTest) (wid='0xffffffff87a60298')
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "D:\buildarea\3.5.ware-win81-release.refleak\build\lib\tkinter\test\test_tkinter\test_widgets.py", line 96, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\3.5.ware-win81-release.refleak\build\lib\tkinter\test\test_tkinter\test_widgets.py", line 70, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\3.5.ware-win81-release.refleak\build\lib\tkinter\__init__.py", line 2190, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\3.5.ware-win81-release.refleak\build\lib\tkinter\__init__.py", line 2147, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    _tkinter.TclError: integer value too large to represent

    @vstinner
    Copy link
    Member Author

    Change the Python version to 2.7 only, since Python 3.5 doesn't accept bug fixes anymore (only security fixes).

    @vstinner vstinner changed the title [3.5] test_tk: test_use() of test_tkinter.test_widgets randomly fails with "integer value too large to represent" on with AMD64 Windows8 3.5 [2.7] test_tk: test_use() of test_tkinter.test_widgets randomly fails with "integer value too large to represent" on with AMD64 Windows8 3.5 Aug 10, 2017
    @vstinner
    Copy link
    Member Author

    I didn't see this failure since one month on the 2.7 buildbots. While I fear that the bug still exists, I close it to clean up my list of open issues. I will reopen the issue if the bug strikes back!

    @vstinner
    Copy link
    Member Author

    Too bad, the bug is not dead:

    http://buildbot.python.org/all/#/builders/45/builds/14

    test_use (test_tkinter.test_widgets.ToplevelTest) ... ERROR
    test_visual (test_tkinter.test_widgets.ToplevelTest) ... ok
    test test_tk failed -- Traceback (most recent call last):
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 92, in test_use
        widget2 = self.create(use=wid)
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: expected integer but got "0x8e5c00d6L"
    test_width (test_tkinter.test_widgets.ToplevelTest) ... ok

    ======================================================================
    ERROR: test_use (test_tkinter.test_widgets.ToplevelTest)
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 92, in test_use
        widget2 = self.create(use=wid)
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "d:\cygwin\home\db3l\buildarea\2.7.bolen-windows\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: expected integer but got "0x8e5c00d6L"

    @vstinner vstinner reopened this Oct 25, 2017
    @serhiy-storchaka
    Copy link
    Member

    In Python 2 hex() adds the 'L' suffix for longs.

    @serhiy-storchaka
    Copy link
    Member

    New changeset 7c622be by Serhiy Storchaka in branch '2.7':
    bpo-30855: Fix winfo_id related Tkinter test on Windows. (bpo-4121)
    7c622be

    @vstinner
    Copy link
    Member Author

    Oh thank you Serhiy for the fix, this random bug was annoying!

    @vstinner
    Copy link
    Member Author

    vstinner commented Nov 8, 2017

    Hum, test_use() still fails (commit fbdd3ee) on AMD64 Windows8.1 Refleaks 2.7. I reopen the issue.

    http://buildbot.python.org/all/#/builders/33/builds/21

    ======================================================================
    ERROR: test_use (test_tkinter.test_widgets.ToplevelTest)
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 93, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: integer value too large to represent

    @vstinner vstinner reopened this Nov 8, 2017
    @vstinner
    Copy link
    Member Author

    vstinner commented Nov 8, 2017

    Hum, test_use() still fails (commit fbdd3ee) on AMD64 Windows8.1 Refleaks 2.7. I reopen the issue.

    I'm not 100% sure that this build really tested the commit fbdd3ee. We had an issue on the buildbot, the 2.7 builder was disabled.

    @vstinner
    Copy link
    Member Author

    Same buildbot, same bug: AMD64 Windows8.1 Refleaks 2.7

    http://buildbot.python.org/all/#/builders/33/builds/26

    ======================================================================
    ERROR: test_use (test_tkinter.test_widgets.ToplevelTest)
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 93, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\2.7.ware-win81-release.refleak\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: integer value too large to represent

    @serhiy-storchaka serhiy-storchaka self-assigned this Nov 13, 2017
    @serhiy-storchaka
    Copy link
    Member

    Ah, this is Cygwin!

    This is a Tk bug (https://core.tcl.tk/tk/tktview?name=5ee8af61e5ef8e233158a43459624f4ecf58a6fe). It was fixed, but not completely. The fix doesn't work on Cygwin.

    @zware
    Copy link
    Member

    zware commented Nov 20, 2017

    Ah, this is Cygwin!

    Hmm, no; Cygwin isn't installed on ware-win81-release.

    When was the fix made? 2.7 on Windows currently uses 8.5.15, we can bump it up to latest 8.5 if that will help.

    @serhiy-storchaka
    Copy link
    Member

    The fix was made 2015-11-09. The tag core-8-5-15 was created 2013-09-16.

    I'm not well experienced with fossil and thought that 8.5.15 contains this fix, but now I see that this is not true. Yes, updating Tcl/Tk can help.

    @zware
    Copy link
    Member

    zware commented Nov 21, 2017

    If you'd like to do that update, there are some instructions at https://github.com/python/cpython-source-deps. You can get AppVeyor to use dependencies from your fork of cpython-source-deps by adjusting 2.7/PCbuild/get_externals.bat:32 to point to your username temporarily.

    If you don't want to mess with it, I'll get to it sooner or later :)

    @zware
    Copy link
    Member

    zware commented Nov 26, 2017

    New changeset be1faab by Zachary Ware in branch '2.7':
    bpo-30855: Bump Tcl/Tk to 8.5.19 on Windows (GH-4550)
    be1faab

    @vstinner
    Copy link
    Member Author

    Cool, thanks Zach!

    @vstinner
    Copy link
    Member Author

    Bad news: the problem is not gone. Fail at commit 180372c (the commit after Zach's commit be1faab in the Python 2.7 branch):

    http://buildbot.python.org/all/#/builders/70/builds/28

    test_use (test_tkinter.test_widgets.ToplevelTest) ... ERROR
    test_visual (test_tkinter.test_widgets.ToplevelTest) ... ok
    test test_tk failed -- Traceback (most recent call last):
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 93, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: integer value too large to represent
    test_width (test_tkinter.test_widgets.ToplevelTest) ... ok

    ======================================================================
    ERROR: test_use (test_tkinter.test_widgets.ToplevelTest)
    ----------------------------------------------------------------------

    Traceback (most recent call last):
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 93, in test_use
        widget2 = self.create(use=wid)
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\test\test_tkinter\test_widgets.py", line 67, in create
        return tkinter.Toplevel(self.root, **kwargs)
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\Tkinter.py", line 2138, in __init__
        BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
      File "D:\buildarea\2.7.ware-win81-release\build\lib\lib-tk\Tkinter.py", line 2095, in __init__
        (widgetName, self._w) + extra + self._options(cnf))
    TclError: integer value too large to represent

    @serhiy-storchaka
    Copy link
    Member

    It still uses Tcl/Tk 8.5.15.

    @vstinner
    Copy link
    Member Author

    Serhiy: "It still uses Tcl/Tk 8.5.15."

    pythoninfo says:
    ---
    tkinter.TCL_VERSION: 8.5
    tkinter.TK_VERSION: 8.5
    tkinter.info_patchlevel: 8.5.15
    ---

    The compilation says:
    ---
    Fetching external libraries...
    (...)
    tcl-8.5.19.0 already exists, skipping.
    tk-8.5.19.0 already exists, skipping.
    tix-8.4.3.5 already exists, skipping.
    (...)
    Project "D:\buildarea\2.7.ware-win81-release\build\PCbuild\_tkinter.vcxproj" (24) is building "D:\buildarea\2.7.ware-win81-release\build\PCbuild\tcl.vcxproj" (25) on node 1 (default targets).
    (...)
    cd /D "D:\buildarea\2.7.ware-win81-release\build\externals\tcl-8.5.19.0\win"
    nmake -f makefile.vc MACHINE=AMD64 OPTS= INSTALLDIR="D:\buildarea\2.7.ware-win81-release\build\externals\tcltk64" INSTALL_DIR="D:\buildarea\2.7.ware-win81-release\build\externals\tcltk64" core shell dlls
    nmake -f makefile.vc MACHINE=AMD64 OPTS= INSTALLDIR="D:\buildarea\2.7.ware-win81-release\build\externals\tcltk64" INSTALL_DIR="D:\buildarea\2.7.ware-win81-release\build\externals\tcltk64"
    ---

    @zware
    Copy link
    Member

    zware commented Jan 5, 2018

    I manually cleared externals\tcltk64 on that bot some time ago, and it appears to be happy now.

    @serhiy-storchaka
    Copy link
    Member

    Thank you Zachary! Can this issue be closed now?

    @zware
    Copy link
    Member

    zware commented Jan 5, 2018

    I think so :)

    @zware zware closed this as completed Jan 5, 2018
    @vstinner
    Copy link
    Member Author

    vstinner commented Jan 5, 2018

    Awesome, thanks!

    @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
    Projects
    None yet
    Development

    No branches or pull requests

    3 participants