classification
Title: Change _tkinter initialization for new versions of Aqua Tk on OS X
Type: Stage: patch review
Components: Tkinter Versions: Python 3.3, Python 3.4, Python 2.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: ronaldoussoren Nosy List: gpolo, ned.deily, r.david.murray, ronaldoussoren, vstinner
Priority: normal Keywords: patch

Created on 2009-01-31 21:25 by gpolo, last changed 2013-07-22 11:07 by ronaldoussoren.

Files
File name Uploaded Description Edit
oldtkaqua.diff gpolo, 2009-02-10 01:58 review
Messages (16)
msg80884 - (view) Author: Guilherme Polo (gpolo) * (Python committer) Date: 2009-01-31 21:25
For some reason the recently added test_ttk_guionly is causing Tcl to
abort on Mac. I would prefer to disable the test for now, except if some
mac owner has the time to fix it.

I would like to know the tcl version being used on the noller-osx86
buildslave too, if possible.
msg80887 - (view) Author: Guilherme Polo (gpolo) * (Python committer) Date: 2009-01-31 21:45
> For some reason the recently added test_ttk_guionly is causing Tcl to
> abort on Mac. I would prefer to disable the test for now, except if some
> mac owner has the time to fix it.

Just saw it didn't cause an abort with the buildslave heller-x86-osx5, btw.
msg80927 - (view) Author: Guilherme Polo (gpolo) * (Python committer) Date: 2009-02-02 01:55
It seems to be good now after a recent modification in how tests are
performed, closing. Sorry for the fuss.
msg81468 - (view) Author: Guilherme Polo (gpolo) * (Python committer) Date: 2009-02-09 18:46
The abort still happens occasionally, see:
http://www.python.org/dev/buildbot/all/OS%20X%20x86%20trunk/builds/118/step-test/0
(last lines)

I've talked with Daniel Steffen, who is one of the maintainers of Tcl/Tk
on Mac OSX, and I was told that all this conditional code in _tkinter.c
and tkappinit.c for TK_AQUA is outdated starting with tk 8.4.8, but tk
8.4.7 that ships with macosx (which happens to be the version being used
by the buildslave mentioned above) also includes the patch that
deprecates the usage, and we should be calling only Tk_Init on
tkappinit.c which will deal with all the details (the details are in
tkMacOSXInit:TkpInit).

There is an entry in tk's changelog that is directly related to this:
http://tktoolkit.cvs.sourceforge.net/viewvc/tktoolkit/tk/ChangeLog.2004?revision=1.1&view=markup
(lines 210-220)

Any chance I can change _tkinter and tkappinit to check for
TKINTER_OLD_AQUA (new macro to be added) instead of TK_AQUA and verify
if it helps the buildslaves ?
msg91464 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2009-08-10 22:45
To follow up your question posted on issue 6527 (sorry for the
duplicate), I don't currently have a mac to test on.  I might have
access to one in a couple weeks, though.
msg92924 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2009-09-21 09:34
I noticed this while investigating Issue6834. Is this still an open issue 
for OS X?  Could it explain the symptoms in 6834?
msg92925 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2009-09-21 09:35
Sorry, that should be Issue6864.
msg111071 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-07-21 14:43
Is this still a problem on OS X?
msg111170 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2010-07-22 12:31
Mark: maybe, why don't you test this?
msg111266 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2010-07-23 10:24
This is still an issue for the PPC Tiger buildbot:

test_ttk_guionly
make: *** [buildbottest] Segmentation fault

