Problem with "file" command from CVS_HEAD

Steven Johnson sjohnson@sakuraindustries.com
Mon May 16 05:58:00 GMT 2005


I have a problem with insight from CVS_HEAD and the "load" command.

If i start Insight with --nw, and use "file" it does what i expect, and 
loads the file i wish to debug. (No Problem)

If i start insight with the gui enabled, and use "file".  I get a 
segfault, after "insight" has recursively tried to call 
"target_fetch_registers(pc)"  I say recursively, because i started 
"insight" under GDB (native) and the back trace was enourmous (actually 
segfaulted GDB before it could finish),  and had an obvious recursive 
call structure through the code which reads the pc register.

I have various debug options enabled, and immediately after the "file" 
command, insight reports in the debug log:

architecture_changed_event
{ flush_cached_frames () }
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
Operating system is "".
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
target_terminal_ours ()
No symbol table is loaded.  Use the "file" command.
observer_notify_executable_changed() called
{ flush_cached_frames () }
target_xfer_memory (0x32478, xxx, 4, read, xxx) = 4, bytes = 94 21 ff f8
target_xfer_memory (0x3247c, xxx, 4, read, xxx) = 4, bytes = 7c 08 02 a6
target_xfer_memory (0x32480, xxx, 4, read, xxx) = 4, bytes = 90 01 00 0c
target_xfer_memory (0x32484, xxx, 4, read, xxx) = 4, bytes = 4b fd db 5d
target_xfer_memory (0x32488, xxx, 4, read, xxx) = 4, bytes = 3d 20 00 55
target_fetch_registers (pc)target_fetch_registers 
(pc)target_fetch_registers (pc)target_fetch_registers 
(pc)target_fetch_registers (pc)target_fetch_registers 
(pc)target_fetch_registers (pc)target_fetch_registers 
(pc)target_fetch_registers (pc)target_fetch_registers 
(pc)target_fetch_registers (pc)..........many many times.
**segfault**

I believe the segfault occurs, because the program stack is exhausted by 
the recursive call to target_fetch_registers (pc)

The problem is, i havent connected to the target yet, so how can it read 
memory, or fetch registers at all.

This seems to be restricted to insight, so my first thought is, insight 
isnt checking something that GDB does, and so is executing things GDB 
normally doesnt on a "file" load.  I dont mind trying to correct this, 
but I do not have any idea where to start looking.  Some pointers of 
where I should look, or how "file" differs when insight is running, as 
opposed to GDB would be appreciated.

Thanks in advance,
Steven Johnson



More information about the Insight mailing list