This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

info on "value being assigned to is no longer active" error


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


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