Author ronaldoussoren
Recipients ned.deily, ronaldoussoren, szellmeyer
Date 2013-07-07.10:29:42
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1373192983.22.0.884399802339.issue16023@psf.upfronthosting.co.za>
In-reply-to
Content
Interestingly enough it seems to hang while handling an import error, when  I break executation and look at the stack trace I see (amongst others):


#5  0x00000001000b11f1 in import_all_from [inlined] () at /Users/ronald/Projects/python/rw/default/Python/ceval.c:4614
4614	            PyErr_SetString(PyExc_ImportError,
(gdb) l
4609	        PyErr_Clear();
4610	        dict = _PyObject_GetAttrId(v, &PyId___dict__);
4611	        if (dict == NULL) {
4612	            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
4613	                return -1;
4614	            PyErr_SetString(PyExc_ImportError,
4615	            "from-import-* object has no __dict__ and no __all__");
4616	            return -1;
4617	        }
4618	        all = PyMapping_Keys(dict);
(gdb) 


This is with an optimized build, the debugger isn't as useful as I'd like and some information seem suspect (such as a frame object with an obviously invalid value for f_code.

This is probably a red herring, I haven't been able to reproduce this particular problem with a debug build.

In the production build I got a (non-functional) popup for entering some information, in the debug build I don't even get that and the proces hangs in CFRunLoopRunSpecific (called by Tk). And that's due to a call to "tkwait window ..." (aka the "wait_window" method from tkinter.Misc).

Debugging is slightly annoying because 'pyo' from the gdb macros works, but the printing a python stack trace does not.

The call is eventually traceable to calling simpledialog.askinteger in EditorWindow.tabify_region_event (through _asktabwidth) and is likely a bug where TkCocoa doesn't like callbacks into Tk from an event handler (IIRC we've had those before)

A quick hack to test this theorie is to redefine tabify_region_event:

    def tabify_region_event(self, event):
        self.after(200, lambda: self._tabify_region_event(event))

    def _tabify_region_event(self, event):
        # original method


This doesn't actually help, IDLE still hangs and my theory is likely wrong.

The easiest workaround is likely to give up for now and disable the ^5 and ^6 shortcuts (as well as ^3 and ^4 as those don't crash but don't do anything either, while the menu entries do work).

Annoyingly other commands in the format menu work just fine (CTRL-T, CMD-], CMD-[)



(all of this with the tip of the default branch and a freshly installed copy of ActiveTcl 8.5 on OSX 10.8)
History
Date User Action Args
2013-07-07 10:29:43ronaldoussorensetrecipients: + ronaldoussoren, ned.deily, szellmeyer
2013-07-07 10:29:43ronaldoussorensetmessageid: <1373192983.22.0.884399802339.issue16023@psf.upfronthosting.co.za>
2013-07-07 10:29:43ronaldoussorenlinkissue16023 messages
2013-07-07 10:29:42ronaldoussorencreate