Tk Source Code

View Ticket
Login
Ticket UUID: 3573447
Title: [tk busy] causes crash on OS X/Cocoa
Type: Bug Version: obsolete: 8.6b3
Submitter: wordtech Created on: 2012-10-01 13:57:38
Subsystem: 66. Aqua Window Operations Assigned To: kevin_walzer
Priority: 7 High Severity: Minor
Status: Open Last Modified: 2015-06-30 02:37:52
Resolution: None Closed By: nobody
    Closed on:
Description:
Per a bug reported on c.l.t by Christian Gollwitzer, the following code eventually causes a lockup and segfault on Tk-Aqua trunk. "The crash is triggered by first pressing the button, after it has  'finished', selecting the entry in the pulldown list of the combobox,  maybe twice. Sometimes, this must be repeated several times."

package require Tk 
pack [ttk::combobox .cbx1 -values {"Select to crash"}] 
pack [ttk::frame .fr -width 200 -height 200] 
pack [ttk::button .fr.button -text "Press me for processing" -command Doit] 
pack [ttk::label .fr.prog -textvariable progress] 

proc Doit {} { 
        tk busy hold . 
        for {set ::progress 0} {$::progress<100} {incr ::progress} { 
                after 10 
                update 
        } 
        tk busy forget . 
} 

Considering that busy is supposed to be no-op on Aqua, this is very strange indeed.
User Comments: kevin_walzer added on 2015-06-30 02:37:52:
Well, I can trigger a non-responsive window, though not a segfault, with a fairly recent iteration of Tk trunk. However, this seems to me an extreme edge case.

dgp added on 2015-05-11 16:57:32:
Even after all the major changes to aqua Tk since this was
reported, the lock-up/segfault still happens.