Tk Source Code

View Ticket
Login
2021-12-25
17:12 Ticket [b1d115fa60] No delivery of <Enter> event upon destruction of toplevel status still Open with 3 other changes artifact: 2d3d7ee9e0 user: fvogel
2008-11-23
05:31 Closed ticket [1852338fff]: wm manage sets up struct overwriting plus 3 other changes artifact: ab99bb6fe1 user: patthoyts
05:31 Ticket [1852338fff]: 4 changes artifact: 34aee11f34 user: patthoyts
2008-03-26
02:35 Ticket [1852338fff]: 4 changes artifact: 8743ffc33b user: hume
01:39 Ticket [1852338fff]: 4 changes artifact: 778a918690 user: hume
2008-03-20
02:16 Ticket [1852338fff]: 1 change artifact: 3338d7f66c user: dgp
02:15 Ticket [1852338fff]: 4 changes artifact: 4e722b0d0d user: dgp
02:07 Ticket [1852338fff]: 4 changes artifact: 4e5bbda105 user: dgp
01:55 Ticket [1852338fff]: 4 changes artifact: af31c2b121 user: dgp
00:40 Ticket [1852338fff]: 4 changes artifact: c0ca72b091 user: dgp
00:38 Ticket [1852338fff]: 4 changes artifact: 40e8b204f5 user: dgp
00:17 Ticket [1852338fff]: 4 changes artifact: a9d57966af user: dgp
2008-03-19
23:42 Ticket [1852338fff]: 4 changes artifact: aef762d622 user: dgp
05:42 Ticket [1852338fff]: 2 changes artifact: e7c7a2621c user: dgp
05:42 Ticket [1852338fff]: 4 changes artifact: d13fd791ca user: dgp
00:31 Ticket [1852338fff]: 4 changes artifact: 98e22d0ae4 user: lvirden
2008-03-18
23:21 Ticket [1852338fff]: 4 changes artifact: c0154d8df7 user: lvirden
22:41 Ticket [1852338fff]: 5 changes artifact: 7b5e26a1e8 user: dkf
2008-03-12
22:33 Ticket [1852338fff]: 1 change artifact: decfc4cb16 user: dgp
22:32 Ticket [1852338fff]: 8 changes artifact: e3096ce7e6 user: dgp
21:16 Ticket [1852338fff]: 4 changes artifact: b41eb7bfd7 user: nobody
2007-12-17
14:35 New ticket [1852338fff]. artifact: 575483a8e9 user: lvirden

Ticket UUID: 1852338
Title: [wm manage] sets up struct overwriting
Type: Bug Version: obsolete: 8.5.1
Submitter: lvirden Created on: 2007-12-17 14:35:56
Subsystem: 65. Generic Window Operations Assigned To: hobbs
Priority: 8 Severity:
Status: Closed Last Modified: 2008-11-23 05:31:44
Resolution: Duplicate Closed By: patthoyts
    Closed on: 2008-11-22 22:31:44
Description:
sparc solaris 9, sun c compiler, compiled with options \"'--prefix=/projects/sprs_lwv/tcl85' '--enable-shared' '--enable-symbols' '--enable-stubs' '--enable-64bit' '--enable-threads' '--prefix=/tmp/.lwv/tcl85' '--with-tcl=/tmp/.lwv/tcl85/lib' 'CC=cc'\"

When the tk test suite reached wm.test, I see:

wm.test
Segmentation Fault - core dumped
gmake: *** [test-classic] Error 139

 $ dbx tktest core
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.0' in your .dbxrc
Reading tktest
core file header read successfully
Reading ld.so.1
Reading libtk8.5.so
Reading libtcl8.5.so
Reading libpthread.so.1
Reading libX11.so.4
Reading libXext.so.0
Reading libdl.so.1
Reading libsocket.so.1
Reading libnsl.so.1
Reading libm.so.1
Reading libc.so.1
Reading libmp.so.2
Reading libc_psr.so.1
Reading libthread.so.1
detected a multithreaded program
t@1 (l@1) terminated by signal SEGV (no mapping at the fault address)
Current function is Tk_FreeConfigOptions
 1604                   Tcl_DecrRefCount(oldPtr);

