This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
info on "value being assigned to is no longer active" error
- From: "Siva Velusamy" <siva dot velusamy at gmail dot com>
- To: gdb at sourceware dot org
- Date: Fri, 18 Jan 2008 20:11:34 -0800
- Subject: 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