info on "value being assigned to is no longer active" error
Siva Velusamy
siva.velusamy@gmail.com
Sat Jan 19 04:12:00 GMT 2008
When writing to a register (msr) when the stack pointer or PC is
corrupt, gdb throws out the following error:
----
(gdb) p/x $rmsr
{ frame_register_unwind (frame=-1,regnum=33(rmsr),...) ->
*optimizedp=0 *lvalp=2 *addrp=0x84 *bufferp=[000000a0] }
{ get_frame_id (fi=0) { frame_func_unwind (fi=-1) -> 0x0 }
-> {!stack,!code,!special} }
$1 = 0xa0
(gdb) set $rmsr=0x0
{ frame_register_unwind (frame=-1,regnum=33(rmsr),...) ->
*optimizedp=0 *lvalp=2 *addrp=0x84 *bufferp=[000000a0] }
{ frame_id_p (l={!stack,!code,!special}) -> 0 }
Value being assigned to is no longer active.
-----
This sounds pretty similar to the issue reported here:
http://sourceware.org/ml/gdb/2005-05/msg00029.html
What I do not understand is why gdb is looking for a proper frame
before updating the register.
If my (admittedly cursory) examination of the code in valops.c is
correct, it appears as if gdb is looking for the frame to make sure
that it updates the value of the register if it has been stored in the
stack. Is that correct?
Thanks,
Siva
--
In the end, everything is a gag.
Charlie Chaplin
More information about the Gdb
mailing list