|
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. | |||