Tcl Source Code

View Ticket
Login
Ticket UUID: 1991932
Title: Global grab can cause app to segfault
Type: Bug Version: obsolete: 8.5.2
Submitter: phase1geo Created on: 2008-06-12 12:32:31
Subsystem: 69. Other Assigned To: das
Priority: 9 Immediate Severity:
Status: Closed Last Modified: 2008-06-13 00:12:09
Resolution: Fixed Closed By: das
    Closed on: 2008-06-12 17:12:09
Description:
I have attached a simple script that can cause wish to segfault when run.  To replicate, simply type 'source test.tcl' at the wish prompt and follow the instructions of the various windows.  I am running this using Tcl/Tk version 8.5.2, running on Mac OS X 10.5.3 on a Intel-based iMac.
User Comments: das added on 2008-06-13 00:12:09:
Logged In: YES 
user_id=90580
Originator: NO

Thanks much, that script made reproducing the crash easy.

The attached patch fixes the crash, it turned out to be a bug in generic tkPointer code, the global . grab was not being restored correctly when the temporary grab for the .c.b button mousebutton press/release cycle was removed, leading to a dangling reference to .c inside the TkpSetCapture() implementation which was not cleaned up when .c was destroyed in the button command. Subsequent reference to the grab window from mouse-move event generation code would then segfault...

Fix committed to HEAD, core-8-5-branch and core-8-4-branch.

Note that this is a tk bug and should have been filed in the tktoolkit tracker (not bothering to refile it since it is fixed).

nobody added on 2008-06-13 00:10:22:

File Added - 281187: 1991932.diff

phase1geo added on 2008-06-12 19:33:15:
Logged In: YES 
user_id=512771
Originator: YES

Assigning this to Daniel per his request.

phase1geo added on 2008-06-12 19:32:31:

File Added - 281146: test.tcl

Attachments: