This is the mail archive of the insight@sources.redhat.com mailing list for the Insight project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Insight crash


Tom Tromey wrote:
> 
> I'm able to make insight crash by bringing up the watch window on a
> variable and then re-running the inferior.  Sometimes I have to play
> with it a bit to have it fail.  I don't have a very precise recipe I'm
> afraid.
> 
> Stack trace appended.
> 
> I'm running on my RH 6.2 x86 box.
> 
> Tom
> 

What is happening here is that the varobj code stores the "expressions" once
they are parsed.  GDB "expressions" contain pointers to types.

You probably caused the symbols to be reloaded somehow, and the types got 
recreated at new locations.

If you detected the condition that causes symbols to be reloaded without the
GUI knowledge, please check if it calls "file_changed_hook" (it probably does).

Here is a temporary to the variable window that will prevent the crash (if the
hook is being called) but that will remove all variables from the watch.
It will go in with a FIXME (if it fixes your problem).

If you add the bug to the database I promisse you I will add the necessary
machinery in the varobj to recalculate all variable object expressions when
the symbols are reloaded.

Thanks for finding this one (I have a deja vu feeling though).

Fernando

P.S.: Please note that GDB current sources have a bug that is easy to repeat
      (at least on our 6.2 boxes):
      $ ./gdb -nw ./gdb
      (gdb) file gdb
      This will dump core, but is not what you are seeing.