(dbx 1) where
current thread: t@1
=>[1] Tk_FreeConfigOptions(recordPtr = 0x10087e130 "", optionTable = 0x10064d9e0, tkwin = 0x1006d7ac0), line 1604 in "tkConfig.c"
  [2] DestroyButton(butPtr = 0x10087e130), line 1002 in "tkButton.c"
  [3] ButtonEventProc(clientData = 0x10087e130, eventPtr = 0xffffffff7ffeed28), line 1455 in "tkButton.c"
  [4] Tk_HandleEvent(eventPtr = 0xffffffff7ffeed28), line 1401 in "tkEvent.c"
  [5] Tk_DestroyWindow(tkwin = 0x1006d7ac0), line 1411 in "tkWindow.c"
  [6] Tk_DestroyWindow(tkwin = 0x100cb95b0), line 1352 in "tkWindow.c"
  [7] Tk_DestroyObjCmd(clientData = 0x100074540, interp = 0x100043e90, objc = 2, objv = 0x10005f5e0), line 468 in "tkCmds.c"
  [8] TclEvalObjvInternal(interp = 0x100043e90, objc = 2, objv = 0x10005f5e0, command = 0x10021b200 "destroy .t", length = 10, flags = 0), line 3647 in "tclBasic.c"
  [9] TclEvalEx(interp = 0x100043e90, script = 0x10021b200 "destroy .t", numBytes = 10, flags = 262144, line = 1), line 4296 in "tclBasic.c"
  [10] Tcl_EvalEx(interp = 0x100043e90, script = 0x10021b200 "destroy .t", numBytes = 10, flags = 262144), line 4000 in "tclBasic.c"
  [11] TclEvalObjEx(interp = 0x100043e90, objPtr = 0x100abeff0, flags = 262144, invoker = (nil), word = 0), line 4673 in "tclBasic.c"
  [12] Tcl_EvalObjCmd(dummy = (nil), interp = 0x100043e90, objc = 3, objv = 0x10005f328), line 677 in "tclCmdAH.c"
  [13] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x10005f328, command = 0xffffffffffffffff "", length = -1, flags = 0), line 3647 in "tclBasic.c"
  [14] TclExecuteByteCode(interp = 0x100043e90, codePtr = 0x100452240), line 2211 in "tclExecute.c"
  [15] TclObjInterpProcCore(interp = 0x100043e90, procNameObj = 0x100ab6370, skip = 1, errorProc = 0x7fffffff7f59efe8 = &`libtcl8.5.so`tclProc.c`MakeProcError(Tcl_Interp *interp, Tcl_Obj *procNameObj)), line 1721 in "tclProc.c"
  [16] TclObjInterpProc(clientData = 0x1004595d0, interp = 0x100043e90, objc = 1, objv = 0x10005f118), line 1615 in "tclProc.c"
  [17] InvokeImportedCmd(clientData = 0x10043d110, interp = 0x100043e90, objc = 1, objv = 0x10005f118), line 1890 in "tclNamesp.c"
  [18] TclEvalObjvInternal(interp = 0x100043e90, objc = 1, objv = 0x10005f118, command = 0x100bb6115 "deleteWindows\n    set result [list]\n    toplevel .t\n    toplevel .t.t\n    button .t.t.b -text "Manage This"\n    pack .t.t.b\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm forget .t.t\n    wm forget .t.t ; # second call should be a no-op\n    pack .t.t\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm manage .t.t\n    wm manage .t.t ; # second call should be a no-op\n    wm deiconify .t.t\n    update\n    lappend" ..., length = 14, flags = 0), line 3647 in "tclBasic.c"
  [19] TclEvalEx(interp = 0x100043e90, script = 0x100bb6110 "\n    deleteWindows\n    set result [list]\n    toplevel .t\n    toplevel .t.t\n    button .t.t.b -text "Manage This"\n    pack .t.t.b\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm forget .t.t\n    wm forget .t.t ; # second call should be a no-op\n    pack .t.t\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm manage .t.t\n    wm manage .t.t ; # second call should be a no-op\n    wm deiconify .t.t\n    update\n    la" ..., numBytes = 588, flags = 262144, line = 2), line 4296 in "tclBasic.c"
  [20] Tcl_EvalEx(interp = 0x100043e90, script = 0x100bb6110 "\n    deleteWindows\n    set result [list]\n    toplevel .t\n    toplevel .t.t\n    button .t.t.b -text "Manage This"\n    pack .t.t.b\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm forget .t.t\n    wm forget .t.t ; # second call should be a no-op\n    pack .t.t\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm manage .t.t\n    wm manage .t.t ; # second call should be a no-op\n    wm deiconify .t.t\n    update\n    la" ..., numBytes = 588, flags = 262144), line 4000 in "tclBasic.c"
  [21] TclEvalObjEx(interp = 0x100043e90, objPtr = 0x100af6a00, flags = 262144, invoker = (nil), word = 0), line 4673 in "tclBasic.c"
  [22] Tcl_EvalObjEx(interp = 0x100043e90, objPtr = 0x100af6a00, flags = 262144), line 4554 in "tclBasic.c"
  [23] Tcl_UplevelObjCmd(dummy = (nil), interp = 0x100043e90, objc = 1, objv = 0x10005ee70), line 911 in "tclProc.c"
  [24] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x10005ee60, command = 0xffffffffffffffff "", length = -1, flags = 0), line 3647 in "tclBasic.c"
  [25] TclExecuteByteCode(interp = 0x100043e90, codePtr = 0x100365d40), line 2211 in "tclExecute.c"
  [26] TclObjInterpProcCore(interp = 0x100043e90, procNameObj = 0x100d18960, skip = 1, errorProc = 0x7fffffff7f59efe8 = &`libtcl8.5.so`tclProc.c`MakeProcError(Tcl_Interp *interp, Tcl_Obj *procNameObj)), line 1721 in "tclProc.c"
  [27] TclObjInterpProc(clientData = 0x100251ef0, interp = 0x100043e90, objc = 3, objv = 0x100922440), line 1615 in "tclProc.c"
  [28] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x100922440, command = (nil), length = 0, flags = 262144), line 3647 in "tclBasic.c"
  [29] Tcl_EvalObjv(interp = 0x100043e90, objc = 3, objv = 0x100922440, flags = 262144), line 3842 in "tclBasic.c"
  [30] TclEvalObjEx(interp = 0x100043e90, objPtr = 0x1008b6730, flags = 262144, invoker = (nil), word = 0), line 4643 in "tclBasic.c"
  [31] Tcl_EvalObjEx(interp = 0x100043e90, objPtr = 0x1008b6730, flags = 262144), line 4554 in "tclBasic.c"
  [32] Tcl_UplevelObjCmd(dummy = (nil), interp = 0x100043e90, objc = 1, objv = 0x10005ed00), line 911 in "tclProc.c"
  [33] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x10005ecf0, command = 0xffffffffffffffff "", length = -1, flags = 0), line 3647 in "tclBasic.c"
  [34] TclExecuteByteCode(interp = 0x100043e90, codePtr = 0x100858cb0), line 2211 in "tclExecute.c"
  [35] TclObjInterpProcCore(interp = 0x100043e90, procNameObj = 0x10020f570, skip = 1, errorProc = 0x7fffffff7f59efe8 = &`libtcl8.5.so`tclProc.c`MakeProcError(Tcl_Interp *interp, Tcl_Obj *procNameObj)), line 1721 in "tclProc.c"
  [36] TclObjInterpProc(clientData = 0x1001356e0, interp = 0x100043e90, objc = 3, objv = 0x1006ff3c0), line 1615 in "tclProc.c"
  [37] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x1006ff3c0, command = (nil), length = 0, flags = 262144), line 3647 in "tclBasic.c"
  [38] Tcl_EvalObjv(interp = 0x100043e90, objc = 3, objv = 0x1006ff3c0, flags = 262144), line 3842 in "tclBasic.c"
  [39] TclEvalObjEx(interp = 0x100043e90, objPtr = 0x100212810, flags = 262144, invoker = (nil), word = 0), line 4643 in "tclBasic.c"
  [40] Tcl_EvalObjEx(interp = 0x100043e90, objPtr = 0x100212810, flags = 262144), line 4554 in "tclBasic.c"
  [41] Tcl_UplevelObjCmd(dummy = (nil), interp = 0x100043e90, objc = 1, objv = 0x10005eb88), line 911 in "tclProc.c"
  [42] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x10005eb78, command = 0xffffffffffffffff "", length = -1, flags = 0), line 3647 in "tclBasic.c"
  [43] TclExecuteByteCode(interp = 0x100043e90, codePtr = 0x100bc0030), line 2211 in "tclExecute.c"
  [44] TclObjInterpProcCore(interp = 0x100043e90, procNameObj = 0x10020fcf0, skip = 1, errorProc = 0x7fffffff7f59efe8 = &`libtcl8.5.so`tclProc.c`MakeProcError(Tcl_Interp *interp, Tcl_Obj *procNameObj)), line 1721 in "tclProc.c"
  [45] TclObjInterpProc(clientData = 0x1002be230, interp = 0x100043e90, objc = 5, objv = 0x10005df80), line 1615 in "tclProc.c"
  [46] InvokeImportedCmd(clientData = 0x100905760, interp = 0x100043e90, objc = 5, objv = 0x10005df80), line 1890 in "tclNamesp.c"
  [47] TclEvalObjvInternal(interp = 0x100043e90, objc = 5, objv = 0x10005df80, command = 0x100dab74d "test wm-manage-1.2 {} {\n    deleteWindows\n    set result [list]\n    toplevel .t\n    toplevel .t.t\n    button .t.t.b -text "Manage This"\n    pack .t.t.b\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm forget .t.t\n    wm forget .t.t ; # second call should be a no-op\n    pack .t.t\n    update\n    lappend result [winfo manage .t.t]\n    lappend result [winfo toplevel .t.t.b]\n    wm manage .t.t\n    wm manage .t.t ; # second call should be a no-op\n    wm deiconify" ..., length = 639, flags = 0), line 3647 in "tclBasic.c"
  [48] TclEvalEx(interp = 0x100043e90, script = 0x100d9cb40 "# This file is a Tcl script to test out Tk's interactions with\n# the window manager, including the "wm" command.  It is organized\n# in the standard fashion for Tcl tests.\n#\n# Copyright (c) 1992-1994 The Regents of the University of California.\n# Copyright (c) 1994-1997 Sun Microsystems, Inc.\n# Copyright (c) 1998-1999 by Scriptics Corporation.\n# All rights reserved.\n#\n# RCS: @(#) $Id$\n\n# This file tests window manager interactions that work across\n# platforms. Window manager tests that only work on a specifi" ..., numBytes = 61331, flags = 0, line = 2058), line 4296 in "tclBasic.c"
  [49] Tcl_EvalEx(interp = 0x100043e90, script = 0x100d9cb40 "# This file is a Tcl script to test out Tk's interactions with\n# the window manager, including the "wm" command.  It is organized\n# in the standard fashion for Tcl tests.\n#\n# Copyright (c) 1992-1994 The Regents of the University of California.\n# Copyright (c) 1994-1997 Sun Microsystems, Inc.\n# Copyright (c) 1998-1999 by Scriptics Corporation.\n# All rights reserved.\n#\n# RCS: @(#) $Id$\n\n# This file tests window manager interactions that work across\n# platforms. Window manager tests that only work on a specifi" ..., numBytes = 61331, flags = 0), line 4000 in "tclBasic.c"
  [50] Tcl_FSEvalFileEx(interp = 0x100043e90, pathPtr = 0x100431450, encodingName = (nil)), line 1826 in "tclIOUtil.c"
  [51] Tcl_SourceObjCmd(dummy = (nil), interp = 0x100043e90, objc = 2, objv = 0x1008e43c0), line 955 in "tclCmdMZ.c"
  [52] TclEvalObjvInternal(interp = 0x100043e90, objc = 2, objv = 0x1008e43c0, command = (nil), length = 0, flags = 262144), line 3647 in "tclBasic.c"
  [53] Tcl_EvalObjv(interp = 0x100043e90, objc = 2, objv = 0x1008e43c0, flags = 262144), line 3842 in "tclBasic.c"
  [54] TclEvalObjEx(interp = 0x100043e90, objPtr = 0x1008b5bc0, flags = 262144, invoker = (nil), word = 0), line 4643 in "tclBasic.c"
  [55] Tcl_EvalObjEx(interp = 0x100043e90, objPtr = 0x1008b5bc0, flags = 262144), line 4554 in "tclBasic.c"
  [56] Tcl_UplevelObjCmd(dummy = (nil), interp = 0x100043e90, objc = 1, objv = 0x10005dc88), line 911 in "tclProc.c"
  [57] TclEvalObjvInternal(interp = 0x100043e90, objc = 3, objv = 0x10005dc78, command = 0xffffffffffffffff "", length = -1, flags = 0), line 3647 in "tclBasic.c"
  [58] TclExecuteByteCode(interp = 0x100043e90, codePtr = 0x10063fbc0), line 2211 in "tclExecute.c"
  [59] TclCompEvalObj(interp = 0x100043e90, objPtr = 0x100ace8a0, invoker = 0x10005da88, word = 2), line 1362 in "tclExecute.c"
  [60] TclEvalObjEx(interp = 0x100043e90, objPtr = 0x100ace8a0, flags = 0, invoker = 0x10005da88, word = 2), line 4762 in "tclBasic.c"

  [61] Tcl_IfObjCmd(dummy = (nil), interp = 0x100043e90, objc = 5, objv = 0x10005dad8), line 303 in "tclCmdIL.c"
  [62] TclEvalObjvInternal(interp = 0x100043e90, objc = 5, objv = 0x10005dad8, command = 0x1002c7d25 "if {[singleProcess]} {\n^I    incr numTestFiles\n^I    uplevel 1 [list ::source $file]\n^I} else {\n^I    # Pass along our configuration to the child processes.\n^I    # EXCEPT for the -outfile, because the parent process\n^I    # needs to read and process output of children.\n^I    set childargv [list]\n^I    foreach opt [Configure] {\n^I^Iif {[string equal $opt -outfile]} {continue}\n^I^Ilappend childargv $opt [Configure $opt]\n^I    }\n^I    set cmd [linsert $childargv 0 | $shell $file]\n^I    if {[catch {\n^I^Iincr numTestFiles\n^I^Iset" ..., length = 1458, flags = 0), line 3647 in "tclBasic.c"
  [63] TclEvalEx(interp = 0x100043e90, script = 0x1002c7d25 "if {[singleProcess]} {\n^I    incr numTestFiles\n^I    uplevel 1 [list ::source $file]\n^I} else {\n^I    # Pass along our configuration to the child processes.\n^I    # EXCEPT for the -outfile, because the parent process\n^I    # needs to read and process output of children.\n^I    set childargv [list]\n^I    foreach opt [Configure] {\n^I^Iif {[string equal $opt -outfile]} {continue}\n^I^Ilappend childargv $opt [Configure $opt]\n^I    }\n^I    set cmd [linsert $childargv 0 | $shell $file]\n^I    if {[catch {\n^I^Iincr numTestFiles\n^I^Iset" ..., numBytes = 1458, flags = 0, line = 1), line 4296 in "tclBasic.c"
  [64] Tcl_EvalEx(interp = 0x100043e90, script = 0x1002c7d25 "if {[singleProcess]} {\n^I    incr numTestFiles\n^I    uplevel 1 [list ::source $file]\n^I} else {\n^I    # Pass along our configuration to the child processes.\n^I    # EXCEPT for the -outfile, because the parent process\n^I    # needs to read and process output of children.\n^I    set childargv [list]\n^I    foreach opt [Configure] {\n^I^Iif {[string equal $opt -outfile]} {continue}\n^I^Ilappend childargv $opt [Configure $opt]\n^I    }\n^I    set cmd [linsert $childargv 0 | $shell $file]\n^I    if {[catch {\n^I^Iincr numTestFiles\n^I^Iset" ..., numBytes = 1458, flags = 0), line 4000 in "tclBasic.c"
  [65] TclExecuteByteCode(interp = 0x100043e90, codePtr = 0x100282690), line 1932 in "tclExecute.c"
  [66] TclObjInterpProcCore(interp = 0x100043e90, procNameObj = 0x10025ffb0, skip = 1, errorProc = 0x7fffffff7f59efe8 = &`libtcl8.5.so`tclProc.c`MakeProcError(Tcl_Interp *interp, Tcl_Obj *procNameObj)), line 1721 in "tclProc.c"
  [67] TclObjInterpProc(clientData = 0x100250f90, interp = 0x100043e90, objc = 1, objv = 0x10005d3d8), line 1615 in "tclProc.c"

  [68] TclEvalObjvInternal(interp = 0x100043e90, objc = 1, objv = 0x10005d3d8, command = 0x100237eca "tcltest::runAllTests\n", length = 21, flags = 0), line 3647 in "tclBasic.c"
  [69] TclEvalEx(interp = 0x100043e90, script = 0x100237bd0 "# all.tcl --\n#\n# This file contains a top-level script to run all of the Tk\n# tests.  Execute it by invoking "source all.tcl" when running tktest\n# in this directory.\n#\n# Copyright (c) 1998-1999 by Scriptics Corporation.\n#\n# See the file "license.terms" for information on usage and redistribution\n# of this file, and for a DISCLAIMER OF ALL WARRANTIES.\n#\n# RCS: @(#) $Id: all.tcl,v 1.13 2007/12/13 15:27:54 dgp Exp $\n\npackage require Tcl 8.5\npackage require tcltest 2.2\npackage require Tk ;# This is the Tk test" ..., numBytes = 783, flags = 0, line = 22), line 4296 in "tclBasic.c"
  [70] Tcl_EvalEx(interp = 0x100043e90, script = 0x100237bd0 "# all.tcl --\n#\n# This file contains a top-level script to run all of the Tk\n# tests.  Execute it by invoking "source all.tcl" when running tktest\n# in this directory.\n#\n# Copyright (c) 1998-1999 by Scriptics Corporation.\n#\n# See the file "license.terms" for information on usage and redistribution\n# of this file, and for a DISCLAIMER OF ALL WARRANTIES.\n#\n# RCS: @(#) $Id: all.tcl,v 1.13 2007/12/13 15:27:54 dgp Exp $\n\npackage require Tcl 8.5\npackage require tcltest 2.2\npackage require Tk ;# This is the Tk test" ..., numBytes = 783, flags = 0), line 4000 in "tclBasic.c"
  [71] Tcl_FSEvalFileEx(interp = 0x100043e90, pathPtr = 0x10005aff0, encodingName = (nil)), line 1826 in "tclIOUtil.c"
  [72] Tk_MainEx(argc = -1, argv = 0xffffffff7fffd328, appInitProc = 0x1000066c8 = &Tcl_AppInit(Tcl_Interp *interp), interp = 0x100043e90), line 272 in "tkMain.c"
  [73] main(argc = 4, argv = 0xffffffff7fffd308), line 68 in "tkAppInit.c"
User Comments: patthoyts added on 2008-11-23 05:31:28:
I fixed this recently for bug 2239034 by restricting the widget types that can be managed to Frame types.

hume added on 2008-03-26 02:35:28:
Logged In: YES 
user_id=625620
Originator: NO

I am not seeing this crash with a 64bit PA-RISC compile on HP-UX (CC="cc -Ae +DA2.0W").  With this architecture, longs and ptrs are 64bit and ints are 32bit.

hume added on 2008-03-26 01:39:54:
Logged In: YES 
user_id=625620
Originator: NO

I am also seeing this on a SunOS 5.10 sparc machine configuring Tk with CC="/opt/SUNWspro/bin/cc -xarch=v9" which turns on a 64bit compile.  I have not been using the --enable-64bit configure arg.  My observations agree with dgp's.

dgp added on 2008-03-20 02:15:10:
Logged In: YES 
user_id=80530
Originator: NO


I've reached the limits of amateur
hour debugging.  This needs some love
from the creators of [wm manage].

dgp added on 2008-03-20 02:07:57:
Logged In: YES 
user_id=80530
Originator: NO


framePtr and the ClientData of
the [.t.b] command are pointing
to the same address.  So when
framePtr->type gets assigned
TYPE_FRAME (0) it clears the upper
bits of the butPtr->textPtr field
in the clientData, setting up for
a crash the next time the button's
text value is needed.

This looks like a fairly significant
design flaw instead of a minor coding
error.

dgp added on 2008-03-20 01:55:13:
Logged In: YES 
user_id=80530
Originator: NO


The loss happens during the line

  framePtr->type = TYPE_FRAME;


What?!?!?!

dgp added on 2008-03-20 00:40:19:
Logged In: YES 
user_id=80530
Originator: NO


The loss looks like a loss of high bits,
as if a 64-bit pointer got passed through
only 32 bits of storage.

dgp added on 2008-03-20 00:38:13:
Logged In: YES 
user_id=80530
Originator: NO


Loss happens during TkMapTopFrame()

dgp added on 2008-03-20 00:17:58:
Logged In: YES 
user_id=80530
Originator: NO


[wm forget] loses it:

% toplevel .t
.t
% button .t.b -text foo
.t.b
% .t.b cget -text
foo
% wm manage .t.b
% .t.b cget -text
foo
% wm forget .t.b
% .t.b cget -text
signal SEGV (no mapping at the fault address) in Tcl_DbIncrRefCount at line 3087 in file "tclObj.c"
 3087       if (objPtr->refCount == 0x61616161) {

dgp added on 2008-03-19 23:42:27:
Logged In: YES 
user_id=80530
Originator: NO


The --enable-64bit configuration is
the key to producing this failure.
With that set, something in the
[wm manage]/[wm forget] round trip
corrupts the value stored as the (Tcl_Obj *)
value of the -text option to the button,
leading to the crash during destruction.

dgp added on 2008-03-19 05:42:51:
Logged In: YES 
user_id=80530
Originator: NO


Reproduced.  Here's a minimal
interactive debugger session:

% toplevel .t
.t
% button .t.b -text "Manage This"
.t.b
% wm manage .t.b
% wm forget .t.b
% destroy .t
t@1 (l@1) signal SEGV (no mapping at the fault address) in Tk_FreeConfigOptions at line 1604 in file "tkConfig.c"
 1604                   Tcl_DecrRefCount(oldPtr);


Suspect something in the [wm manage]/[wm forget]
pair isn't quite right.

lvirden added on 2008-03-19 00:31:21:
Logged In: YES 
user_id=15949
Originator: YES

here's a bit of an update. I reran the test like so:
gmake test TESTFLAGS="-file wm.test -verbose bps"
and after pages of PASSED and SKIPPED messages, got this:
++++ wm-deletion-epoch-1.1 SKIPPED: altDisplay
++++ wm-manage-1.1 PASSED
Segmentation Fault - core dumped
gmake: *** [test-classic] Error 139

So next I did a 
gmake runtest
and fed, line by line, the statements in the body of wm-manage-1.2 . I didn't get an error for that.

So, if I run just the wm.test by itself, or the entire suite, I get a crash here reliably. 
I don't know if perhaps the failure might be occuring at the end of 1.1, in tcltest, or in 1.3 and the 1.2 output just wasn't flushed out by the time of the crash.

lvirden added on 2008-03-18 23:21:53:
Logged In: YES 
user_id=15949
Originator: YES

I just ran a test against the CVS head and continue to see the error. The Tcl and Tk are configured with options \"'--prefix=/projects/sprs_lwv/tcl85' '--enable-shared' '--enable
-symbols' '--enable-stubs' '--enable-64bit' 'CC=cc'\" and are built on Solaris 9 with Sun's C compiler.

dkf added on 2008-03-18 22:41:56:
Logged In: YES 
user_id=79902
Originator: NO

Now that's a hard-to-understand bug report. It's very carefully failing to tell us almost all the information we need to track this down.

It appears to be triggered by the call to [deleteWindows] in the test wm-manage-1.2 in wm.test (what is happening at that point is utterly unclear; no local variables in the stack trace, not that they'd likely help). That ought to be migrated to a -cleanup section in the previous test anyway; we don't want innocent tests getting hit with faults from elsewhere.

Needless to say, I can't reproduce the crash with the HEAD.

dgp added on 2008-03-12 22:32:39:
Logged In: YES 
user_id=80530
Originator: NO


um, assigned to "None" is no
way to get a bug fixed.

Crash is in tkConfig.c; let's
start there.

nobody@134.243.211.229 added on 2008-03-12 21:16:37:
Logged In: NO 

I see this on sparc solaris 9 with tcl/tk 8.5.2rc0.