This is the mail archive of the gdb-patches@sources.redhat.com 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]

Re: patch for info threads problem with target arm-elf (PR 1199).


On Fri, Jul 25, 2003 at 05:26:12PM -0700, Michael Snyder wrote:

Andrea Michelotti wrote:


>-----------------------
>Andrea Michelotti
>HW/SW Co-Design Manager
>IPITEC (ATMEL)



I think it can be approved. Do you have an FSF copyright assignment?


I'd want to ping Andrew about this first before scattering NULL pointer
checks - Andrew, does "there is always a frame" include when the
inferior does not exist yet?

Kind of :-) If the inferior doesn't exist, GDB should never get to find out the answer. See get_current_frame and all those error() checks.


Also, I think a better solution to this actual crash is for info
threads to bail out early if we don't have an inferior.  Probably
target_has_registers ().

Yes, looking at the start of info_threads_command:


> static void
info_threads_command (char *arg, int from_tty)
{
  struct thread_info *tp;
  ptid_t current_ptid;
  struct frame_info *cur_frame;
  int saved_frame_level = frame_relative_level (deprecated_selected_frame);
  int counter;
  char *extra_info;

  /* Avoid coredumps which would happen if we tried to access a NULL
     deprecated_selected_frame.  */
  if (!target_has_stack)
    error ("No stack.");

The references to:


deprecated_selected_frame

should have set off alarm bells!

A quick fix would be to call get_selected_frame() (and delete that error check).

The correct fix involves per-thread frames ...

Andrew



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