> #0  check_typedef (type=0x0) at ../../src/gdb/gdbtypes.c:1060
> #1  0x08085b90 in allocate_value (type=0x0) at ../../src/gdb/values.c:82
> #2  0x0810738b in read_var_value (var=0x8c136e8, frame=0x0)
>     at ../../src/gdb/findvar.c:514
> #3  0x0808cb01 in value_of_variable (var=0x8c136e8, b=0x0)
>     at ../../src/gdb/valops.c:867
> #4  0x080895be in evaluate_subexp_standard (expect_type=0x0, exp=0x8bdc2f0,
>     pos=0xbfff8ed4, noside=EVAL_NORMAL) at ../../src/gdb/eval.c:439
> #5  0x0808792b in evaluate_subexp (expect_type=0x0, exp=0x8bdc2f0,
>     pos=0xbfff8ed4, noside=EVAL_NORMAL) at ../../src/gdb/eval.c:71
> #6  0x08087aee in evaluate_expression (exp=0x8bdc2f0)
>     at ../../src/gdb/eval.c:160
> #7  0x080e0213 in wrap_evaluate_expression (
>     a=0xbfff8fe0 "x0¼\bð½\b\030\220ÿ¿4è\r\bx0¼\b\024\220ÿ¿x0¼\b")
>     at ../../src/gdb/wrapper.c:116
> #8  0x080ed05a in catch_errors (func=0x80e0200 <wrap_evaluate_expression>,
>     args=0xbfff8fe0, errstring=0x82a208e "", mask=4) at ../../src/gdb/top.c:607
> #9  0x080e01d1 in gdb_evaluate_expression (exp=0x8bdc2f0, value=0xbfff903c)
>     at ../../src/gdb/wrapper.c:100
> #10 0x080df726 in c_value_of_root (var_handle=0xbfff90c0)
>     at ../../src/gdb/varobj.c:1896
> #11 0x080df236 in value_of_root (var_handle=0xbfff90c0,
>     type_changed=0xbfff90a8) at ../../src/gdb/varobj.c:1664
> #12 0x080de555 in varobj_update (var=0x8a37ce8, changelist=0xbfff90dc)
>     at ../../src/gdb/varobj.c:912
> #13 0x080d0232 in variable_update (interp=0x836d490, var=0x8a37ce8)
>     at ../../src/gdb/gdbtk/generic/gdbtk-varobj.c:463
> #14 0x080cff4a in variable_obj_command (clientData=0x8a37ce8,
>     interp=0x836d490, objc=2, objv=0x836e17c)
>     at ../../src/gdb/gdbtk/generic/gdbtk-varobj.c:273
> #15 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8711180)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #16 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8639180)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #17 0x081b5839 in Itcl_EvalMemberCode (interp=0x836d490, mfunc=0x86382f0,
>     member=0x8638308, contextObj=0x862b1b8, objc=1, objv=0x836e178)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_methods.c:1029
> #18 0x081b600d in Itcl_ExecMethod (clientData=0x86382f0, interp=0x836d490,
>     objc=1, objv=0x836e178)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_methods.c:1546
> #19 0x081bb72f in Itcl_EvalArgs (interp=0x836d490, objc=1, objv=0x836e178)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_util.c:1337
> #20 0x081b76dc in Itcl_HandleInstance (clientData=0x862b1b8, interp=0x836d490,
>     objc=2, objv=0x836e174)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_objects.c:664
> #21 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8c59fd0)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #22 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8aa2ba0)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #23 0x082724d3 in Tcl_UplevelObjCmd (dummy=0x0, interp=0x836d490, objc=4,
>     objv=0x836e164) at ../../../src/tcl/unix/../generic/tclProc.c:612
> #24 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x84ab1d0)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #25 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8471820)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #26 0x082729d1 in TclObjInterpProc (clientData=0x849d580, interp=0x836d490,
>     objc=2, objv=0x836e15c) at ../../../src/tcl/unix/../generic/tclProc.c:996
> #27 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x84af5f8)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #28 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8471640)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #29 0x082729d1 in TclObjInterpProc (clientData=0x8495ef0, interp=0x836d490,
>     objc=1, objv=0x836e158) at ../../../src/tcl/unix/../generic/tclProc.c:996
> #30 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x853fa58)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #31 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8471988)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #32 0x082729d1 in TclObjInterpProc (clientData=0x84c64b8, interp=0x836d490,
>     objc=1, objv=0x836e154) at ../../../src/tcl/unix/../generic/tclProc.c:996
> #33 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8c57c18)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #34 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8aa45f0)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #35 0x0823f557 in Tcl_Eval (interp=0x836d490,
>     string=0x829bccc "gdbtk_tcl_idle")
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2453
> #36 0x080ede5c in execute_command (p=0x8886bdb "", from_tty=0)
>     at ../../src/gdb/top.c:1523
> #37 0x080c9e27 in gdb_immediate_command (clientData=0x80c9da0,
>     interp=0x836d490, objc=2, objv=0x836e14c)
>     at ../../src/gdb/gdbtk/generic/gdbtk-cmds.c:929
> #38 0x080c99ac in wrapped_call (opaque_args=0xbfffb9e0)
>     at ../../src/gdb/gdbtk/generic/gdbtk-cmds.c:573
> #39 0x080ed05a in catch_errors (func=0x80c9990 <wrapped_call>,
>     args=0xbfffb9e0, errstring=0x829af20 "", mask=6) at ../../src/gdb/top.c:607
> #40 0x080c98c1 in call_wrapper (clientData=0x80c9da0, interp=0x836d490,
>     objc=2, objv=0x836e14c) at ../../src/gdb/gdbtk/generic/gdbtk-cmds.c:503
> #41 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x88875f0)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #42 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8471b50)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #43 0x082729d1 in TclObjInterpProc (clientData=0x8469900, interp=0x836d490,
>     objc=1, objv=0x836e148) at ../../../src/tcl/unix/../generic/tclProc.c:996
> #44 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8884f00)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #45 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8471ca0)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #46 0x082729d1 in TclObjInterpProc (clientData=0x84c3200, interp=0x836d490,
>     objc=1, objv=0x836e144) at ../../../src/tcl/unix/../generic/tclProc.c:996
> #47 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8884e58)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #48 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8836a00)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #49 0x08248dc4 in Tcl_SwitchObjCmd (dummy=0x0, interp=0x836d490, objc=3,
>     objv=0x836e138) at ../../../src/tcl/unix/../generic/tclCmdMZ.c:1732
> #50 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8884c98)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #51 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8460c58)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #52 0x081b5839 in Itcl_EvalMemberCode (interp=0x836d490, mfunc=0x8535290,
>     member=0x85352a8, contextObj=0x852a548, objc=2, objv=0x836e130)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_methods.c:1029
> #53 0x081b600d in Itcl_ExecMethod (clientData=0x8535290, interp=0x836d490,
>     objc=2, objv=0x836e130)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_methods.c:1546
> #54 0x081bb72f in Itcl_EvalArgs (interp=0x836d490, objc=2, objv=0x836e130)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_util.c:1337
> #55 0x081b76dc in Itcl_HandleInstance (clientData=0x852a548, interp=0x836d490,
>     objc=3, objv=0x836e12c)
>     at /x2/egcs-stuff/gdb/src/itcl/itcl/generic/itcl_objects.c:664
> #56 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x887e038)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #57 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8aa29d8)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #58 0x0826c6a2 in NamespaceInscopeCmd (dummy=0x0, interp=0x836d490, objc=4,
>     objv=0x836e11c) at ../../../src/tcl/unix/../generic/tclNamesp.c:3277
> #59 0x0826bd9c in Tcl_NamespaceObjCmd (clientData=0x0, interp=0x836d490,
>     objc=4, objv=0x836e11c)
>     at ../../../src/tcl/unix/../generic/tclNamesp.c:2498
> #60 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8b94a28)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #61 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8aa46b0)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #62 0x0823f557 in Tcl_Eval (interp=0x836d490,
>     string=0xbfffe034 "namespace inscope ::GDBSrcBar {::.srcwin0.srcwin inferior run}") at ../../../src/tcl/unix/../generic/tclBasic.c:2453
> #63 0x08240a1f in Tcl_GlobalEval (interp=0x836d490,
>     command=0xbfffe034 "namespace inscope ::GDBSrcBar {::.srcwin0.srcwin inferior run}") at ../../../src/tcl/unix/../generic/tclBasic.c:3983
> #64 0x082319ef in TkCopyAndGlobalEval (interp=0x836d490,
>     script=0x8ac1590 "°-!@\030Í\227\bn0.__balloon _enter .srcwin0.srcwin.container.pane1.childsite.coP") at ../../../src/tk/unix/../generic/tkBind.c:4547
> #65 0x081fafc9 in TkInvokeButton (butPtr=0x85ea0a0)
>     at ../../../src/tk/unix/../generic/tkButton.c:1136
> #66 0x081fa674 in ButtonWidgetCmd (clientData=0x85ea0a0, interp=0x836d490,
>     argc=2, argv=0xbfffe160) at ../../../src/tk/unix/../generic/tkButton.c:543
> #67 0x0823ef37 in TclInvokeStringCommand (clientData=0x85e64f0,
>     interp=0x836d490, objc=2, objv=0x836e114)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:1745
> #68 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8b39440)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #69 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x8aa4278)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #70 0x082724b8 in Tcl_UplevelObjCmd (dummy=0x0, interp=0x836d490, objc=3,
>     objv=0x836e108) at ../../../src/tcl/unix/../generic/tclProc.c:609
> #71 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x8884650)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #72 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x851d090)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #73 0x082729d1 in TclObjInterpProc (clientData=0x85d9b10, interp=0x836d490,
>     objc=2, objv=0x836e100) at ../../../src/tcl/unix/../generic/tclProc.c:996
> #74 0x08257240 in TclExecuteByteCode (interp=0x836d490, codePtr=0x87d9cd0)
>     at ../../../src/tcl/unix/../generic/tclExecute.c:955
> #75 0x0823f76d in Tcl_EvalObj (interp=0x836d490, objPtr=0x844b890)
>     at ../../../src/tcl/unix/../generic/tclBasic.c:2645
> #76 0x0823f557 in Tcl_Eval (interp=0x836d490,
>     string=0xbffff2ac "TOOLBAR_button_up .srcwin0.srcwin.container.pane0.childsite.con.t.stop") at ../../../src/tcl/unix/../generic/tclBasic.c:2453
> #77 0x08240a1f in Tcl_GlobalEval (interp=0x836d490,
>     command=0xbffff2ac "TOOLBAR_button_up .srcwin0.srcwin.container.pane0.childsite.con.t.stop") at ../../../src/tcl/unix/../generic/tclBasic.c:3983
> #78 0x0822ea8d in Tk_BindEvent (bindingTable=0x83816f0, eventPtr=0x89c48e8,
>     tkwin=0x85e4b18, numObjects=0, objectPtr=0xbffff3b4)
>     at ../../../src/tk/unix/../generic/tkBind.c:1731
> #79 0x08232443 in TkBindEventProc (winPtr=0x85e4b18, eventPtr=0x89c48e8)
>     at ../../../src/tk/unix/../generic/tkCmds.c:242
> #80 0x081e5ced in Tk_HandleEvent (eventPtr=0x89c48e8)
>     at ../../../src/tk/unix/../generic/tkEvent.c:657
> #81 0x081e5f70 in WindowEventProc (evPtr=0x89c48e0, flags=-3)
>     at ../../../src/tk/unix/../generic/tkEvent.c:983
> #82 0x0826cf30 in Tcl_ServiceEvent (flags=-3)
>     at ../../../src/tcl/unix/../generic/tclNotify.c:444
> #83 0x0826d0f9 in Tcl_DoOneEvent (flags=0)
>     at ../../../src/tcl/unix/../generic/tclNotify.c:683
> #84 0x081e5fc7 in Tk_MainLoop ()
>     at ../../../src/tk/unix/../generic/tkEvent.c:1041
> #85 0x08082a91 in captured_command_loop (data=0x0) at ../../src/gdb/main.c:104
> #86 0x080ed05a in catch_errors (func=0x8082a80 <captured_command_loop>,
>     args=0x0, errstring=0x827ec73 "", mask=6) at ../../src/gdb/top.c:607
> #87 0x080832e3 in captured_main (data=0xbffff790) at ../../src/gdb/main.c:749
> #88 0x080ed05a in catch_errors (func=0x8082ad0 <captured_main>,
>     args=0xbffff790, errstring=0x827ec73 "", mask=6) at ../../src/gdb/top.c:607
> #89 0x08083567 in main (argc=3, argv=0xbffff7e4) at ../../src/gdb/main.c:761
> #90 0x4013c9cb in __libc_start_main (main=0x8083540 <main>, argc=3,
>     argv=0xbffff7e4, init=0x8081260 <_init>, fini=0x827eb0c <_fini>,
>     rtld_fini=0x4000ae60 <_dl_fini>, stack_end=0xbffff7dc)
>     at ../sysdeps/generic/libc-start.c:92

-- 
Fernando Nasser
Red Hat - Toronto                       E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9



Index: variables.tcl
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/library/variables.tcl,v
retrieving revision 1.3
diff -c -p -r1.3 variables.tcl
*** variables.tcl       2000/05/03 19:48:48     1.3
--- variables.tcl       2000/12/08 21:50:44
*************** class VariableWin {
*** 39,44 ****
--- 39,48 ----
        add_hook gdb_no_inferior_hook "$this no_inferior"
        add_hook gdb_idle_hook [list $this idle]
        add_hook gdb_clear_file_hook [code $this clear_file]
+         # FIXME: This is to harsh.  We must add to varobj a method
+         # to re-parse the expressions so we can keep the contents
+         # of the window whenever possible.
+       add_hook gdb_file_changed [code $this clear_file]
      }
  
      # ------------------------------------------------------------------

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]