GDB loops forever until it crashes when it runs out of memory

Raphael Zulliger zulliger@indel.ch
Fri Aug 29 04:46:00 GMT 2014


On 08/19/2014 04:12 PM, Pedro Alves wrote:
> On 08/13/2014 06:11 AM, Raphael Zulliger wrote:
>
>> I don't know about the philosophy of GDB, whether it is supposed to
>> handle such situation. However, for me, the following additional code
>> helped to avoid the GDB crash which gave me a chance to inspect the rest
>> of the system with a Eclipse/CDT:
>>
>>         new_val = get_frame_register_value (frame, regnum);
>>         if( (regnum == VALUE_REGNUM(new_val))
>>                 && (frame == frame_find_by_id (VALUE_FRAME_ID (new_val)) )) {
>>             set_value_lazy (val, 0);
>>             mark_value_bytes_unavailable (val,
>>                                 value_embedded_offset (val),
>>                                 TYPE_LENGTH (type));
>>             return 0;
>>         }
>>
>> As I'm unfamiliar with GDB internals, I don't know whether I compared
>> the right properties of and new_val and whether the implementation is
>> "ok" like this - but at least this code helped to make GDB properly
>> abort trying to unwind the stack after it received the same information
>> twice.
> This sounds like the issue addressed by 33f8fe58 (and follow ups).
> What version of GDB are you using?
>
Thanks for looking into this! I'm using GNU gdb (GDB) 
7.6.50.20130604-cvs. Sorry to not have mentioned that in the initial post.

I reply that late because I tried to get access to the hardware on which 
I encountered the endless loop, to verify whether the mentioned commit 
fixes the issue. Unfortunately, I can't get access to that hardware 
anymore. I'm very sorry about that. Nevertheless, the commit you 
mentioned looks promising.



More information about the Gdb mailing list