This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients vstinner
Date 2008-11-13.13:58:19
SpamBayes Score 1.1901395e-08
Marked as misclassified No
Message-id <1226584702.9.0.700784697651.issue4313@psf.upfronthosting.co.za>
In-reply-to
Content
The bug looks to be specific to Python3 but may comes from Tk and not 
directly from tkinter module. I recompiled Tk with debug symbols to get 
a better backtrace:
malformed bucket chain in Tcl_DeleteHashEntry

Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb7e178c0 (LWP 23520)]
0xb7fd1424 in __kernel_vsyscall ()
(gdb) where
#0  0xb7fd1424 in __kernel_vsyscall ()
#1  0xb7e43640 in raise () from /lib/i686/cmov/libc.so.6
#2  0xb7e45018 in abort () from /lib/i686/cmov/libc.so.6
#3  0xb78c2cff in Tcl_PanicVA () from /usr/lib/libtcl8.4.so.0
#4  0xb78c2d27 in Tcl_Panic () from /usr/lib/libtcl8.4.so.0
#5  0xb78a469d in Tcl_DeleteHashEntry () from /usr/lib/libtcl8.4.so.0
#6  0xb7922c33 in Tk_FreeColor (colorPtr=0x987cfb0)
    at /tmp/tk8.4-8.4.19/unix/../generic/tkColor.c:492
#7  0xb79166cd in Tk_Free3DBorder (border=0x985b830)
    at /tmp/tk8.4-8.4.19/unix/../generic/tk3d.c:440
#8  0xb7938a6e in Tk_FreeOptions (specs=0xb79df240, 
widgRec=0x986f9d8 "", display=0x9733c88,
    needFlags=0) 
at /tmp/tk8.4-8.4.19/unix/../generic/tkOldConfig.c:1039
#9  0xb79984bb in DestroyText (memPtr=0x986f9d8 "")
    at /tmp/tk8.4-8.4.19/unix/../generic/tkText.c:996
#10 0xb78ca115 in Tcl_EventuallyFree () from /usr/lib/libtcl8.4.so.0
#11 0xb7998bae in TextEventProc (clientData=0x986f9d8, 
eventPtr=0xbfcea6bc)
    at /tmp/tk8.4-8.4.19/unix/../generic/tkText.c:1270
#12 0xb7928026 in Tk_HandleEvent (eventPtr=0xbfcea6bc)
    at /tmp/tk8.4-8.4.19/unix/../generic/tkEvent.c:1037
#13 0xb7945c1c in Tk_DestroyWindow (tkwin=0x987d9b0)
    at /tmp/tk8.4-8.4.19/unix/../generic/tkWindow.c:1423
#14 0xb7920020 in Tk_DestroyObjCmd (clientData=0x9735210, 
interp=0x961ea80, objc=2,
    objv=0xbfcea910) at /tmp/tk8.4-8.4.19/unix/../generic/tkCmds.c:471
#15 0xb786e926 in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so.0
#16 0xb786eb79 in Tcl_EvalObjv () from /usr/lib/libtcl8.4.so.0
#17 0xb7b7cc0d in Tkapp_Call (selfptr=0xb7c97918, args=0xb6da1e4c)
    at /home/haypo/prog/py3k/Modules/_tkinter.c:1241
#18 0x0812121d in PyCFunction_Call (func=0xb7bfc6cc, arg=0xb6da1e4c, 
kw=0x0)
    at Objects/methodobject.c:81
#19 0x080942e4 in call_function (pp_stack=0xbfceab38, oparg=2) at 
Python/ceval.c:3398
#20 0x08091027 in PyEval_EvalFrameEx (f=0x9a4f6dc, throwflag=0) at 
Python/ceval.c:2205
(...)

And the Python backtrace:
(gdb) pystack
/home/haypo/prog/py3k/Lib/tkinter/__init__.py (1929): destroy
/home/haypo/prog/py3k/Lib/tkinter/__init__.py (1928): destroy
/home/haypo/prog/py3k/Lib/tkinter/__init__.py (1928): destroy
/home/haypo/prog/py3k/Lib/idlelib/WindowList.py (70): destroy
/home/haypo/prog/py3k/Lib/idlelib/EditorWindow.py (887): _close
/home/haypo/prog/py3k/Lib/idlelib/PyShell.py (260): _close
/home/haypo/prog/py3k/Lib/idlelib/FileList.py (41): open
/home/haypo/prog/py3k/Lib/idlelib/PyShell.py (1382): main
Tools/scripts/idle (5): <module>

So if I add the source code to the trace:
---------------------------------------------------------------
/home/haypo/prog/py3k/Lib/tkinter/__init__.py (1929): destroy
    def destroy(self):
        """Destroy this and all descendants widgets."""
        for c in list(self.children.values()): c.destroy()
        self.tk.call('destroy', self._w)
        if self._name in self.master.children: <~~~ HERE
            del self.master.children[self._name]
        Misc.destroy(self)

/home/haypo/prog/py3k/Lib/tkinter/__init__.py (1928): destroy
    def destroy(self):
        """Destroy this and all descendants widgets."""
        for c in list(self.children.values()): c.destroy()
        self.tk.call('destroy', self._w) <~~~ HERE
        if self._name in self.master.children:
            del self.master.children[self._name]
        Misc.destroy(self)

/home/haypo/prog/py3k/Lib/tkinter/__init__.py (1928): destroy
    def destroy(self):
        """Destroy this and all descendants widgets."""
        for c in list(self.children.values()): c.destroy()
        self.tk.call('destroy', self._w) <~~~ HERE
        if self._name in self.master.children:
            del self.master.children[self._name]
        Misc.destroy(self)

/home/haypo/prog/py3k/Lib/idlelib/WindowList.py (70): destroy
    def destroy(self):
        registry.delete(self)
        Toplevel.destroy(self)
        # If this is Idle's last window then quit the mainloop
        # (Needed for clean exit on Windows 98)
        if not registry.dict:   <~~~ HERE
            self.quit()

/home/haypo/prog/py3k/Lib/idlelib/EditorWindow.py (887): _close
    def _close(self):
        (...)
        self.per.close()
        self.per = None
        self.top.destroy()
        if self.close_hook:   <~~~ HERE
            # unless override: unregister from flist, terminate if last 
window
            self.close_hook()

(...)
---------------------------------------------------------------

Hum, the Python line numbers are maybe invalid.
History
Date User Action Args
2008-11-13 13:58:22vstinnersetrecipients: + vstinner
2008-11-13 13:58:22vstinnersetmessageid: <1226584702.9.0.700784697651.issue4313@psf.upfronthosting.co.za>
2008-11-13 13:58:22vstinnerlinkissue4313 messages
2008-11-13 13:58:19vstinnercreate