(Direct link: http://www.python.org/dev/buildbot/builders/PPC%20Tiger%202.7/builds/39/steps/test/logs/stdio)
msg119318 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2010-10-21 16:48
Presumably this is the same issue 8716.  That issue contains additional details and a patch from Ronald, so I'm not closing it as a duplicate.  

I don't know if the patch on this issue would actually address the issue.  I tried to apply it to py3k but it did not apply cleanly.
msg133000 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-04-05 00:52
Recent crash on "PPC Tiger 3.x":
----------------
[188/354] test_ttk_guionly
Fatal Python error: Segmentation fault

Traceback (most recent call first):
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/tkinter/ttk.py", line 47 in _load_tile
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/tkinter/ttk.py", line 559 in __init__
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/tkinter/ttk.py", line 614 in __init__
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/test_ttk_guionly.py", line 14 in <module>
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/importlib/_bootstrap.py", line 342 in _load_module
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/importlib/_bootstrap.py", line 141 in decorated
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/importlib/_bootstrap.py", line 437 in load_module
  File "./Lib/test/regrtest.py", line 1025 in runtest_inner
  File "./Lib/test/regrtest.py", line 826 in runtest
  File "./Lib/test/regrtest.py", line 650 in main
  File "./Lib/test/regrtest.py", line 1607 in <module>
make: *** [buildbottest] Segmentation fault
program finished with exit code 2
elapsedTime=1656.072954
----------------
http://www.python.org/dev/buildbot/all/builders/PPC%20Tiger%203.x/builds/1701/steps/test/logs/stdio
msg133001 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-04-05 00:59
ttk_guionly creates a button (ttk.Button()) which calls _load_tile(), which crashs on: master.tk.eval('package require tile')

Code of the function:
-------------------------
def _load_tile(master):
    if _REQUIRE_TILE:
        import os
        tilelib = os.environ.get('TILE_LIBRARY')
        if tilelib:
            # append custom tile path to the the list of directories that
            # Tcl uses when attempting to resolve packages with the package
            # command
            master.tk.eval(
                    'global auto_path; '
                    'lappend auto_path {%s}' % tilelib)

        master.tk.eval('package require tile') # TclError may be raised here
        master._tile_loaded = True
-------------------------
msg139517 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-06-30 19:53
Still crashing on "PPC Tiger 3.x" buildbot:
----------------
...
[333/356/2] test_ttk_guionly
Fatal Python error: Segmentation fault

Current thread 0xa000ed88:
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/tkinter/ttk.py", line 47 in _load_tile
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/tkinter/ttk.py", line 559 in __init__
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/tkinter/ttk.py", line 614 in __init__
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/test/test_ttk_guionly.py", line 14 in <module>
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/importlib/_bootstrap.py", line 342 in _load_module
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/importlib/_bootstrap.py", line 141 in decorated
  File "/Users/buildbot/buildarea/3.x.parc-tiger-1/build/Lib/importlib/_bootstrap.py", line 437 in load_module
  File "./Lib/test/regrtest.py", line 1063 in runtest_inner
  File "./Lib/test/regrtest.py", line 861 in runtest
  File "./Lib/test/regrtest.py", line 669 in main
  File "./Lib/test/regrtest.py", line 1648 in <module>
make: *** [buildbottest] Segmentation fault
----------------

http://www.python.org/dev/buildbot/all/builders/PPC%20Tiger%203.x/builds/2109/steps/test/logs/stdio

Can anyone with a Mac look at this issue?
msg139530 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2011-06-30 22:22
See comments to Issue8716. Suggest any further comments on the "headless" crash issue go there and reserve this issue for investigation into the suggested changes to initialization when using Aqua Tk.  BTW, the supplied patch has compile time Tk version tests which can be problematic since Aqua Tk is dynamically linked and so the exact patch version cannot be determined at compile time.  However, since 8.4.7 is the earliest version we claim to support we could probably dispense with the check, assuming the change is warranted.
msg193528 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2013-07-22 11:07
As mentioned by Ned this is a duplicate of #8716. 

The proposed change to tkinter initialization in msg81468 might be useful to look into, but I'm not interested in doing that work because I don't use Tkinter myself which makes it harder to test if the change actually helps.

FWIW, the patch looks sane for what it is trying to accomplish.

NOTE: If the Tk version in OSX 10.4 is new enough to not need the workaround that will be disabled by the TKINTER_OLD_AQUA in the patch we could just drop the code.
History
Date User Action Args
2013-07-22 11:07:51ronaldoussorensetmessages: + msg193528
versions: + Python 3.4, - Python 3.2
2011-06-30 22:22:44ned.deilysetnosy: - BreamoreBoy
title: Disabling test_ttk_guionly on mac -> Change _tkinter initialization for new versions of Aqua Tk on OS X
messages: + msg139530

versions: + Python 3.2, Python 3.3, - Python 3.1
type: crash ->
2011-06-30 19:53:35vstinnersetmessages: + msg139517
2011-04-05 00:59:05vstinnersetmessages: + msg133001
2011-04-05 00:52:20vstinnersetnosy: + vstinner
messages: + msg133000
2010-10-21 16:48:09r.david.murraysetmessages: + msg119318
2010-07-23 10:24:54ronaldoussorensetmessages: + msg111266
2010-07-22 12:31:17ronaldoussorensetassignee: ronaldoussoren
messages: + msg111170
2010-07-21 14:43:13BreamoreBoysetnosy: + BreamoreBoy
messages: + msg111071
2009-09-21 09:35:44ned.deilysetmessages: + msg92925
2009-09-21 09:34:15ned.deilysetnosy: + ronaldoussoren, ned.deily
messages: + msg92924
2009-08-10 22:45:54r.david.murraysetpriority: normal

nosy: + r.david.murray
messages: + msg91464

stage: patch review
2009-02-10 01:58:20gpolosetfiles: + oldtkaqua.diff
keywords: + patch
2009-02-09 18:46:31gpolosetstatus: closed -> open
messages: + msg81468
2009-02-02 01:55:24gpolosetstatus: open -> closed
messages: + msg80927
2009-01-31 21:45:32gpolosetmessages: + msg80887
2009-01-31 21:25:49gpolocreate