This is the mail archive of the gdb-prs@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]

[Bug mi/16647] New: SIGSEGV in mi_cmd_trace_frame_collected


https://sourceware.org/bugzilla/show_bug.cgi?id=16647

            Bug ID: 16647
           Summary: SIGSEGV in mi_cmd_trace_frame_collected
           Product: gdb
           Version: 7.7
            Status: NEW
          Severity: normal
          Priority: P2
         Component: mi
          Assignee: unassigned at sourceware dot org
          Reporter: dtaylor at emc dot com

Under the following scenario I get a SIGSEGV in the function
mi_cmd_trace_frame_collected.

. connect to a remote target
. define a tracepoint
. at the tracepoint I collected $args and a global variable.
. tstart
. arrange for the tracepoint to be hit multiple times
. tstop
. tstatus -- verify that there are traceframes
. tfind 0 -- focus on the first fraceframe
. interpretetrr-exec mi -trace-frame-collected

At this point GDB will get a SIGSEGV in mi_cmd_trace_frame_collected.
In GDB 7.7, it's at line 2844, which is the line:

    for (i = 0; VEC_iterate (int, tinfo->tvars, i, tvar); i++)

Investigating, i is 0 and tinfo is NULL.

Looking back in the file, tinfo is assigned at line 2774:

  tinfo = get_traceframe_info ();

target_traceframe_info is called.  It is allowed to return NULL, and appraently
it DOES return NULL.  The function mi_cmd_trace_frame_collected does not check
for NULL, leading to the SIGSEGV.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


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